我有一个结构说一个例子
typedef struct {
DWORD时间;
BYTE *消息;
DWORD大小;
} ACCP_MESSAGE_COMMAND_PARAM_T;
现在这对于主服务器端和客户端都是通用的,并且通过主服务器我们向客户端请求以下数据20,“MessageRequest”,30。
现在在客户端,我想显示master使用%s请求的消息。 但我只能通过%c显示而不是%s .. 如果我将BYte *转换为LPCWSTR我应该如何实现? Bcz每当我这样做它会引发异常..
请回复 谢谢 Abhineet Agarwal
答案 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(...); 显示它 你将能够看到正确的信息。