對話方塊在DLL中DoModal 返回 1?

2021-09-18 00:18:55 字數 995 閱讀 7495

情景:主工程呼叫封裝的dll,其中dll裡面有對話方塊,也就是說主工程呼叫dll裡的匯出類的成員函式,成員函式再啟動對話方塊。(直接匯出(afx_ext_class)對話方塊類的話會報錯,具體還沒研究)

domodal()總是彈不出對話方塊,domodal()返回值為-1,開始以為是資源id等一系列的問題。mfc對話方塊domoal返回-1

檢查了好幾遍,又重新建對話方塊類,也還不行。但是主工程的對話方塊可以正常彈出。

後來考慮dll匯出有問題,重新建工程,終於發現工程建錯了,暈!!!

mfc有三種dll:mfc的3種dll

之前選的第一種:mfc regular dll,後來選第三種:mfc extension dll可以正常彈出對話方塊了

regular dll(mfc規則dll)、mfc...extension dll(mfc擴充套件dll 區別

afx_manage_state(afxgetstaticmodulestate())的作用

mfc dll 不能正確呼叫的問題 + afx_manage_state(afxgetstaticmodulestate());

[經驗總結] mfc dll——regular dll and extension dll(

加了afx_manage_state(afxgetstaticmodulestate());會有斷言(有可能加的方式不對)

查了一下說是沒有初始化,

加了:if (!afxwininit(::getmodulehandle(null), null, ::getcommandline(), 0))

還是彈不出對話方塊,沒時間研究了,有空再看。

關於對話方塊DoModal 函式呼叫失敗的原因分析

朱金燦 對話方塊 domodal 函式呼叫失敗一般而言有兩種表現形式 一是對話方塊彈不出來,但是沒有錯誤提示 二是對話方塊彈不出來,同時伴隨記憶體訪問錯誤的提示框出現。第一種表現主要是因為沒有對資源控制代碼進行切換造成的,以在 dll中彈出對話方塊中最為常見。解決辦法是 如果是mfc規則dll,可以...

關於對話方塊DoModal 函式呼叫失敗的原因分析

對話方塊domodal 函式呼叫失敗一般而言有兩種表現形式 一是對話方塊彈不出來,但是沒有錯誤提示 二是對話方塊彈不出來,同時伴隨記憶體訪問錯誤的提示框出現。第一種表現主要是因為沒有對資源控制代碼進行切換造成的,以在dll中彈出對話方塊中最為常見。解決辦法是 如果是mfc規則dll,可以使用所有匯出...

在MFC擴充套件DLL中輸出對話方塊

從mfc擴充套件動態鏈結庫中輸出對話方塊似乎是很容易的.你僅需要將相應類用afx ext class輸出即可。如果你用乙個應用程式和乙個動態鏈結庫建立或許會成功。但是如果你在應用程式和dll中都插入更多的資源,你將會得到嚴重錯誤。原因如下 表示乙個指定資源的正常途徑是用它的id。id是乙個用資源編輯...