關於從DLL中導出對話框,CDialog::Create返回FALSE的一種情況

最近做一個項目,由於界面庫衝突,我儘可能的將兩類控件分開,同時試圖用Tab來加載一個對話框的方式,來引入另一個庫包含的控件,以此解決控件衝突的問題。

 

但是讓我奇怪的是,不管我怎麼修改DLL中對話框的設置,CDialog::Create一直返回錯誤,其中包含的m_hWnd爲空,使得其不能被設置爲子窗口。

 

無奈之下我又寫了個小的對話框基礎的MFC程序,裏面添加了一個按鈕,該按鈕按下後調用DLL中的對話框生成函數,沒想到次次成功,生成的對話框中的m_hWnd非空。

 

百思不得其解中,我在原工程下也加了這麼個按鈕,沒想到也成功了。

我突然想到:之前調用DLL中的函數,都是在OnInitialUpdate裏面,是不是這個原因造成生成對話框失敗?把添加Tab的代碼移出OnInitialUpdate再運行,果然問題解決,Tab中出現了我需要的頁面!

 

由此可見:從DLL中導出對話框的操作,不要放在對話框的初始化過程中進行,否則要導出的對話框的Create函數會返回錯誤!

具體原因不明!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章