簡體   English   中英

如何在CWinThread派生類中正確創建一個CDialog框

[英]How to properly create a CDialog box in a CWinThread derived class

我有一個可以在Visual Studio 2008下正常運行的MFC常規DLL項目,但是當該項目升級到VS 2010時,出現了一個新問題,其中在appcore.cpp中以下聲明將失敗:

CWinApp::CWinApp(LPCTSTR lpszAppName)
{
    [...]
    ASSERT(AfxGetThread() == NULL);

創建多個CDialog派生類的實例時,斷言將失敗。 根據我在網絡上所做的研究,似乎MFC的行為發生了變化,這將導致此故障。

據我所知,解決該問題的方法是在新的CWinThread中創建每個CDialog派生類,但是我遇到了同樣的問題,因此,我確定我的實現中缺少某些內容,但是,我沒有不知道缺少了什么。

我曾經嘗試在CWinThread類中創建CDialog的示例來自http://www.experts-exchange.com/Programming/System/Windows__Programming/A_1886-Create-a-Dialog-in-its-Own-Thread。 html ,但是我的代碼仍然無法通過上面列出的ASSERT失敗。

所以我的問題是,有沒有人有一個很好的例子,說明如何使用CWinThread在MFC常規DLL中正確創建多個CDialog派生類?

哦,如果我對創建多個線程來解決上面列出的ASSERT的理解是錯誤的,請告訴我原因。

不幸的是,問題的答案實際上涉及所使用的MFC版本。 DLL使用的是mfc10,而主機應用程序是針對mfc9鏈接的; 一旦將DLL更改為使用mfc9,上面列出的問題就消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM