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

技術(shù)著執(zhí)著
技術(shù)人士
AFX_MANAGE_STATE(AfxGetStaticModuleState())
 

先看一個例子:

1、創(chuàng)建一個動態(tài)鏈接到MFC DLL的規(guī)則DLL,其內(nèi)部包含一個對話框資源。指定該對話框ID如下:
              #define IDD_DLL_DIALOG 2000

2、創(chuàng)建一個基于對話框的mfc應(yīng)用程序,它包含兩個對話框資源,IDD_UI_DIALOG和IDD_EXE_DIALOG。并將后者的ID指定如下:
              #define IDD_EXE_DIALOG 2000
其中前者是這個應(yīng)用程序的用戶界面,單擊上面的按鈕,將彈出一個對話框。部分代碼如下:
// 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,而是應(yīng)用程序中的對話框IDD_EXE_DIALOG。

解釋:

1、應(yīng)用程序進程本身及其調(diào)用的每個DLL模塊都具有一個全局唯一的HINSTANCE句柄,它們代表了EXE或DLL模塊在進程虛擬空間中的起始地址。(進程本身的模塊句柄一般為0x400000,而DLL模塊的缺省句柄為0x10000000。如果程序同時加載了多個DLL,則每個DLL模塊都會有不同的HINSTANCE。應(yīng)用程序在加載DLL時對其進行了重定位)。
2、共享MFC DLL(或MFC擴展DLL)的規(guī)則DLL涉及到HINSTANCE句柄問題,HINSTANCE句柄對于加載資源特別重要。EXE和DLL都有其自己的資源,而且這些資源的ID可能重復(fù),如果應(yīng)用程序與規(guī)則DLL共享MFC DLL(或MFC擴展DLL),那么將總是默認使用EXE的資源
3、因此應(yīng)用程序需要通過資源模塊的切換來找到正確的資源。如果應(yīng)用程序需要來自于DLL的資源,就應(yīng)將資源模塊句柄指定為DLL的模塊句柄;如果需要EXE文件中包含的資源,就應(yīng)將資源模塊句柄指定為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());一定是作為接口函數(shù)的第一條語句。
       其功能是在棧上(這意味著其作用域是局部的)創(chuàng)建一個AFX_MODULE_STATE類的實例,并將其指   針pModuleState返回。
       AFX_MODULE_STATE類利用其構(gòu)造函數(shù)和析構(gòu)函數(shù)進行存儲模塊狀態(tài)現(xiàn)場及恢復(fù)現(xiàn)場的工作。
       該宏用于將pModuleState設(shè)置為當前的有效模塊狀態(tài)。當離開該宏的作用域時(也就離開了pModuleState所指棧上對象的作用域),先前的模塊狀態(tài)將由類AFX_MODULE_STATE的析構(gòu)函數(shù)恢復(fù)。(即自動恢復(fù))

方法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:設(shè)置程序目前要使用的資源模塊句柄。
       同方法1比較,方法2能夠靈活地設(shè)置程序的資源模塊句柄,而方法1則只能在DLL接口函數(shù)退出的時候才會恢復(fù)模塊句柄。

2、在應(yīng)用程序中改進:

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

注:使用狀態(tài)切換的情況:當DLL導出函數(shù)包含MFC資源、類或者需要創(chuàng)建窗口時。

track: http://tech.163.com/06/0316/10/2CB1FGNG0009159F_4.html
轉(zhuǎn)自

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

posted on 2013-03-22 14:58 zhangmo 閱讀(2739) 評論(0)  編輯 收藏 引用
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久亚洲精品一区| 久久久久国产一区二区三区| 欧美四级在线观看| 欧美日韩精品一区| 欧美日韩亚洲高清一区二区| 欧美日韩一本到| 欧美三级欧美一级| 国产精品毛片大码女人| 国产乱子伦一区二区三区国色天香| 国产精品久久激情| 国产午夜精品美女视频明星a级| 国产一区欧美| 亚洲精品永久免费| 香蕉久久夜色| 久久婷婷影院| 亚洲国产婷婷综合在线精品| 亚洲精品影视| 欧美一区二区日韩| 欧美国产综合视频| 国产美女扒开尿口久久久| 亚洲国产精品免费| 亚洲欧美精品suv| 久久综合久久美利坚合众国| 日韩午夜在线视频| 久久偷窥视频| 国产精品国产自产拍高清av| 精品va天堂亚洲国产| 在线视频精品一区| 玖玖精品视频| 亚洲综合色视频| 麻豆精品一区二区av白丝在线| 欧美性猛交xxxx免费看久久久| 狠狠综合久久| 亚洲欧洲av一区二区| 亚洲国产婷婷综合在线精品| 欧美一区二区播放| 欧美性大战久久久久| 亚洲精品久久久久久久久| 久久激情五月激情| 一本色道久久加勒比精品| 免费欧美在线视频| 国产欧美日韩亚州综合| 一区二区三区www| 亚洲国产精品va在线观看黑人| 欧美在线视屏| 国产欧美一区二区在线观看| 亚洲一区二区三区影院| 亚洲国产欧美久久| 老妇喷水一区二区三区| 一区二区在线观看视频在线观看 | 欧美精品一二三| 国模大胆一区二区三区| 欧美在线视频在线播放完整版免费观看| 亚洲黄色av一区| 老司机精品久久| 伊人精品在线| 免费中文字幕日韩欧美| 性做久久久久久久久| 国产精品毛片a∨一区二区三区| 一区二区三区四区国产| 亚洲激情偷拍| 欧美激情综合五月色丁香| 亚洲国产精品美女| 亚洲高清三级视频| 欧美国产日韩一区| 99精品欧美一区二区三区| 亚洲娇小video精品| 欧美日韩国产小视频在线观看| 亚洲精品一线二线三线无人区| 欧美激情一区二区在线| 欧美—级a级欧美特级ar全黄| 亚洲人体影院| 亚洲精品久久久一区二区三区| 欧美激情一区二区三区全黄| 日韩一区二区免费高清| 9人人澡人人爽人人精品| 国产精品国内视频| 久久精品一区| 久久裸体视频| 亚洲人成人一区二区在线观看 | 一二三四社区欧美黄| 亚洲美女视频在线观看| 国产精品99一区| 久久久精品性| 欧美激情欧美激情在线五月| 亚洲一区美女视频在线观看免费| 亚洲女人天堂av| 国产亚洲欧美激情| 欧美激情第六页| 国产精品成人一区二区网站软件 | 亚洲国产一区二区在线| 艳妇臀荡乳欲伦亚洲一区| 国产日韩亚洲欧美| 麻豆国产精品一区二区三区| 欧美精品在线观看播放| 午夜在线视频观看日韩17c| 欧美在线视频一区二区三区| 亚洲人成啪啪网站| 午夜精品久久久久影视| 最新中文字幕亚洲| 亚洲在线电影| 亚洲日本在线观看| 羞羞漫画18久久大片| 99视频精品在线| 久久精品国产999大香线蕉| 在线视频亚洲欧美| 久久激情久久| 午夜精品久久久久久久蜜桃app| 久久精品亚洲精品| 亚洲综合欧美日韩| 欧美xxx成人| 老司机午夜精品视频| 欧美色视频一区| 亚洲国产小视频| 136国产福利精品导航网址应用| 亚洲一区二区三区四区五区黄| 亚洲国产精品热久久| 翔田千里一区二区| 亚洲综合色噜噜狠狠| 欧美激情视频一区二区三区免费| 久久色中文字幕| 国产欧美日本一区二区三区| 一区二区国产精品| 日韩视频一区二区| 六月婷婷一区| 欧美成人一品| 狠狠色狠狠色综合| 亚洲欧美在线一区二区| 亚洲欧美成人一区二区在线电影 | 欧美视频四区| 亚洲国产美女精品久久久久∴| 好吊成人免视频| 午夜精品国产更新| 亚洲女同在线| 国产精品视频一二| 亚洲男女毛片无遮挡| 午夜精品福利在线观看| 国产精品国产亚洲精品看不卡15| 99国产精品| 在线亚洲精品| 国产精品久久久久国产精品日日| 夜夜爽www精品| 亚洲欧美影音先锋| 国产精品揄拍500视频| 亚洲欧美另类在线| 久久九九免费视频| 黄色在线一区| 欧美a级大片| 亚洲精品永久免费| 欧美成人国产一区二区| 欧美黄色一级视频| 亚洲片在线观看| 欧美精品在线观看播放| 99在线精品视频| 午夜激情综合网| 国产在线观看91精品一区| 久久精品国产欧美亚洲人人爽| 久久人人爽爽爽人久久久| 亚洲国产老妈| 欧美日韩性视频在线| 亚洲一区二区高清| 久久影院亚洲| 亚洲免费激情| 国产精品一区二区你懂的| 久久久久久免费| 亚洲精品视频免费| 性欧美大战久久久久久久久| 国产一区亚洲| 欧美国产日产韩国视频| 亚洲视频免费看| 久久久久免费视频| 99re热精品| 国产麻豆视频精品| 欧美sm重口味系列视频在线观看| 日韩视频精品在线| 久久这里只有| 亚洲小说春色综合另类电影| 国产综合婷婷| 欧美日韩另类国产亚洲欧美一级| 午夜一区二区三区在线观看| 亚洲精品国产精品国自产观看浪潮 | 国产精品九九久久久久久久| 欧美自拍丝袜亚洲| 亚洲久久视频| 美国十次成人| 久久精品成人一区二区三区| 亚洲伦理久久| 伊伊综合在线| 国产日产欧产精品推荐色| 欧美人成在线| 蜜臀久久99精品久久久画质超高清| 亚洲免费在线观看视频| 亚洲麻豆一区| 亚洲高清在线视频| 免费在线亚洲| 久久精品国产一区二区电影| 亚洲欧美日韩国产一区| 一区二区三区三区在线| 最新亚洲视频| 亚洲国内精品|