有没有办法将byte *消息转换为除WideCharToMultiBYte()之外的LPCWSTR?

时间:2009-12-03 12:12:13

标签: windows-ce

有没有办法将byte *消息转换为除WideCharToMultiBYte()以外的LPCWSTR? 谢谢回复

Abhineet Agarwal

4 个答案:

答案 0 :(得分:2)

byte*我认为你的意思是char*字符串 如果确实如此,您可以将swprintf%hs标志一起使用。

示例:

wchar_t msg[100];
swprintf(msg, L"%hs", "message");

答案 1 :(得分:0)

wcstombs

以下是MSDN链接中的示例:

void main( void )
{
   int      i;
   char    *pmbbuf   = (char *)malloc( MB_CUR_MAX );
   wchar_t *pwchello = L"Hello, world.";

   printf( "Convert wide-character string:\n" );
   i = wcstombs( pmbbuf, pwchello, MB_CUR_MAX );
   printf( "\tCharacters converted: %u\n", i );
   printf( "\tMultibyte character: %s\n\n", pmbbuf );
}

答案 2 :(得分:0)

如果编码是默认编码,则为mbstowcs。否则,您可以使用libiconv中的iconv或使用Windows API函数,它非常易于使用,只需要几行代码。

答案 3 :(得分:-1)

我得到了解决方案。

如果您想将BYTE *转换为LPCWSTR而不是使用WideCharToMultiByte,那么我们可以按以下方式使用:

//Suppose 
BYTE * message;
//where message="MessageRequest"

//now create one variable called "msg"....
WCHAR msg[100];
//Copy "message" content into "msg" .

//Now take variable of LPCWSTR type
LPCWSTR msg1;
msg1=(LPCWSTR)msg;

//and display it using DrawText(...); 
//And u will be able to see proper message.