gpt4 book ai didi

c++ - 如何使用 SendMessage 函数发送用户数据?

转载 作者:太空宇宙 更新时间:2023-11-04 15:48:39 26 4
gpt4 key购买 nike

如何使用 SendMessage 或 PostMessage 函数发送结构或指针?

最佳答案

这是一个简单的例子:

typedesf struct tagMY_STRUCT{
unsigned int a;
unsigned int b;
unsigned int c;
}MY_STRUCT;

//Some code which sends message
MY_STRUCT *pStruct = new MY_STRUCT;

pStruct->a = 5;
pStruct->b = 4;
pStruct->c = 1;

SendMessage(hWnd, WM_USER + 1, 0, (LPARAM)pStruct);

//WndProc

case (WM_USER + 1) :
{
MY_STRUCT *pStruct = (MY_STRUCT*)lParam);
if(pStruct)
{
int a = pStruct->a;

delete pStruct;
}

}
break;
  • 永远不要尝试在进程之间执行此操作。首先学习 IPC 基础知识。

  • 不要忘记在不需要使用时释放指向结构的指针删除

更新

正如 Remy Lebeau 在评论中提到的,您还可以使用 new/malloc 在堆栈上而不是在堆上分配结构,因为 SendMessage在 WndProc 中处理之前阻塞线程。这不适用于 PostMessage将消息添加到窗口的消息队列并立即返回,因此需要堆 block 。

但是,如果您打算传递更复杂的数据结构,我建议使用堆分配而不是堆栈。

关于c++ - 如何使用 SendMessage 函数发送用户数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12491182/

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