代码之家  ›  专栏  ›  技术社区  ›  Abhineet

如何在WinCE6.0中将byte*转换成lpcwstr?

  •  0
  • Abhineet  · 技术社区  · 15 年前

    我有一个结构比如说

    typedef结构{ 德沃德时间;
    字节*消息;
    双字大小;
    }accp_message_command_param_;

    现在,这对master和client端都是通用的,通过master,我们向client请求以下数据20,“messagerequest”,30。

    现在在客户端,我想显示主服务器使用%s请求的消息。 但我只能通过%c显示,不能通过%s显示。 此外,如果iam将byte*转换为lpcwstr,我应该如何实现?每次我这么做都会抛出一个异常。

    请回复 谢谢 阿比涅特阿加瓦尔

    3 回复  |  直到 15 年前
        1
  •  1
  •   ctacke    15 年前

    你需要阅读Unicode。您的问题中的数据(“消息请求”)与您的评论中的数据不同( L “消息请求”)。他们是完全不同的,你需要理解这一点。查看“内存”视图,了解它们是如何分层的。

    您还没有说要如何“显示”消息,但是如果它仍然是unicode,并且客户端是基于ce的,那么就没有什么可做的了。ce只对它的所有api使用unicode。如果是桌面,请使用宽的(后缀为“w”)api,或者在应用程序中定义unicode。或者使用wcstombs或widechartomultibyte转换它。

        2
  •  0
  •   Shaihi    15 年前

    您是用Unicode发送字符串吗? 字符串周围没有text()宏,所以我想没有。尝试用%s打印。

        3
  •  0
  •   Abhineet    15 年前

    我找到了解决办法。

    如果要将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;
    

    然后使用 图文(…); 在窗户上 你就能看到正确的信息。