2012-01-30 28 views
0

我需要建立在C++一個Windows應用程序,它必須證明只是一個TaskDialog(見http://msdn.microsoft.com/en-us/library/windows/desktop/bb760540(v=vs.85).aspx)。 TaskDialog應顯示作爲參數傳遞給命令行的文本。如何創建C++中的Windows應用程序只顯示一個TaskDialog其實

我可以做一個「Win32控制檯應用程序」,並呼籲TaskDialog但後來我看到控制檯的黑色窗口。

我可以製作一個「Windows應用程序」,只需在WinMain內調用TaskDialog,這個解決方案有什麼問題嗎?

還有其他想法嗎?

+1

我假設你正在使用Visual Studio。如果您打算使用窗口和對話框,則不需要創建控制檯應用程序。你可以使用'TaskDialog'或'TaskDialogIndirect',但你也需要在Vista或Windows 7上。 – AJG85 2012-01-30 20:39:11

回答

4

我可以製作一個「Windows應用程序」,只需在WinMain中調用TaskDialog,這個解決方案有什麼問題嗎?

這就是的方式來實現這樣的應用程序。這一切都沒有問題。當然,你不會在你的代碼中明確創建一個窗口,也不會運行消息循環。請致電TaskDialog

主要的一點是,你不想要一個控制檯應用程序,因爲正如你已經發現,在默認情況下顯示控制檯窗口。有兩個主要的子系統,控制檯子系統和GUI子系統。後者有點混亂地命名。您不必強制在GUI子系統應用程序中顯示GUI。無論您是否選擇這樣做,由您決定。真正的選擇歸結爲你是否想要一個控制檯。所以子系統可以更好地命名爲控制檯和非控制檯!

+0

謝謝。是的,當我寫「只是調用TaskDialog」我的意思是我不創建窗口,不運行消息循環。 – 2012-01-30 20:49:21

+0

然後你已經正確地解決了這個問題! – 2012-01-30 20:51:58

+1

請注意,TaskDialog會爲您運行一個消息循環:「TaskDialog函數創建,顯示和**操作**任務對話框。」在這裏可能不會傷害你,但重要的是要明白,有些功能是這樣做的。 (MessageBox也一樣) – MSalters 2012-01-31 00:55:54

1

你必須創建一個空的Windows應用程序。

一個Windows應用程序的入口點是卡列斯的WinMain,看起來像這樣:

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) 
{ 
    //Place your code here 
} 

這意味着您的解決方案是正確的。您只需確保您的應用程序使用Comctl32.dll的版本6。否則TaskDialog將失敗。

+3

微調。 'TaskDialog'工作正常,沒有視覺樣式。它只需要comctl v6。這兩者並不完全相同。例如考慮Windows經典主題。 – 2012-01-30 22:03:28

相關問題