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

專注于c++的學習

還是專注于c++的學習

統(tǒng)計

留言簿(1)

閱讀排行榜

評論排行榜

《windows核心編程》讀書筆記2-chapter2

如果調(diào)用任何windows函數(shù),并傳遞給他一個ANSI字符串,系統(tǒng)會先將這個字符串轉(zhuǎn)換為unicode字符串,然后將這個unicode字符串傳遞給操作系統(tǒng)。這樣你就理解,為什么在windows平臺上,使用unicode的效率要相對更高一些。

所以,我們可以通過在一開始就是用unicode開發(fā)應用程序,使程序執(zhí)行更有效率。

 

1.1     Windows ceunicode

為了保持windows ce的精致,ms決定不支持ansiwindows函數(shù)。所以,如果要進行windows ce上的程序開發(fā),必須了解并在整個應用程序中使用unicde

 

1.2     關于COM

Ms在將COM組建從16位移植到32位系統(tǒng)使,作出了一個決定:素有需要字符串的COM接口方法只支持unicode字符串。

 

1.3     如何編寫unicode源代碼

1.3.1  C運行庫的unicode支持

標準cstring.h頭文件中個定義了一個wchar_tunicode字符數(shù)據(jù)類型。

typdef unsigned long wchar_t;

標準c還專門為wchar_t定義了一組函數(shù)。

char* strcat(char*, const char*);

wchar_t* wcscat(wchat_t* , const wchar_t*);

 

size_t strlen(const char*);

size_t wcslen(const wchar_t*);

所有的unicode字符串都以wcs開頭,代表寬字符。為了調(diào)用unicode,簡單的將ansi字符串的str替換為wcs即可。

 

TChar.h頭文件主要為為了幫助ANSI/Unicode通用源代碼文件的編寫,他主要由一系列的宏組成,在編寫源代碼時,可以使用這些宏來替代對strwcs函數(shù)直接的調(diào)用。

 

Msc++編譯器將所有的字符串默認都認為是ansi字符串,而不是unicode字符串。所以,對于下面的這句話:

TCHAR *szError = “Error”;

如果沒有定義_UNICODE宏,則能夠編譯通過,但是如果定義了該宏,則會出現(xiàn)編譯錯誤。

為了生成一個UNICODE字符串而非一個ansi字符串,需要將以上的一句改為:

TCHAR *szError = L”Error”;

 

那么為了同時兼容上面的兩種情況,我們定義一個宏

#ifdef _UNICODE

#define _TEXT(x) L ## x

#else

#define _TEXT(x) x

#endif

 

這樣我們就可以重寫以上的語句:

TCHAR* szError = _TEXT(“Error);

 

1.3.2  Windows定義的unicode數(shù)據(jù)類型

WCHAR  Unicode字符

PWSTR   指向Unicode字符串的 指針

PCWSTR  指向Unicode字符串常量的指針

 

Windows.h中同樣定義了ansi/Unicode通用的數(shù)據(jù)類型

PTSTR

PCTSTR

在編譯這個模塊時,是否定義了UNICODE宏決定了這些數(shù)據(jù)類型指向ansi還是unicode

 

 

注意, _UNICODE是標準cunicode開關;

UNICODEwindowsunicode開關。

 

所以,一般來說,這兩個宏要么同時定義,要么同時不定義。

 

 

1.3.3  Windows系統(tǒng)中的unicode函數(shù)和ansi函數(shù)

windows2000下,CreateWindowsExA只是一個簡單的轉(zhuǎn)換層,他實現(xiàn)內(nèi)存分配并把ansi字符串轉(zhuǎn)換為unicode字符串,然后調(diào)用CreateWindowsExW函數(shù),把轉(zhuǎn)換后unicode字符串傳遞給該函數(shù)。當CreateWindowsExW返回時,CreateWindowsExA釋放內(nèi)存緩沖區(qū),并且返回其窗口句柄。

 

 

1.4     讓應用程序符合ansiunicode規(guī)范

下面是一些基本規(guī)則:

l  對于文本字符和串使用通用數(shù)據(jù)類型;

l  對字節(jié)、字節(jié)指針和數(shù)據(jù)緩沖區(qū)使用顯式數(shù)據(jù)類型;

l  對文字字符和字符串使用TEXT宏;

l  修改字符串運行問題, 使用sizeof(szbuffer)/sizeof(TCHAR)而不是sizeof(szbuffer);

l  分配內(nèi)存時,使用malloc(len*sizeof(TCHAR)) 而不是malloc(len);

 

1.4.1  Windows字符串函數(shù)

第一個CompareString參數(shù)指定一個32位的位置IDLCID),用來識別具體的語言種類,CompareString使用LCID,通過檢查適用于特定語言的字符的意義來比較字符串。

 

sprintf()系列函數(shù)的應用

 

char szA[100];

wchar_t szW[100];

 

//normal

sprintf(szA, “%s”, “ANSI Str”);

 

//convert Unicode to ansi

sprintf(szA, “%S”, L”ANSI Str”);

 

//normal

swprintf(szW, L“%s, L”ANSI Str”);

 

//convert Ansi To unicode

swprintf(szW, L”%S”, “ANSI Str”);

這里要注意格式化字符串的中s字符的大小寫;

 

1.4.2  資源

Vc程序的內(nèi)部資源字符串其實也是unicode的,在使用LoadString來加載資源時,如果是ansi,則其實是現(xiàn)將內(nèi)部的unicode轉(zhuǎn)換為ansi,然后在返回。

 

1.4.3  確定文本是ansi還是unicode

DWORD IsTextUnicode(CONST PVOID pvBuffer, int cb, PINT pResult);

用于判斷指定的文本為ansi還是unicode

這個函數(shù)使用的是統(tǒng)計的方法論來分析緩沖區(qū)內(nèi)的文本是ansi還是unicode,所以他也有可能返回一個錯誤的結(jié)果。

1.4.4  unicodeansi之間轉(zhuǎn)換

這里其實就是涉及到兩個函數(shù)

WideCharToMultiByte()

MultiByteToWideChar()

通過查看函數(shù)的原型,我們可以發(fā)現(xiàn)WideCharToMulteByteMultiByteToWideChar多了兩個參數(shù),pDefaultChar, pfUsedDefaultChar,如果寬字符不能轉(zhuǎn)換某字符,則函數(shù)應該使用參數(shù)pDefaultChar指向的字符,如果該參數(shù)為NULL,函數(shù)使用系統(tǒng)默認的字符。默認的字符為問號(這就是為什么在英文系統(tǒng)下,中文字符總是顯示為問號的原因),問號用于文件名是危險的,因為問好是一種通配符。

posted on 2009-10-24 14:20 拿磚拍 閱讀(318) 評論(2)  編輯 收藏 引用 所屬分類: 讀書筆記

評論

# re: 《windows核心編程》讀書筆記2-chapter2 2009-10-27 00:35 新開天龍八部私服

注意格式化字符串的中s字符的大小寫,這一點一定要記清楚。  回復  更多評論   

# re: 《windows核心編程》讀書筆記2-chapter2 2009-10-27 00:36 天龍八部私服

寫得不錯也,學習了。  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美1区免费| 亚洲女性喷水在线观看一区| 欧美韩日一区二区| 欧美va亚洲va香蕉在线| 欧美电影在线免费观看网站| 你懂的成人av| 欧美欧美天天天天操| 欧美日韩ab| 国产麻豆成人精品| 国产一区视频观看| 91久久精品国产91性色tv| 中文亚洲欧美| 久久se精品一区精品二区| 久久亚洲欧美| 亚洲精品女人| 日韩写真在线| 性欧美精品高清| 免费一级欧美片在线观看| 欧美久久久久中文字幕| 国产女人aaa级久久久级| 亚洲国产免费| 亚洲综合色丁香婷婷六月图片| 久久久久国产精品厨房| 亚洲国产成人av| 美女精品自拍一二三四| 91久久国产综合久久| 亚洲精品国产精品乱码不99| 在线视频你懂得一区二区三区| 中文日韩在线| 欧美成人亚洲成人| 亚洲一二三区在线观看| 免费成人av在线看| 国产精品丝袜xxxxxxx| 亚洲国产一区二区在线| 欧美在线观看天堂一区二区三区| 欧美激情精品久久久久久黑人 | 狠狠色综合网| 亚洲一区精品视频| 亚洲福利视频三区| 欧美永久精品| 国产精品久久久久永久免费观看| 91久久久国产精品| 久久视频精品在线| 亚洲网站在线| 欧美黄色影院| 黄色小说综合网站| 欧美亚洲日本国产| 亚洲伦理一区| 蜜桃av一区二区三区| 国产久一道中文一区| 亚洲精品美女久久7777777| 久久久av水蜜桃| 一区二区免费在线观看| 欧美成人午夜免费视在线看片 | 伊人春色精品| 欧美在线啊v| 夜夜嗨av一区二区三区网页| 欧美+日本+国产+在线a∨观看| 国内精品久久久| 欧美有码在线观看视频| 亚洲女人天堂av| 国产精品wwwwww| 亚洲午夜精品网| 日韩午夜激情| 欧美日韩你懂的| 中文av字幕一区| 日韩视频在线观看| 欧美日韩小视频| 亚洲一区二区三区四区五区黄| 91久久精品国产| 欧美国产日韩在线观看| 亚洲精品看片| 99精品视频一区二区三区| 欧美美女日韩| 在线一区免费观看| 中日韩高清电影网| 国产欧美日韩激情| 久久久久久久国产| 久久久在线视频| 91久久精品国产91性色tv| 亚洲国产成人av好男人在线观看| 亚洲视频国产视频| 中文欧美日韩| 国产亚洲a∨片在线观看| 久久久久久久久久久久久久一区 | 国产精品v欧美精品v日韩| 亚洲免费在线电影| 欧美一区二区在线播放| 在线观看亚洲专区| 亚洲精品视频在线| 国产日产欧美一区| 欧美sm重口味系列视频在线观看| 欧美福利一区| 欧美一区深夜视频| 久久久一区二区| 一区二区三区国产| 欧美一区二区三区在线观看| 亚洲高清一二三区| 99亚洲视频| 禁久久精品乱码| 妖精成人www高清在线观看| 国产欧美一区二区在线观看| 久久久青草婷婷精品综合日韩| 欧美高潮视频| 欧美在线视频在线播放完整版免费观看 | 怡红院精品视频| 亚洲精品影院在线观看| 国产亚洲观看| 亚洲精品社区| 一区二区三区中文在线观看| 亚洲美女视频在线观看| 红杏aⅴ成人免费视频| 一区二区三区久久精品| 亚洲国产合集| 欧美一级理论片| 亚洲香蕉网站| 欧美大片免费观看| 久久久久久电影| 国产精品免费看片| 久久在线视频| 久久精品夜色噜噜亚洲aⅴ| av成人天堂| 久久精品国产第一区二区三区最新章节 | 韩日精品在线| 亚洲淫片在线视频| 亚洲图片在线观看| 欧美国产第一页| 欧美成人午夜77777| 国产日韩一级二级三级| 日韩视频精品在线观看| 亚洲国产日韩在线一区模特| 久久精品日韩| 久久久精品一区| 亚洲免费婷婷| 香蕉成人久久| 午夜在线精品偷拍| 欧美婷婷久久| 一本大道久久a久久精二百| 99精品欧美一区| 欧美另类人妖| 亚洲人在线视频| 亚洲美女区一区| 欧美日韩国产成人| 亚洲日本精品国产第一区| 91久久久一线二线三线品牌| 久久综合色影院| 欧美成人视屏| 日韩一本二本av| 欧美国产一区二区| 最新中文字幕亚洲| 在线亚洲免费| 国产精品日韩在线| 性伦欧美刺激片在线观看| 久久精品国产欧美亚洲人人爽| 国产日韩欧美麻豆| 欧美一区二区日韩| 免费在线国产精品| 91久久精品日日躁夜夜躁国产| 欧美a级片网站| av成人激情| 久久精品青青大伊人av| 影音先锋国产精品| 欧美高清hd18日本| 亚洲午夜未删减在线观看| 欧美在线日韩精品| 在线欧美影院| 欧美精品乱码久久久久久按摩| 99v久久综合狠狠综合久久| 午夜欧美视频| 91久久香蕉国产日韩欧美9色| 欧美激情区在线播放| 亚洲午夜久久久| 蜜桃伊人久久| 99伊人成综合| 国产一区二区精品久久91| 久久综合成人精品亚洲另类欧美| 亚洲欧洲综合| 久久精品亚洲乱码伦伦中文| 在线观看视频一区二区| 欧美精品久久久久久久久久| 亚洲综合日韩中文字幕v在线| 免费h精品视频在线播放| 中文一区二区| 在线免费观看成人网| 欧美吻胸吃奶大尺度电影| 久久精品视频导航| 一区二区三区免费在线观看| 老色批av在线精品| 亚洲与欧洲av电影| 在线免费日韩片| 国产精品久久久久影院亚瑟| 狼人社综合社区| 亚洲欧美日韩中文在线制服| 亚洲毛片在线看| 欧美aa在线视频| 久久国产精品第一页| 一本综合久久| 最新亚洲视频| 亚洲第一精品福利| 国产日产欧产精品推荐色 |