如何将LRESULT转换为自定义结构类型?

第一个帐户

我使用sendMessagereplyMessage在同一台笔记本电脑中的两个应用程序之间进行通信。在接收方,当它接收到来自发件人的消息时,它将回复一条消息。因此,在发件人过程中,它将MyStruct把强制转换为LRESULT,并将回复发送给发件人应用程序。我试图将其投射回接收方,它也可以正常工作。

    PCOPYDATASTRUCT result;
MyStruct* data;
LRESULT a;
MyStruct* t;
MyStruct* reply = new MyStruct;
switch (uMessageType)
{
case WM_COPYDATA:
    result = (PCOPYDATASTRUCT)addtionalData;
    data = (MyStruct*)result->lpData;

    reply->msgId = 10;
    strcpy_s(reply->msgInfo, 100, "test reply");
    a = reinterpret_cast<LRESULT>(reply);
    t = reinterpret_cast<MyStruct*>(a);//when cast the LRESULT data to MyStruct back here, it succeed

    ReplyMessage(reinterpret_cast<LRESULT>(reply));


    break;

但是,当我尝试将此LRESULT强制MyStruct发送发送方时,它失败了:

LRESULT result = SendMessage(test, WM_COPYDATA, (WPARAM)(HWND)hwndC, (LPARAM)(LPVOID)&data);
MyStruct* reply = (MyStruct*)result;//the value of reply is unreadable

如何在发送方将LRESULT转换为我的自定义结构?

我只是尝试发送interger或float。有用。但是,如果我使用自定义struct MyStruct,它将无法正常工作。我想这是因为LRESULT的大小比MyStruct.RES要短。如何解决此问题?LRESULT的大小为4,int的大小也为4。

typedef struct msg{
int msgId;
char msgInfo[100];
}MyStruct;
莫尔布德尼洛

发送时WM_COPYDATA,数据本身将复制到接收过程中。
的接收者WM_COPYDATA获得指向该副本的指针。
两端的地址不太可能相同,但是每个端都有指向其自己的数据副本的有效指针。

另一方面,ReplyMessage不进行此类复制,而仅返回发送者数据的(重新解释的)地址。
这不是接收端上的有效地址。

如果你想传递数据来回,你需要使用SendMessageWM_COPYDATA在两个方向上,有可能增加自己的协议之上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将Fsharp中的自定义类型转换为JSON字符串?

来自分类Dev

如何将查询结果中的对象转换为自定义类型

来自分类Dev

如何将字符串转换为自定义数据类型

来自分类Dev

如何将NSDictionary转换为自定义对象

来自分类Dev

如何将QVariant转换为自定义类?

来自分类Dev

如何将自定义类型列表转换为字符串列表

来自分类Dev

Postgres将数组转换为自定义类型

来自分类Dev

如何将JSON字符串转换为自定义对象?

来自分类Dev

如何将所选列表转换为javascript中的自定义列表?

来自分类Dev

Datagridview如何将选定的行强制转换为自定义对象

来自分类Dev

如何将JSONObject转换为自定义Java类?

来自分类Dev

如何将DataGridView内容转换为自定义对象的List <>?

来自分类Dev

如何将视频转换为具有自定义帧大小的avi xvid?

来自分类Dev

如何将sql返回值转换为自定义对象?

来自分类Dev

如何将视频转换为具有自定义帧大小的avi xvid?

来自分类Dev

Datagridview如何将选定的行强制转换为自定义对象

来自分类Dev

如何将NSURLSessionDownloadTask强制转换为自定义NSURLSessionDownloadTask(继承)?

来自分类Dev

如何将ImageButton自定义类转换为ImageButton

来自分类Dev

如何将JSON字符串日期转换为自定义格式日期?

来自分类Dev

如何将 DataTable 输出转换为自定义模型?

来自分类Dev

如何将日期字符串转换为自定义日期格式?

来自分类Dev

Python 如何将现有的本机 dict 转换为自定义 dict 对象?

来自分类Dev

如何将 IQueryable/IEnumerable 结果转换为自定义模型 C# EntityFramework

来自分类Dev

如何将“游戏对象转换为自定义类”

来自分类Dev

我如何轻松地将json转换为此类自定义类型的ArrayList?

来自分类Dev

如何将字节数组转换为自定义基本字符串?

来自分类Dev

如何将Newton.Json反序列化的通用对象转换为自定义对象?

来自分类Dev

在Rails 4中的自定义验证期间,如何将date_select哈希转换为Date对象?

来自分类Dev

如何将GET参数从自定义日期格式转换为数据库日期格式?

Related 相关文章

  1. 1

    如何将Fsharp中的自定义类型转换为JSON字符串?

  2. 2

    如何将查询结果中的对象转换为自定义类型

  3. 3

    如何将字符串转换为自定义数据类型

  4. 4

    如何将NSDictionary转换为自定义对象

  5. 5

    如何将QVariant转换为自定义类?

  6. 6

    如何将自定义类型列表转换为字符串列表

  7. 7

    Postgres将数组转换为自定义类型

  8. 8

    如何将JSON字符串转换为自定义对象?

  9. 9

    如何将所选列表转换为javascript中的自定义列表?

  10. 10

    Datagridview如何将选定的行强制转换为自定义对象

  11. 11

    如何将JSONObject转换为自定义Java类?

  12. 12

    如何将DataGridView内容转换为自定义对象的List <>?

  13. 13

    如何将视频转换为具有自定义帧大小的avi xvid?

  14. 14

    如何将sql返回值转换为自定义对象?

  15. 15

    如何将视频转换为具有自定义帧大小的avi xvid?

  16. 16

    Datagridview如何将选定的行强制转换为自定义对象

  17. 17

    如何将NSURLSessionDownloadTask强制转换为自定义NSURLSessionDownloadTask(继承)?

  18. 18

    如何将ImageButton自定义类转换为ImageButton

  19. 19

    如何将JSON字符串日期转换为自定义格式日期?

  20. 20

    如何将 DataTable 输出转换为自定义模型?

  21. 21

    如何将日期字符串转换为自定义日期格式?

  22. 22

    Python 如何将现有的本机 dict 转换为自定义 dict 对象?

  23. 23

    如何将 IQueryable/IEnumerable 结果转换为自定义模型 C# EntityFramework

  24. 24

    如何将“游戏对象转换为自定义类”

  25. 25

    我如何轻松地将json转换为此类自定义类型的ArrayList?

  26. 26

    如何将字节数组转换为自定义基本字符串?

  27. 27

    如何将Newton.Json反序列化的通用对象转换为自定义对象?

  28. 28

    在Rails 4中的自定义验证期间,如何将date_select哈希转换为Date对象?

  29. 29

    如何将GET参数从自定义日期格式转换为数据库日期格式?

热门标签

归档