2014-03-04 43 views
2

我有一個非常簡單的應用程序,它有幾個按鈕和文本字段。我希望能夠爲它添加一個圖標,因爲當它位於其他窗口的後面時它不能運行。這樣做的最簡單方法是什麼?如何在簡單的win32對話框中將圖標添加到任務欄?

我試圖創建一個隱藏的工作窗口,但你可以看到其他窗口閃爍,當你點擊任務欄圖標,我似乎無法使它專注於對話框。

+0

默認情況下,頂級無主窗口將具有關聯的任務欄按鈕。你用你的應用程序做了什麼來阻止這種情況發生。 –

+0

我所擁有的是一個基本的WinMain,它調用RegisterClassEx/CreateWindowEx。一旦創建完成,我將顯示使用VS資源編輯器創建的對話框。我可以讓它顯示圖標,但單擊該圖標不會使對話框最小化/最大化,而是在使用CreateWindowEx創建的窗口上執行此操作 – allanmb

+0

您希望執行的操作是使用您使用CreateWindowEx創建的窗口'作爲你的應用程序的主窗口。爲什麼你使用對話框作爲主窗口?這似乎是問題所在。 –

回答

4

我認爲最根本的問題是你有一個隱藏的頂層窗口,擁有你的對話框。該對話框充當主窗口,但任務欄顯示與隱藏窗口關聯的按鈕。

所以我想你需要做的是完全刪除隱藏的窗口。這意味着擺脫RegisterClassCreateWindow調用。

我假設你顯示對話框無模式。在這種情況下,您使用CreateDialog和ShowWindow來顯示它。請特別注意本文檔的這一部分:

CreateDialog返回後,應用程序使用ShowWindow函數顯示對話框(如果它尚未顯示)。該應用程序通過使用DestroyWindow函數銷燬該對話框。要支持鍵盤導航和其他對話框功能,對話框的消息循環必須調用IsDialogMessage函數。

當然,如果您以模態方式顯示對話框,您可以繼續這樣做。在這種情況下,您的WinMain功能非常簡單。這只是致電DialogBox。由於模態對話框的消息循環處理消息,因此不需要消息循環。

+0

非常感謝,這是一種享受!出於某種原因,我在我的腦海中需要使用CreateWindowEx來獲取我的消息循環。我只是將代碼移除到RegsiterClassEx/CreateWindowEx,並將IsDialogMessage添加到消息循環中,現在它全部正常工作。我的PlayList創建者現在完成了一個單獨的線程,以便GUI始終保持響應:) – allanmb

+0

我很高興這有幫助 –

+1

@allanmb:如果此答案解決了您的問題,請考慮接受並向上投票,以便其他人查看此帖可以找到它更有幫助**更容易**。最好的祝福。 – AlwaysLearningNewStuff

相關問題