青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

技術著執著
技術人士
AFX_MANAGE_STATE(AfxGetStaticModuleState())
 

先看一個例子:

1、創建一個動態鏈接到MFC DLL的規則DLL,其內部包含一個對話框資源。指定該對話框ID如下:
              #define IDD_DLL_DIALOG 2000

2、創建一個基于對話框的mfc應用程序,它包含兩個對話框資源,IDD_UI_DIALOG和IDD_EXE_DIALOG。并將后者的ID指定如下:
              #define IDD_EXE_DIALOG 2000
其中前者是這個應用程序的用戶界面,單擊上面的按鈕,將彈出一個對話框。部分代碼如下:
// in DLL
void CDLL::ShowDlg(void)
{
       CDialog dlg(IDD_DLL_DIALOG); //打開ID為2000的對話框
       dlg.DoModal();
}
// in EXE
void CEXE::OnButtonClick()
{
       ShowDlg();
}

3、單擊按鈕,彈出的不是期望的DLL中的對話框IDD_DLL_DIALOG,而是應用程序中的對話框IDD_EXE_DIALOG。

解釋:

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)
{
       AFX_MANAGE_STATE(AfxGetStaticModuleState());
       CDialog dlg(IDD_DLL_DIALOG); //打開ID為2000的對話框
       dlg.DoModal();
}

注:AFX_MANAGE_STATE(AfxGetStaticModuleState());一定是作為接口函數的第一條語句。
       其功能是在棧上(這意味著其作用域是局部的)創建一個AFX_MODULE_STATE類的實例,并將其指   針pModuleState返回。
       AFX_MODULE_STATE類利用其構造函數和析構函數進行存儲模塊狀態現場及恢復現場的工作。
       該宏用于將pModuleState設置為當前的有效模塊狀態。當離開該宏的作用域時(也就離開了pModuleState所指棧上對象的作用域),先前的模塊狀態將由類AFX_MODULE_STATE的析構函數恢復。(即自動恢復)

方法2。

// in DLL
void CDLL::ShowDlg(void)
{
       HINSTANCE save_hInstance = AfxGetResourceHandle();
       AfxSetResourceHandle(theApp.m_hInstance);
       CDialog dlg(IDD_DLL_DIALOG); //打開ID為2000的對話框
       dlg.DoModal();
       AfxSetResourceHandle(save_hInstance);    
}

注:AfxGetResourceHandle:獲取當前資源模塊句柄;AfxSetResourceHandle:設置程序目前要使用的資源模塊句柄。
       同方法1比較,方法2能夠靈活地設置程序的資源模塊句柄,而方法1則只能在DLL接口函數退出的時候才會恢復模塊句柄。

2、在應用程序中改進:

// in EXE
void CEXE::OnButtonClick()
{
       HINSTANCE exe_hInstance = GetModuleHandle(NULL);
      HINSTANCE dll_hInstance = GetModuleHandle("SharedDll.dll");
      AfxSetResourceHandle(dll_hInstance); //切換狀態
       ShowDlg();
      AfxSetResourceHandle(exe_hInstance); //恢復狀態
}

注:使用狀態切換的情況:當DLL導出函數包含MFC資源、類或者需要創建窗口時。

track: http://tech.163.com/06/0316/10/2CB1FGNG0009159F_4.html
轉自

http://blog.sina.com.cn/s/blog_62bb83b10100jbdj.html

posted on 2013-03-22 14:58 zhangmo 閱讀(2742) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美女999久久久精品视频| 在线播放日韩专区| 欧美日韩小视频| 亚洲理论电影网| 欧美.日韩.国产.一区.二区| 亚洲一区三区电影在线观看| 亚洲人午夜精品免费| 黑人操亚洲美女惩罚| 欧美视频官网| 欧美国产免费| 久久精品国产第一区二区三区| 国内精品久久久久久久影视麻豆| 欧美性生交xxxxx久久久| 欧美日韩第一区日日骚| 欧美麻豆久久久久久中文| 欧美精品v国产精品v日韩精品| 巨乳诱惑日韩免费av| 久久亚洲一区| 欧美成人亚洲成人| 欧美精品一线| 国产精品电影网站| 国产精品中文字幕欧美| 国产日韩精品一区二区| 国产一区亚洲一区| 在线免费高清一区二区三区| 在线成人www免费观看视频| 亚洲国产美女精品久久久久∴| 一区二区日韩| 亚洲精品中文字幕有码专区| 亚洲精一区二区三区| 一本色道久久加勒比精品| 一区二区三区**美女毛片| 亚洲曰本av电影| 久久精品日产第一区二区| 美乳少妇欧美精品| 国产精品av免费在线观看 | 91久久线看在观草草青青| 亚洲精品乱码久久久久久按摩观| 亚洲免费av电影| 亚洲美女少妇无套啪啪呻吟| 亚洲私人影院| 久久精品国产99国产精品| 欧美成人一区在线| 夜夜嗨av一区二区三区四季av| 午夜精品一区二区三区四区| 久久亚洲影院| 国产精品激情电影| 亚洲欧洲中文日韩久久av乱码| 欧美一级欧美一级在线播放| 欧美激情视频免费观看| 亚洲欧美另类在线观看| 欧美二区在线| 狠狠色狠狠色综合日日91app| 99av国产精品欲麻豆| 久久久久99精品国产片| 亚洲人成网站在线观看播放| 午夜精品久久久久99热蜜桃导演| 你懂的视频一区二区| 国产一二精品视频| 亚洲视频视频在线| 你懂的成人av| 久久国产精品免费一区| 国产精品国产三级国产aⅴ入口| 亚洲高清不卡在线观看| 久久成人av少妇免费| 亚洲精品一线二线三线无人区| 久久久精品午夜少妇| 国产美女一区| 亚洲影视在线| 亚洲精品一区二区三区av| 久久综合狠狠综合久久综合88 | 国产日韩欧美一区| 亚洲色诱最新| 91久久精品美女| 久久综合久久美利坚合众国| 国产精品一区二区在线观看| 亚洲香蕉视频| 日韩一级精品视频在线观看| 欧美激情第4页| 亚洲国产精品第一区二区三区| 久久夜色精品国产噜噜av| 欧美日韩国产黄| 国产精品视频男人的天堂| 亚洲午夜精品一区二区三区他趣| 亚洲国产精品一区| 欧美激情导航| 一区二区三区免费观看| 一本色道88久久加勒比精品| 欧美日韩1区2区3区| 亚洲视频久久| 亚洲欧美视频一区二区三区| 国产日韩欧美中文在线播放| 久久精品二区三区| 久久精品国产一区二区电影| 好看不卡的中文字幕| 欧美激情精品久久久久久黑人 | 亚洲午夜三级在线| 亚洲国产精品日韩| 欧美视频在线观看免费| 中文在线一区| 亚洲字幕在线观看| 一区二区三区在线免费播放| 欧美国产日韩免费| 欧美日韩一区二区在线观看视频 | 欧美亚洲在线观看| 久久成人精品一区二区三区| 伊人久久男人天堂| 亚洲国产人成综合网站| 欧美偷拍另类| 久久av一区二区三区漫画| 久久一区二区三区国产精品| 亚洲黄网站黄| 亚洲深夜福利在线| 在线看无码的免费网站| 日韩一区二区精品视频| 国产精品久久一区二区三区| 久久中文字幕一区| 欧美日韩一区二区高清| 免播放器亚洲一区| 欧美午夜视频一区二区| 免费日韩成人| 国产精品影视天天线| 亚洲国产人成综合网站| 国产精品入口夜色视频大尺度| 久久综合色88| 欧美天天影院| 欧美电影美腿模特1979在线看| 国产精品成人免费视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美日韩视频不卡| 免费国产自线拍一欧美视频| 国产精品任我爽爆在线播放| 亚洲第一毛片| 狠狠色噜噜狠狠色综合久| 中日韩男男gay无套| 亚洲精品女av网站| 久久久精彩视频| 欧美亚洲视频一区二区| 欧美日韩 国产精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美成人69av| aⅴ色国产欧美| 嫩草影视亚洲| 蜜臀a∨国产成人精品| 亚洲免费成人av| 欧美中文字幕视频| 午夜精品福利电影| 欧美日韩一卡| 老司机免费视频久久| 欧美国产日韩一区二区在线观看| 亚洲在线观看免费视频| 欧美日韩国产系列| 久久久亚洲精品一区二区三区| 麻豆精品在线播放| 欧美一级黄色录像| 欧美区一区二区三区| 久久久999精品视频| 欧美日韩1区2区3区| 久久综合五月| 国产精品嫩草99av在线| 亚洲第一视频| 国产午夜精品美女毛片视频| 99re热这里只有精品视频| 国产精品日日做人人爱| 亚洲中午字幕| 欧美一二区视频| 欧美片第1页综合| 欧美高清视频| 在线观看国产成人av片| 欧美在线视频二区| 午夜精品久久久久久久99樱桃 | 国产日韩欧美91| 亚洲影院一区| 欧美在线观看视频一区二区三区| 国产精品网站在线观看| 久久超碰97中文字幕| 麻豆精品网站| 亚洲欧洲午夜| 欧美色精品在线视频| 亚洲影视在线播放| 美女爽到呻吟久久久久| 亚洲美女av在线播放| 欧美日韩亚洲不卡| 亚洲欧美在线另类| 欧美.www| 亚洲女人天堂av| 黄色精品在线看| 欧美精品一区二区蜜臀亚洲| 一区二区三区免费网站| 久久精品伊人| 亚洲精品免费电影| 国产精品男女猛烈高潮激情| 久久精品三级| 99热精品在线| 麻豆精品视频| 亚洲在线观看视频| 亚洲高清在线观看| 国产精品区一区二区三| 欧美成人视屏| 午夜免费日韩视频|