解決擴充套件MFC DLL與主程式資源衝突問題

2021-04-13 06:38:15 字數 988 閱讀 1258

介紹這方面的文章不少,這裡僅僅簡明扼要提供**和一些說明。

在要到處的mfc類加上afx_ext_class,比如

class

afx_ext_class cmivptooldlg : public cdialog

即可形成到處類,用dumpbin檢視發現幾乎匯出了所有的mfc函式,暫時不管他。

在客戶端,也就是需要使用該mfc類的程式,載入方式,在工程中加入.lib庫以及庫目錄設定。

對對話方塊而言,呼叫方式有兩種:模態呼叫和動態建立。

兩種方式都會遇到資源id號衝突的問題,解決辦法介紹如下:

1,模態呼叫

客戶端使用domodal函式啟動模態對話方塊,所以在匯出類中過載該函式並修改如下:

int_ptr cmivptooldlg::domodal()

其中mivp*******.dll

為匯出類生成的動態鏈結庫名字

這就解決了資源衝突問題。

2,動態建立

製作乙個匯出類的新的建構函式:

cmivptooldlg::cmivptooldlg(cwnd* pparent,uint dtype)// standard constructor

在客戶端動態建立方式非常簡單,注意析構就可以了:

if( !m_*******1 )

m_*******1->showwindow(sw_show);

3,通訊

在擴充套件類中已經掌握了主類的指標,不成問題;同時,主類負責建立擴充套件類物件,擁有指標而且負責銷毀物件。

4,宗旨

**一樣、思想更是一樣。目的就是對面板進行封裝,協作開發方便。比如,我要求某個哥們給我做個什麼樣的介面,提供的功能很單一,與其他模組的互動不多,那麼就讓他去起個

exe工程,進行單獨的編寫和測試,然後我將他的工程通過這種方式做成

dll庫的方式供我主程式呼叫。 5

,討論這種方式的利弊還有待實踐,有哥們說擴充套件

mfc dll

僅適合做控制項的擴充套件?

記 QSS與Qt主程式做到介面分離

qt中能夠實現邏輯程式與介面分離,主要是將按鈕貼圖,顏色繪製等放到qss檔案中,然後由相應的視窗載入就可以。有幾點注意 1.不同的視窗可以載入不同的qss檔案。例如程式中有多個視窗,那麼你可以為每個視窗寫乙個qss檔案,這樣每個視窗就有自己獨特的風格了。而且更換 時,只要將載入的qss檔案更換一下就...

動態庫與主程式共享全域性變數

曾經在一次寫程式的時候,全域性使用乙個日誌物件,所有的日誌資訊都由此日誌物件寫入檔案。但是發現在動態鏈結庫裡,無法訪問到該全域性物件,後經查詢資料。發現,動態鏈結庫是否能訪問主程式的全域性變數,主程式是否能訪問動態鏈結庫裡定義的全域性變數都是可以通過鏈結指令改變此行為。主程式訪問動態鏈結庫裡的全域性...

DLL中如何應用函式指標與主程式互動

雖然在dll中定義指向主程式的函式指標,看似程式邏輯有些混亂,但工程實際應用中有時卻得這麼幹,因此簡單總結一下,函式指標在開發中的應用。第一步 建立一般的動態庫工程win32s1 第二步 在動態庫.h檔案中,自定義函式指標型別,宣告匯出函式 注 匯出函式應用到外部主程式的相關計算與結果 typede...