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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            国产日韩欧美综合精品| 亚洲第一中文字幕在线观看| 亚洲尤物在线视频观看| 欧美激情视频给我| 亚洲九九爱视频| 亚洲视频一起| 国产一二三精品| 久久激情五月激情| 欧美韩日一区二区| 亚洲图片欧美一区| 国产亚洲人成网站在线观看| 久久深夜福利| 91久久综合亚洲鲁鲁五月天| 亚洲免费观看视频| 午夜精品视频在线观看| 一区二区三区四区蜜桃| 欧美日韩1080p| 一本色道久久综合亚洲精品按摩| 亚洲香蕉网站| 亚洲一二三区在线观看| 羞羞色国产精品| 亚洲第一精品福利| 欧美新色视频| 久久亚洲风情| 亚洲尤物在线| 亚洲激情社区| 久久久久久久久久久一区 | 亚洲一区二区免费在线| 久久久久久久久岛国免费| 亚洲日本视频| 国内精品模特av私拍在线观看| 欧美日韩精品不卡| 久久久久久香蕉网| 午夜精品在线观看| 日韩亚洲精品在线| 亚洲高清在线视频| 美女尤物久久精品| 久久久999成人| 欧美一级在线播放| 中国成人黄色视屏| 亚洲三级免费电影| 亚洲电影免费| 韩国v欧美v日本v亚洲v| 国产精品一区免费视频| 国产精品国产三级国产专播品爱网| 麻豆国产精品va在线观看不卡| 午夜久久黄色| 亚洲欧美在线播放| 一区二区三区欧美成人| 亚洲欧洲一区二区三区在线观看 | 亚洲女人av| 99亚洲一区二区| 亚洲欧洲三级| 亚洲日本黄色| 久久国产精彩视频| 亚洲一二三区精品| 中文一区二区在线观看| 9久草视频在线视频精品| 亚洲人屁股眼子交8| 亚洲激情女人| 久久精品毛片| 国产一区91| 国产精品一区毛片| 国产精品vvv| 欧美日韩亚洲一区在线观看| 欧美精品18+| 欧美日韩一区二区三区高清| 欧美日韩成人一区| 欧美视频亚洲视频| 国产伦精品一区二区三区| 国产精品你懂的在线| 国产区在线观看成人精品| 国产亚洲精品久久久| 揄拍成人国产精品视频| 亚洲三级电影在线观看| 亚洲手机在线| 久久人人九九| 亚洲精品一区在线观看| 一区二区三区你懂的| 欧美在线网址| 欧美精品久久久久久久久久| 欧美三级电影大全| 韩日在线一区| 99视频超级精品| 欧美影院在线| 亚洲国产成人高清精品| 亚洲视频中文字幕| 久久综合九色综合久99| 欧美日本国产| 韩国成人理伦片免费播放| 亚洲精品中文字幕女同| 亚洲一区久久久| 久久精品亚洲一区二区| 亚洲第一精品电影| 亚洲欧美精品在线观看| 牛牛影视久久网| 国产精品入口尤物| 亚洲欧洲一区二区天堂久久| 亚洲女同精品视频| 欧美成人精精品一区二区频| 一区二区高清在线| 免费在线欧美黄色| 国产精品一区二区久久| 日韩一区二区精品| 久久婷婷蜜乳一本欲蜜臀| 亚洲国产一二三| 久久久久国产一区二区三区| 欧美日韩日本国产亚洲在线| 尤物网精品视频| 久久国产主播精品| 中文国产成人精品久久一| 欧美极品在线观看| 影院欧美亚洲| 久久国产精品网站| 亚洲视频一区在线| 欧美黄色一区二区| 亚洲电影免费观看高清完整版在线| 一区二区高清视频在线观看| 久久gogo国模裸体人体| 欧美精品二区| 亚洲国产精品第一区二区| 在线观看欧美亚洲| 久久久久一本一区二区青青蜜月| 日韩视频一区二区三区在线播放| 亚洲图片欧洲图片av| 欧美精品少妇一区二区三区| 欧美大胆a视频| 国产精品人人做人人爽人人添| 在线成人中文字幕| 久久成人免费电影| 日韩亚洲欧美高清| 欧美mv日韩mv国产网站| 国产亚洲一区二区三区在线观看| 在线一区日本视频| 欧美激情精品久久久久久蜜臀 | 一区二区日韩欧美| 亚洲第一精品福利| 久久久亚洲国产天美传媒修理工| 国产精品捆绑调教| 在线性视频日韩欧美| 亚洲国产黄色片| 免费一级欧美片在线观看| 亚洲大片在线| 亚洲高清不卡| 欧美另类综合| 亚洲图片欧美日产| 国产精品99久久久久久久女警 | 久久精品一区二区| 久久av资源网| 1000部精品久久久久久久久| 久久精品欧美日韩| 亚洲一区二区三区三| 国产欧美一区二区三区视频| 亚洲欧美日韩国产一区二区三区 | 久久久视频精品| 韩国女主播一区二区三区| 欧美在线亚洲一区| 久久大逼视频| 亚洲国产天堂网精品网站| 久久黄色网页| 午夜精品一区二区在线观看| 一区二区三区高清| 精品91视频| 欧美中文字幕视频在线观看| 国内视频一区| 亚洲一区自拍| 99国产精品视频免费观看一公开| 亚洲国产片色| 亚洲一本大道在线| 久久国产精品亚洲77777| 亚洲一区视频在线| 韩国成人福利片在线播放| 久久手机精品视频| 欧美精品在线免费播放| 欧美一区在线看| 免费亚洲电影| 亚洲欧美在线视频观看| 欧美一区三区二区在线观看| 亚洲欧洲精品一区| 一区二区三区.www| 黄色一区二区三区四区| 亚洲国产影院| 国产欧美在线视频| 亚洲欧洲在线一区| 国产视频欧美视频| 欧美国产一区二区在线观看| 国产精品国产三级国产普通话三级 | 亚洲视频欧洲视频| 曰本成人黄色| 亚洲午夜精品在线| 亚洲国内在线| 欧美亚洲一区二区三区| 亚洲精品国产精品国自产在线| 一本一本久久a久久精品综合妖精| 国产精品无码永久免费888| 亚洲福利av| 国产一区二区三区最好精华液| 日韩视频专区| 亚洲精品一区二区三区在线观看| 亚洲欧美日韩视频一区|