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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

resource dll

resource dll
許多細心的人也許已經注意到,在VC的集成編譯環境 (IDE)中有一個功能,你可以選中一個資源,在上面點擊鼠標右鍵,選擇Insert Copy,選擇一個不同的Condition。然而我用VC十多年,一直沒有用過這個特性,也從來不知道他是干嗎的。前兩天有個網友問我這個東西是干嗎的,才下決心去研究一下。仔細研究之后,才發現他是用于資源DLL的。
?
對于提供國際化解決方案的程序設計者而言,根據用戶地區設置來顯示對應的語言界面,將是非常有意義的。本文的目的是提供一個step by step的建議,讓沒有做過資源dll的人可以從中受益。由于我也沒做過資源dll,研究這個也就半天時間,因此如果有什么錯誤,也很正常。請發現錯誤的朋友直接發郵件給我。對于你的幫助,我將非常感謝。
?

主工程的要求

對于一個需要使用資源dll實現國際化的工程,我們必須保證每個展現給用戶的界面元素都必須從資源里獲得。這主要指得是名目繁多的字符串。程序設計者喜歡用AfxMessageBox顯示信息。在單語言情況下,這當然沒有問題。但是如果是多語言環境,這樣做就很難控制這個顯示信息和當前的區域設置匹配。

?

另外,主工程的設計應該在創建資源dll之前完成。這樣做的原因是,資源dll設計很簡單,花不了多少時間。而如果資源的修改,如果沒有正確反映到代碼上,有時候程序會莫名其妙的崩潰了,而你需要花很長的時間來找到原因。我自己的一個例子是:我在icon中插入了一個65535色的圖片,程序一直起不來,后來找了很久才找到原因。如果我們按照普通方式設計主工程,并經過測試證明他工作正常,此時再做資源dll,就會避免在兩個工程之間調試并找原因。

?

實際上對于增量開發情況,這種資源dll和主工程并存的情況可能難以避免,這時就需要增刪資源特別小心,避免導致錯誤。

?

為了簡化起見,我創建一個缺省的對話框工程來做測試,步驟如下:

  1. 啟動Microsoft Visual Studio 6.0
  2. 點擊File, New
  3. 選擇Microsoft AppWizard(exe)工程,輸入工程名test,點擊OK
  4. 選擇Dialog Based,并在What language would you like your resources in?下選擇中文(此時選擇自己最喜歡的語言即可,我不熟悉英文,就選擇中文了)
  5. 點擊Finish創建工程

?創建資源dll工程

我們可以按照下述步驟創建一個資源DLL:
?
  1. 創建一個普通的WIN32 Dynamic-Link Library(這里取名testdll)
  2. 把主工程中的所有資源相關的文件(rc,rc2,ico等)加入這個dll工程
  3. 點擊菜單Build, Configurations,此時,我們應該有Release和Debug兩個配置
  4. 點擊Add按鈕,以Debug為模板創建DebugEN和DebugCN
  5. 重復上述步驟,以Release為模板,創建ReleaseEN和ReleaseCN
  6. 刪除原來的Debug和Release配置,然后點擊Close退出配置對話框
  7. 按組合鍵ALT+F7彈出Project Settings對話框
  8. 選擇Resources頁
  9. 左側選擇All Configurations
  10. 在Preprocessor Definitions中添加如下宏AFX_RESOURCE_DLL
  11. 左側選擇Multiple Configurations,選中DebugEN和ReleaseEN
  12. 重復第10步,輸入AFX_TARG_ENU宏(這是為美國英語而定義的宏English U.S)
  13. 重復11,12步,為DebugCN和ReleaseCN添加AFX_TARG_CHS宏(這是為簡體中文的宏Chinese Simplified)
  14. 選擇Link頁,為每個配置指定輸出文件名(我這里分別為testdll_end.dll, testdll_enr.dll, testdll_cnd.dll,testdll_cnr.dll,分別表示英文debug,英文release和中文相關文件)
  15. 關閉Project Settings對話框
  16. 選中Resource View
  17. 在每個資源ID上右擊,選擇Insert Copy,改變Language為English(U.S)
  18. 如果為同一種語言你還希望提供根據某個自定義的宏而選擇不同的界面(如UI模式和Service模式),在Condition中輸入你用以區分的宏名,如SERVICE_DLL。
  19. 打開每個新創建的資源,根據自己的需要修改資源(注意:這里只建議修改文字、字體,必須嚴格保證不刪除任何資源)
  20. 保存修改
  21. 編譯資源DLL

修改主工程

由于我們打算用資源dll來提供資源信息,我們必須對主工程做如下修改:
  1. 打開工程
  2. 選擇File View,刪除rc,rc2,ico等和資源密切相關的文件。resource.h請不要刪除
  3. 在CWinApp中添加一個私有的HMODULE類型的變量m_hResource
  4. 在InitInstance函數開頭添加如下代碼:
?LANGID id = ::GetUserDefaultLangID();
?switch(id)
?{
?case 0x804://中文
#ifdef _DEBUG
?? m_hResource = LoadLibrary(_T("D:\\projects\\testdll\\DebugCN\\testdllcnd.dll"));
#else
?? m_hResource = LoadLibrary(_T("D:\\projects\\testdll\\ReleaseCN\\testdllcnr.dll"));
#endif
?? break;
default:
#ifdef _DEBUG
?? m_hResource = LoadLibrary(_T("D:\\projects\\testdll\\DebugEN\\testdllend.dll"));
#else
??m_hResource = LoadLibrary(_T("D:\\projects\\testdll\\ReleaseCN\\testdllenr.dll"));
#endif
?}
?if(m_hResource == NULL)
?{
?? return FALSE;
?}else{
?? AfxSetResourceHandle((HINSTANCE)m_hResource);
?}
?此后再做一點簡單的調試,應該就可以了。具體調試,就已經超出我這篇文章所能討論的范圍了。

http://ronaldyan.spaces.msn.com/blog/cns!FA58BC446FBB14B9!107.entry

posted on 2006-07-03 22:39 楊粼波 閱讀(427) 評論(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>
            亚洲午夜精品一区二区| 久久综合国产精品| 亚洲国产精品毛片| 欧美日韩直播| 国内精品久久久久久久97牛牛| 黄色成人免费观看| 欧美一区日韩一区| 最新日韩精品| 欧美www视频| 国内精品久久久久伊人av| 欧美电影免费网站| 久久精品国产999大香线蕉| 国产精品久久久久aaaa樱花| 91久久久久久久久久久久久| 欧美va亚洲va国产综合| 欧美一区二区三区视频免费| 国产精品视频大全| 性欧美xxxx大乳国产app| 亚洲淫性视频| 国产欧美在线视频| 久久这里只精品最新地址| 久久大逼视频| 欧美在线国产| 午夜精品久久久久久久99黑人| 国产午夜亚洲精品羞羞网站| 久久综合色婷婷| 欧美激情一区二区三区成人| 亚洲一区二区久久| 欧美小视频在线| 久久久www免费人成黑人精品 | 亚洲视频导航| 国产精品视频免费观看| 一区二区三区视频在线| 韩日精品中文字幕| 久久综合九色综合久99| 欧美激情第1页| 亚洲电影下载| 国产精品成人午夜| 亚洲欧美www| 一区二区三区四区精品| 亚洲一区二区三区精品动漫| 亚洲黄网站在线观看| 久久琪琪电影院| 精品成人a区在线观看| 性做久久久久久久久| 女女同性精品视频| 久久性天堂网| 亚洲国产天堂久久综合网| 欧美顶级艳妇交换群宴| 亚洲国产精品一区制服丝袜| 亚洲经典视频在线观看| 亚洲午夜视频在线观看| 国产欧美日韩综合一区在线观看| 亚洲深夜av| 亚洲国产精品成人综合| 亚洲一区二区三区免费观看 | 久久久久这里只有精品| 91久久久久久久久| 国产精品每日更新| 一区二区三区欧美视频| 亚洲国产午夜| 久久精品亚洲精品| 欧美三区免费完整视频在线观看| 久久精品免费| 美女免费视频一区| 久久精品视频在线看| 久久精品女人| 欧美wwwwww| 亚洲国产精品一区二区尤物区| 欧美成人网在线| 亚洲国产精品一区二区www| 国产精品嫩草影院av蜜臀| 国产女主播一区二区| 国产日本欧洲亚洲| 亚洲电影下载| 国产精品第13页| 国产日韩欧美一区在线| 亚洲激情一区二区三区| 亚洲一区久久久| 亚洲精品一区在线观看| 国产精品国产精品国产专区不蜜| 国产精品久久激情| 亚洲国产精品成人久久综合一区| 一本色道久久综合狠狠躁篇怎么玩| 国产精品一区二区视频| 欧美日韩一区二区高清| 欧美成人免费在线视频| 国产精品美女久久久浪潮软件| 亚洲电影在线播放| 欧美影视一区| 99热在这里有精品免费| 亚洲精品免费在线| 日韩视频在线永久播放| 欧美一区二区日韩一区二区| 欧美成人嫩草网站| 欧美sm极限捆绑bd| 国产精品户外野外| 99精品国产99久久久久久福利| 国内精品视频在线播放| 美女日韩欧美| 中文高清一区| 精品成人在线观看| 亚洲激情中文1区| 国产精品久久久99| 欧美成人高清视频| 欧美精品xxxxbbbb| 亚洲免费成人| 亚洲一区区二区| 国产视频不卡| 美国成人直播| 欧美国产精品一区| 国产日韩欧美在线播放不卡| 久久久精品tv| 久久午夜精品一区二区| 久久九九精品99国产精品| 精品动漫一区| 一本色道久久综合| 国产日韩欧美自拍| 亚洲精品在线免费| 噜噜噜在线观看免费视频日韩| 亚洲欧洲免费视频| 亚洲香蕉成视频在线观看| 欧美精品久久久久久久免费观看 | 亚洲看片一区| 欧美在线电影| 国产精品专区h在线观看| 久久婷婷丁香| 国产精品视频一区二区三区| 欧美www视频| 国产一区美女| 亚洲欧美精品伊人久久| 亚洲免费高清| 欧美国产亚洲另类动漫| 久久天堂成人| 国外成人在线| 久久国产日韩欧美| 老巨人导航500精品| 国产日韩久久| 久久国产精品久久久久久电车| 亚洲伊人第一页| 国产精品九九久久久久久久| 亚洲激情六月丁香| 一区二区三区久久精品| 欧美福利电影网| 亚洲青色在线| 亚洲天堂网在线观看| 午夜欧美理论片| 久久精品日韩欧美| 黄色国产精品| 欧美18av| 亚洲一区二区三区视频| 亚洲欧美中文在线视频| 9人人澡人人爽人人精品| 亚洲午夜一区二区三区| 国产日韩专区在线| 午夜精品国产更新| 激情婷婷欧美| 欧美午夜a级限制福利片| 欧美一区二区高清| 日韩视频一区二区在线观看| 亚洲在线视频网站| 亚洲国产日韩欧美| 国产精品久久999| 久久综合色影院| 亚洲特级毛片| 亚洲人成人一区二区三区| 性xx色xx综合久久久xx| 日韩视频在线观看| 激情校园亚洲| 国产一区二区| 欧美一区二区在线播放| 99视频国产精品免费观看| 久久久久久久综合| 久久激情久久| 午夜视频在线观看一区| 亚洲一区免费| 亚洲综合色丁香婷婷六月图片| 亚洲高清一二三区| 在线播放日韩| 欧美人与禽猛交乱配| 亚洲无线一线二线三线区别av| 亚洲欧洲一区二区在线播放| 免费毛片一区二区三区久久久| 久久九九免费视频| 久久久久久穴| 亚洲私人影院| 欧美一区观看| 免费久久99精品国产| 免费成人黄色av| 亚洲电影下载| 亚洲伊人一本大道中文字幕| 亚洲曰本av电影| 久久香蕉国产线看观看网| 蜜臀av一级做a爰片久久| 欧美人与性禽动交情品| 国产精品国产三级国产普通话三级| 欧美日韩中文精品| 国产日本欧洲亚洲| 99精品免费| 久久亚洲欧洲|