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

專注于c++的學(xué)習(xí)

還是專注于c++的學(xué)習(xí)

統(tǒng)計(jì)

留言簿(1)

閱讀排行榜

評論排行榜

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

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

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

 

1.1     Windows ceunicode

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

 

1.2     關(guān)于COM

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

 

1.3     如何編寫unicode源代碼

1.3.1  C運(yùn)行庫的unicode支持

標(biāo)準(zhǔn)cstring.h頭文件中個(gè)定義了一個(gè)wchar_tunicode字符數(shù)據(jù)類型。

typdef unsigned long wchar_t;

標(biāo)準(zhǔn)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通用源代碼文件的編寫,他主要由一系列的宏組成,在編寫源代碼時(shí),可以使用這些宏來替代對strwcs函數(shù)直接的調(diào)用。

 

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

TCHAR *szError = “Error”;

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

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

TCHAR *szError = L”Error”;

 

那么為了同時(shí)兼容上面的兩種情況,我們定義一個(gè)宏

#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

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

 

 

注意, _UNICODE是標(biāo)準(zhǔn)cunicode開關(guān);

UNICODEwindowsunicode開關(guān)。

 

所以,一般來說,這兩個(gè)宏要么同時(shí)定義,要么同時(shí)不定義。

 

 

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

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

 

 

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

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

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

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

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

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

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

 

1.4.1  Windows字符串函數(shù)

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

 

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

 

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)部資源字符串其實(shí)也是unicode的,在使用LoadString來加載資源時(shí),如果是ansi,則其實(shí)是現(xiàn)將內(nèi)部的unicode轉(zhuǎn)換為ansi,然后在返回。

 

1.4.3  確定文本是ansi還是unicode

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

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

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

1.4.4  unicodeansi之間轉(zhuǎn)換

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

WideCharToMultiByte()

MultiByteToWideChar()

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

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

評論

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

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

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

寫得不錯(cuò)也,學(xué)習(xí)了。  回復(fù)  更多評論   


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


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品日韩欧美| 99精品国产福利在线观看免费 | 亚洲欧美日韩成人| 欧美黄色一区| 欧美国产激情| 欧美大片免费久久精品三p| 久久美女性网| 欧美二区不卡| 亚洲精品自在在线观看| 亚洲日韩第九十九页| 亚洲精品综合精品自拍| 亚洲美女黄网| 亚洲午夜久久久久久久久电影院 | 久久精品成人一区二区三区蜜臀| 一本一本久久a久久精品牛牛影视| 日韩五码在线| 先锋资源久久| 91久久精品国产91久久性色tv| 欧美激情一区二区三区成人 | 一区二区三区久久| 99国产精品久久久久久久成人热| 99视频超级精品| 久久久久久穴| 亚洲在线播放| 欧美日韩精品伦理作品在线免费观看| 欧美伦理在线观看| 在线精品视频免费观看| 久久只精品国产| 91久久在线| 亚洲性夜色噜噜噜7777| 国产自产v一区二区三区c| 欧美主播一区二区三区美女 久久精品人| 午夜精品一区二区三区在线| 免费在线亚洲欧美| 国产伦精品一区二区三区视频黑人| 亚洲成人原创| 欧美中在线观看| 一本色道久久综合狠狠躁篇的优点 | 99爱精品视频| 另类专区欧美制服同性| 欧美性猛交xxxx乱大交蜜桃| 原创国产精品91| 香蕉亚洲视频| 这里只有精品电影| 欧美不卡视频一区发布| 在线观看的日韩av| 久久国产精品第一页| 亚洲视频 欧洲视频| 欧美精品亚洲| 日韩系列在线| 欧美顶级少妇做爰| 久久男人av资源网站| 国产一区二区三区视频在线观看| 亚欧美中日韩视频| 亚洲一区二区在线播放| 欧美三级欧美一级| 夜夜爽av福利精品导航| 亚洲激情小视频| 欧美精品日韩三级| 日韩视频永久免费观看| 欧美黑人国产人伦爽爽爽| 久久亚洲精选| …久久精品99久久香蕉国产| 免费观看亚洲视频大全| 噜噜噜久久亚洲精品国产品小说| 国产亚洲a∨片在线观看| 久久黄色小说| 久久精品中文字幕一区二区三区| 国产视频一区二区在线观看| 久久精品视频在线观看| 久久国内精品自在自线400部| 国产一区二区三区四区五区美女| 久久久国产一区二区| 午夜精品久久久久久久99樱桃| 国产日产精品一区二区三区四区的观看方式 | 久久精品国产2020观看福利| 宅男66日本亚洲欧美视频| 亚洲七七久久综合桃花剧情介绍| 欧美高清不卡| 亚洲午夜av在线| 亚洲免费网址| 国产一区视频网站| 亚洲第一偷拍| 国产精品啊啊啊| 久久动漫亚洲| 理论片一区二区在线| 99精品视频免费全部在线| 在线亚洲自拍| 狠狠久久亚洲欧美专区| 亚洲二区在线| 国产精品视区| 欧美国产免费| 国产精品视频一区二区三区| 欧美xx69| 国产精品男gay被猛男狂揉视频| 麻豆9191精品国产| 欧美日韩高清免费| 久久精品视频在线播放| 欧美日产一区二区三区在线观看| 欧美一区二区黄| 美女福利精品视频| 欧美在线二区| 欧美日韩亚洲在线| 久久婷婷国产麻豆91天堂| 欧美日韩国产成人在线免费| 久热re这里精品视频在线6| 欧美日韩精品高清| 欧美国产视频日韩| 国产色产综合色产在线视频| 欧美激情乱人伦| 国产一区二区三区网站| 在线亚洲观看| 一区二区三区毛片| 免费观看久久久4p| 久久蜜桃香蕉精品一区二区三区| 欧美日韩一区二区视频在线观看 | 亚洲免费视频在线观看| 99伊人成综合| 久热国产精品| 欧美一级播放| 欧美精品综合| 亚洲国产影院| 亚洲国产美女精品久久久久∴| 亚洲欧美日韩一区二区| 亚洲永久网站| 欧美另类久久久品| 亚洲成人自拍视频| 黄色成人在线网站| 亚洲字幕在线观看| 亚洲摸下面视频| 欧美亚一区二区| 在线视频你懂得一区二区三区| 一区二区三区产品免费精品久久75 | 亚洲国产欧洲综合997久久| 午夜精品视频在线观看一区二区| 欧美日韩国产小视频| 亚洲美女av网站| 欧美福利电影网| 亚洲国产精品久久久久婷婷884| 狠狠综合久久| 久久九九免费| 免费成人av在线看| 亚洲高清电影| 欧美久久九九| 在线视频精品一区| 久久国产成人| 91久久久国产精品| 欧美精品一区二区在线观看| 亚洲狼人综合| 亚洲欧美视频一区| 国产亚洲欧美另类中文| 欧美一区二区高清| 欧美本精品男人aⅴ天堂| 亚洲激情女人| 欧美性猛交xxxx乱大交退制版| 亚洲精选成人| 久久免费高清| 亚洲毛片av在线| 国产精品美女一区二区| 欧美一区二区三区在线免费观看| 老牛嫩草一区二区三区日本| 亚洲人永久免费| 国产精品久久久久999| 欧美一区二区视频97| 欧美韩国日本综合| 午夜精品成人在线| 在线免费观看日韩欧美| 欧美日韩成人一区二区三区| 亚洲一区二区三区久久| 蜜臀av在线播放一区二区三区| 亚洲人被黑人高潮完整版| 国产精品成人aaaaa网站| 久久精品二区亚洲w码| 亚洲精品日韩久久| 羞羞视频在线观看欧美| 日韩视频在线免费观看| 国产在线播精品第三| 欧美精品aa| 久久不射中文字幕| 亚洲美女黄网| 欧美a级理论片| 亚洲欧美福利一区二区| 亚洲国产日韩一区| 国产伦精品一区二区三区高清版| 欧美成人中文| 欧美亚洲一区二区在线观看| 亚洲精品网站在线播放gif| 久久久免费av| 亚洲小说欧美另类社区| 亚洲国产成人精品女人久久久| 国产精品av久久久久久麻豆网| 久久精品国产精品亚洲| 亚洲桃色在线一区| 91久久在线观看| 欧美大片在线观看| 久久一区中文字幕| 亚洲欧美日韩在线不卡| 亚洲精品久久久久久久久久久| 黑人巨大精品欧美一区二区| 国产精品日韩高清|