我正在爲第三方MFC應用程序編寫Win32插件DLL。該DLL需要顯示一個模態對話框。當我使用DialogBox()
或其他簡單的Win32 API(例如,我嘗試編寫自己的模式循環)執行此操作時,主應用程序的窗口不會重繪所有元素:它重繪標準元素,但不重繪客戶區。無模式對話框顯示得很好。MFC應用程序和非MFC模式對話框
我懷疑這是因爲MFC並不是真的對Win32感模式對話框。它只能有一個消息循環,並且在DialogBox()
中有一個單獨的循環破壞了其精巧的機器。這是解釋這個的a CodeProject article。但是這個CodeProject文章已經9歲了,所以也許事情發生了變化。有人可以對此有所瞭解嗎?該應用程序使用MFC 8(即mfc80.dll
)。
更新。這是一個鏈接到original question;它可能包含一些額外的信息。
更新2。感謝大家;我非常感謝所有的建議,它能幫助我全面瞭解事情的整體狀況。我要探索的第一條路徑是使用本機MFC的「模態」對話框。 (由於我是從Python完成的,我將使用MFC的Python綁定,pywin32
)。這需要一些時間;準備就緒後,我會更新結果。
+1好問題,我會有興趣看到答案! – 2011-02-24 15:56:33
另請參閱http://stackoverflow.com/questions/5058929其中這個問題是後續(或多或少)。 – 0xC0000022L 2011-02-24 20:28:17
可以請您使用Spy ++(附帶Visual Studio)或其他類似的應用程序(我知道一個可以在http://www.catch22.net/software/winspy找到)來了解「控制檯「窗戶不僅僅是一個小孩窗戶?! – 0xC0000022L 2011-02-24 20:35:02