COM编程入门,十分浅显易懂
符号。每一种语言或地区都有其自己的 代码页,所以使用正确的代码页对于正确地显示重音字符很重要。 :dwFlags 确定Windows如何处理“复合” Unicode字符,它是一种后面带读音符号的字符。 如è就是一个复合字符。如果这些字符在CodePage参数指定的代码页中,不会出什么事。 否则,Windows必须对之进行转换。 传递WC_COMPOSITECHECK使得这个API检查非映射复合字符。 传递WC_SEPCHARS使得Windows将字符分为两段,即字符加读音,如e`。 传递WC_DISCARDNS使得Windows丢弃读音符号。 传递WC_DEFAULTCHAR使得Windows用lpDefaultChar参数中说明的缺省字符替代复合字符。 缺省行为是WC_SEPCHARS。 要转换的Unicode串。 lpWideCharStr在Unicode 字符中的长度。通常传递-1,表示这个串是以0x00结尾。 接受转换的串的字符缓冲 cbMultiByte lpMultiByteStr的字节大小。 可选——当dwFlags包含WC_COMPOSITECHECK | WC_DEFAULTCHAR并且某个Unicode字符不能被映射到同等的ANSI串时所传递的一个单字符ANSI串,包含被插入的“缺省”字符。可以 传递NULL,让API使用系统缺省字符(一种写法是一个问号)。 可选——指向BOOL类型的一个指针,设置它来表示
是否缺省字符曾被插入ANSI串。可以传递NULL来忽略这个参数。
我自己都有点晕菜了 !,万事开头难啊 ,不搞清楚这些东西就很难搞清楚COM的串处理。何况文档中列出的比实际应用的要复杂得 多。下面就给出了如何使用这个API的例子:
// 假设已经有了一个Unicode 串 wszSomeString...
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, // ANSI 代码页 WC_COMPOSITECHECK, // 检查重音字符
wszSomeString, // 原Unicode 串
-1, // -1 意思是串以0x00结尾
szANSIString, // 目的char字符串 sizeof(szANSIString), // 缓冲大小
NULL, // 肥缺省字符串 NULL ); // 忽略这个参数
调用这个函数后,szANSIString将包含Unicode串的ANSI版本。 调用这个函数后,szANSIString将包含Unicode串的ANSI版本。
wcstombs()