WEB开发网
开发学院软件开发VC COM编程入门 :什么是COM,如何使用COM 阅读

COM编程入门 :什么是COM,如何使用COM

 2006-07-21 11:45:08 来源:WEB开发网   
核心提示: wcstombs()这个CRT函数wcstombs()是个简化版,但它终结了WideCharToMultiByte()的调用,COM编程入门 :什么是COM,如何使用COM(10),所以最终结果是一样的,其原型如下:size_t wcstombs ( char*mbstr, const w

wcstombs()

这个CRT函数wcstombs()是个简化版,但它终结了WideCharToMultiByte()的调用,所以最终结果是一样的。其原型如下:

size_t wcstombs (
   char*     mbstr,
   const wchar_t* wcstr,
   size_t     count );

以下是参数解释:

mbstr

接受结果ANSI串的字符(char)缓冲。

wcstr

要转换的Unicode串。

count

mbstr参数所指的缓冲大小。

wcstombs()在它对WideCharToMultiByte()的调用中使用WC_COMPOSITECHECK | WC_SEPCHARS标志。用wcstombs()转换前面例子中的Unicode串,结果一样:

wcstombs ( szANSIString, wszSomeString, sizeof(szANSIString) );

CString

MFC中的CString包含有构造函数和接受Unicode串的赋值操作,所以你可以用CString来实现转换。例如:

// 假设有一个Unicode串wszSomeString...

CString str1 ( wszSomeString ); // 用构造器转换

CString str2;

str2 = wszSomeString; // 用赋值操作转换

ATL宏

ATL有一组很方便的宏用于串的转换。W2A()用于将Unicode串转换为ANSI串(记忆方法是“wide to ANSI”——宽字符到ANSI)。实际上使用OLE2A()更精确,“OLE”表示的意思是COM串或者OLE串。下面是使用这些宏的例子:

#include
// 还是假设有一个Unicode串wszSomeString...
{
char szANSIString [MAX_PATH];
USES_CONVERSION; // 声明这个宏要使用的局部变量
lstrcpy ( szANSIString, OLE2A(wszSomeString) );
}

OLE2A()宏“返回”转换的串的指针,但转换的串被存储在某个临时栈变量中,所以要用lstrcpy()来获得自己的拷贝。其它的几个宏是W2T()(Unicode 到 TCHAR)以及W2CT()(Unicode到常量TCHAR串)。

上一页  5 6 7 8 9 10 

Tags:COM 编程 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接