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

asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0
/********************************************\
|????歡迎轉(zhuǎn)載, 但請保留作者姓名和原文鏈接, 祝您進(jìn)步并共勉!???? |
\********************************************/

作者: Jerry Cat
時間: 2006/05/25
鏈接:http://m.shnenglu.com/jerysun0818/archive/2006/05/25/7618.html


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

主工程的要求

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

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

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

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

  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創(chuàng)建工程
創(chuàng)建資源dll工程

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

由于我們打算用資源dll來提供資源信息,我們必須對主工程做如下修改:
  1. 打開工程
  2. 選擇File View,刪除rc,rc2,ico等和資源密切相關(guān)的文件。resource.h請不要刪除
  3. 在CWinApp中添加一個私有的HMODULE類型的變量m_hResource
  4. 在InitInstance函數(shù)開頭添加如下代碼:
    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);
    ?}

?此后再做一點簡單的調(diào)試,應(yīng)該就可以了。具體調(diào)試,就已經(jīng)超出我這篇文章所能討論的范圍了。
posted on 2006-05-25 10:17 Jerry Cat 閱讀(1197) 評論(2)  編輯 收藏 引用

FeedBack:
# re: resource dll
2006-05-25 13:42 | 沐楓
這個模板把內(nèi)容都遮住了。  回復(fù)  更多評論
  
# re: resource dll
2006-05-25 20:13 | Jerry Cat
已調(diào)整.

這就是開源產(chǎn)品不如正常的商業(yè)軟件的最大原因, 既然免費就不象人家商業(yè)軟件公司那樣把用戶當(dāng)成上帝, 一切要盡善盡美. "這樣的產(chǎn)品, 用戶怎么會喜歡呢?", 這是商業(yè)化軟件公司的每個人時時刻刻都在自問的一句話. 所以, 很多人寧愿花錢買也不要開源的白送, 就是這道理, 得民心者得天下, 微軟深知此道, 所以不成功也不行! 我們這些小公司, 也是每天兢兢業(yè)業(yè)地把軟件做好, 讓用戶在任何方面都感到舒服, 感到能極大地提高他們的生產(chǎn)力.

BTW, 要是飛機(jī)也開源, 但是不保證安全, 反正免費送給你, 從天上掉下來我也可免責(zé). 人家航空公司肯定愿花幾千萬, 買個商業(yè)化的飛機(jī)也不要你白送的飛機(jī). 旅客也不敢乘開源的飛機(jī), 不要錢, 白乘也不干, 我靠, 為了省錢, 命都不要了. 所以, 正規(guī)的場合還是商業(yè)化軟件的天下!

不怪cppblog, 人家畢竟免費提供一個blog.  回復(fù)  更多評論
  

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理



<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(7)

隨筆檔案

最新隨筆

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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精品| 久久久久久久网| 欧美日韩在线免费观看| 在线视频日韩| 一区二区三区欧美| 伊人久久婷婷色综合98网| 欧美日韩少妇| 国产精品久久久久久福利一牛影视| 欧美3dxxxxhd| 欧美人在线视频| 欧美三级特黄| 含羞草久久爱69一区| 在线精品视频免费观看| 亚洲国产天堂久久综合网| 国产一区美女| 亚洲欧洲精品成人久久奇米网 | 日韩视频在线永久播放| 亚洲精品一区在线观看| 一区二区日韩欧美| 亚洲永久精品国产| 欧美一区2区三区4区公司二百| 香蕉久久夜色| 亚洲人成毛片在线播放女女| 欧美日韩亚洲一区二区三区| 国产精品s色| 亚洲品质自拍| 久久综合五月| 亚洲精品自在久久| 美日韩精品视频免费看| 国产精品欧美日韩一区二区| 亚洲国产成人精品视频| 性久久久久久久久| 亚洲精选在线观看| 欧美国产日韩一区二区| 亚洲国产日韩欧美一区二区三区| 亚洲天堂av高清| 亚洲欧洲日本在线| 欧美国产日本韩| av成人动漫| 亚洲六月丁香色婷婷综合久久| 久久不射网站| 韩日视频一区| 欧美成人精品| 亚洲高清激情| 亚洲免费在线播放| 国产精品资源| 久久午夜色播影院免费高清| 亚欧成人在线| 红桃av永久久久| 亚洲国产精品一区二区第一页 | 亚洲图片欧洲图片av| 亚洲国产成人不卡| 欧美三区视频| 欧美在线免费观看| 久久亚洲综合| 亚洲一区二区三区激情| 欧美一级免费视频| 亚洲丰满在线| 亚洲国产精品成人一区二区| 亚洲人成在线播放网站岛国| 国产精品欧美日韩一区| 亚洲国产精品第一区二区三区 | 欧美国产欧美综合| 欧美日韩亚洲一区二区| 久久精品视频在线观看| 免费欧美日韩| 猫咪成人在线观看| 国产精品成人免费精品自在线观看| 日韩亚洲视频在线| 久久se精品一区二区| 亚洲午夜电影在线观看| 麻豆亚洲精品| 美女精品在线观看| 韩国女主播一区| 欧美伊人久久大香线蕉综合69| 日韩午夜免费| 欧美激情精品久久久久久免费印度| 久久精品免费观看| 国产精品一区二区黑丝| 一本久道久久综合中文字幕 | 国产精品久久久久高潮| 亚洲精品偷拍| 亚洲主播在线| 国产亚洲欧洲一区高清在线观看 | 欧美二区在线看| 狠狠久久婷婷| 麻豆9191精品国产| 亚洲国产精品一区二区尤物区| 亚洲美女福利视频网站| 欧美日韩你懂的| 小黄鸭视频精品导航| 国产一区二区精品丝袜| 午夜国产精品视频免费体验区| 欧美一区在线直播| 亚洲日韩欧美视频| 欧美午夜免费电影| 久久久噜久噜久久综合| 日韩午夜电影av| 久久久久久久一区二区| 亚洲老司机av| 一区二区在线视频观看| 欧美精品一区二区三区蜜桃| 亚洲欧美另类中文字幕| 亚洲福利国产| 另类尿喷潮videofree| 9l国产精品久久久久麻豆| 国内自拍一区| 国产人成精品一区二区三| 欧美成人一区二区三区在线观看| 午夜伦欧美伦电影理论片| 亚洲全部视频| 亚洲欧洲日产国码二区| 亚洲永久字幕| 亚洲一区二区三区777| 亚洲美女在线看| 激情亚洲一区二区三区四区| 欧美先锋影音| 国产精品视频一区二区三区| 欧美激情一区二区三区全黄| 久久中文在线| 欧美a级片网| 欧美激情亚洲一区| 欧美区国产区| 欧美色图麻豆| 国产精品久久久久久久电影| 欧美色另类天堂2015| 国产精品国产三级国产aⅴ无密码| 欧美视频免费在线| 欧美性久久久| 国一区二区在线观看| 亚洲精品国产精品国自产在线| 亚洲一二三四区| 欧美一区二区三区在线看| 欧美在线三区| 欧美激情一区二区久久久| 日韩午夜中文字幕| 亚洲免费视频中文字幕| 久久久久久久精| 欧美性猛片xxxx免费看久爱| 国产亚洲成av人片在线观看桃| 在线观看亚洲a| 亚洲欧美影音先锋| 亚洲国产高清高潮精品美女| 一区二区高清视频| 蜜桃久久精品乱码一区二区| 国产精品入口麻豆原神| 日韩小视频在线观看| 久久九九99视频| 午夜一级久久| 国产精品日韩欧美一区二区| 亚洲精品国产欧美| 蜜桃av噜噜一区二区三区| 亚洲一区日韩在线| 欧美日韩精品一区二区三区| 亚洲成人自拍视频| 久久久久久欧美| 欧美在线啊v| 99热在线精品观看| 日韩性生活视频| 猛干欧美女孩| 亚洲高清精品中出| 欧美一区二区视频观看视频| 日韩亚洲精品电影| 欧美日韩视频免费播放| 9i看片成人免费高清| 亚洲最快最全在线视频| 国产精品电影观看| 性欧美大战久久久久久久免费观看| 99热精品在线| 国产一级一区二区| 亚洲成在线观看| 欧美欧美全黄| 欧美日韩国产天堂| 中文日韩电影网站| 欧美一区二区视频观看视频| 在线观看视频一区| 亚洲综合清纯丝袜自拍| 在线观看亚洲a| 中文亚洲免费| 91久久中文| 欧美夜福利tv在线| 亚洲社区在线观看| 欧美国产一区二区三区激情无套| 日韩视频一区二区三区| 韩国av一区| 先锋影院在线亚洲| 中文日韩电影网站| 欧美电影在线观看完整版| 欧美一级大片在线观看| 欧美日韩成人一区二区| 欧美激情精品久久久久| 国产综合色产| 亚洲欧美美女| 欧美亚洲自偷自偷| 欧美日韩国产91| 亚洲国产欧美一区| 亚洲免费精彩视频| 欧美女主播在线| 一区二区免费在线视频| 亚洲天堂av综合网|