如何在wince6.0中将Byte *转换为LPCWSTR?

时间:2009-12-03 09:27:20

标签: windows-ce

我有一个结构说一个例子

typedef struct {     DWORD时间;
    BYTE *消息;
    DWORD大小;
} ACCP_MESSAGE_COMMAND_PARAM_T;

现在这对于主服务器端和客户端都是通用的,并且通过主服务器我们向客户端请求以下数据20,“MessageRequest”,30。

现在在客户端,我想显示master使用%s请求的消息。 但我只能通过%c显示而不是%s .. 如果我将BYte *转换为LPCWSTR我应该如何实现? Bcz每当我这样做它会引发异常..

请回复 谢谢 Abhineet Agarwal

3 个答案:

答案 0 :(得分:1)

您需要阅读Unicode。您的问题中的数据(“MessageRequest”)与您的评论中的数据不同( L “MessageRequest”)。它们有所不同,你需要了解它。查看内存视图以了解它们是如何布局的。

你没有说过你要如何“显示”这条消息,但如果它仍然是Unicode,并且客户端是基于CE的,那么就没什么可做的了。 CE仅对其所有API使用Unicode。如果是桌面,请在应用中使用宽(“W”后缀)API或#define UNICODE。或者使用wcstombs或WideCharToMultiByte转换它。

答案 1 :(得分:0)

你是在unicode中发送字符串吗? 字符串周围没有TEXT()宏,所以我猜不是。尝试使用%S打印它。

答案 2 :(得分:0)

我得到了解决方案。

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

BYTE * message; 
message="MessageRequest";
WCHAR msg[100]; 
msg = (WCHAR)message; //Copy "message" content into "msg" .
LPCWSTR msg1;  //Taken variable of LPCWSTR type 
msg1=(LPCWSTR)msg;

然后在窗口上使用 DrawText(...); 显示它 你将能够看到正确的信息。