gpt4 book ai didi

c - 使用 GetMessage 接收消息结构类型,然后分配给另一个相同的结构

转载 作者:行者123 更新时间:2023-11-30 16:45:31 25 4
gpt4 key购买 nike

我已经通过 PostThreadMessage 将消息发送到所需的线程,并在参数 lparam 中将内存地址传递给我想要发送的结构:

struct myStruct estructura;
PostThreadMessage( p->idHilo, WM_USER, 10 , (LPARAM)&estructura);

当我收到时,我会这样做:

struct estructura *e;
while(GetMessage( &mensaje, NULL, WM_USER, WM_USER+2)){
e = &mensaje.lParam;
printf("%c\n",e->miCaracter);
}

最佳答案

e = &mensaje.lParam 是错误的,应该是 e = (estructura*) mensaje.lParam; 但它仍然无法可靠地工作。

您不能使用指向堆栈上某些内容的指针发布消息到另一个线程,因为当其他线程检索消息时堆栈可能会消失/更改。

您应该使用以下替代方案之一:

  • 创建一个窗口,以便您可以使用 SendMessage
  • 在堆上分配结构并让其他线程释放它
  • 使结构体成为全局结构

如果线程位于另一个进程中,那么您可以创建一个命名文件映射。

关于c - 使用 GetMessage 接收消息结构类型,然后分配给另一个相同的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44092044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com