我正在使用基於win32 DialogBox的應用程序。這使用DialogBox()創建對話框,並有一個對話框過程,它執行所有常見的事情。win32 DialogBox應用程序:如何在DialogBox上顯示來自回調的文本?
對話框上有一些靜態文本控件,通常我會通過對話框過程中的SendDlgItemMessage()顯示這些文本。
但是在某一時刻,DialogBox啓動了一個冗長的操作。該操作具有一系列狀態消息的回調。我有顯示在對話框這些消息有些麻煩,原因有二:
回調函數不知道該對話框HWND是什麼,因爲它會從該執行的代碼稱爲冗長的操作。我想我可以定義一個文件範圍HWND變量,並在剛剛開始冗長操作之前從對話框過程中將對話框HWND複製到它中。這樣,回調函數可以訪問對話框HWND。但是這看起來非常糟糕:有沒有更優雅的方式?
當冗長的操作發生時,對話框過程被阻止。這並不重要,因爲它是一個嵌入式系統。但是,如果在對話框過程被阻止的情況下,我發出SendDlgItemMessage(),Windows甚至會在對話框中顯示文本?
編輯我用SendDlgItemMessage()將WM_SETTEXT發送到一個對話框上一個靜態文本控件做了一些調查。即使對話框過程被阻止,文本也會立即顯示。
所有的好東西。我正在使用不透明的指針路線,似乎工作得很好。關於工作者線程的要點;如果這是一個「真正的」應用程序,我肯定會這樣做,而不是嵌入式的應用程序,因爲它不會有鼠標或鍵盤。 – 2010-07-09 15:19:40