MFC資源衝突解決方法

2021-06-19 06:19:05 字數 737 閱讀 7763

afx_manage_state(afxgetstaticmodulestate())

先看乙個例子:

2000

1、應用程式程序本身及其呼叫的每個dll模組都具有乙個全域性唯一的hinstance控制代碼,它們代表了exe或dll模組在程序虛擬空間中的起始位址。(程序本身的模組控制代碼一般為0x400000,而dll模組的預設控制代碼為0x10000000。如果程式同時載入了多個dll,則每個dll模組都會有不同的hinstance。應用程式在載入dll時對其進行了重定位)。

2、共享mfc dll(或mfc擴充套件dll)的規則dll涉及到hinstance控制代碼問題,hinstance控制代碼對於載入資源特別重要。exe和dll都有其自己的資源,而且這些資源的id可能重複,如果應用程式與規則dll共享mfc dll(或mfc擴充套件dll),那麼將總是預設使用exe的資源。

3、因此應用程式需要通過資源模組的切換來找到正確的資源。如果應用程式需要來自於dll的資源,就應將資源模組控制代碼指定為dll的模組控制代碼;如果需要exe檔案中包含的資源,就應將資源模組控制代碼指定為exe的模組控制代碼。

解決辦法:

1、在dll中改進:

方法1。

// in dll

void cdll::showdlg(void)

2、在應用程式中改進:

注:使用狀態切換的情況:當dll匯出函式包含mfc資源、類或者需要建立視窗時。

onTouch衝突解決方法

s1 scrollview findviewbyid r.id.popup sf event scroll 01 父類 s2 scrollview findviewbyid r.id.popup sf event scroll 02 子類 s2.setontouchlistener new onto...

SVN 衝突解決方法

工程師a修改了a.txt的第一行,提交了。工程師b也修改了a.txt的第一行,然後執行svn up,這時svn提示了 以下,你開始扮演工程師b的角色了 svn up 在 a.txt 中發現衝突。選擇 p 推遲,df 顯示全部差異,e 編輯,mc 我的版本,tc 他人的版本,s 顯示全部選項 我一般選...

Hash衝突解決方法

當關鍵字值域遠大於雜湊表的長度,而且事先並不知道關鍵字的具體取值時。衝突就難免會發 生。另外,當關鍵字的實際取值大於雜湊表的長度時,而且表中已裝滿了記錄,如果插入乙個新記錄,不僅發生衝突,而且還會發生溢位。因此,處理衝突和溢位是 雜湊技術中的兩個重要問題。1.開放位址法 開放位址法公式 h h ke...