#define WM_POST_MSG WM_USER + 2
afx_msg LRESULT UpdateStatic(WPARAM wParam, LPARAM lParam);
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掉这个对象 。结构体也是如此。
联系客服