PostMessage发送字符串和结构体

来源:互联网 发布:男生轻微sm知乎 编辑:程序博客网 时间:2024/06/11 05:45

1.首先定义消息变量

#define WM_POST_MSG WM_USER + 2
2.增加消息处理函数

afx_msg LRESULT UpdateStatic(WPARAM wParam, LPARAM lParam);
3.增加消息映射

ON_MESSAGE(WM_POST_MSG,UpdateStatic)
当调用PostMessage函数时如下

CString  *msg = new CString("this is msg");::PostMessage(m_hWnd,WM_POST_MSG,0,(LPARAM)msg);
关键在这个地方,为什么要new一个对象呢,先看接受消息函数怎么样处理的

LRESULT CPostMessageStringDlg::UpdateStatic(WPARAM wParam, LPARAM lParam){CString * temp = (CString *)lParam;MessageBox(*temp);delete temp;return 0L;}
直接获得先前new对象的地址,因为在先前new的对象没有释放,还在堆中,所以处理函数能够通过参数传递过来的指针找到对象的位置,从而获得这个对象, 最后别忘了delete掉这个对象 。结构体也是如此。