参考网上的例子,弄了个小程序试验....
建一个MFC对话框项目,添加一个按钮用来创建线程。
定义消息
#define WM_THREADOVER (WM_USER+1111)
对话框类中声明函数:
afx_msg LRESULT OnThreadOver(WPARAM wParam,LPARAM lParam);
定义消息响应函数
LRESULT CXXXDlg::OnThreadOver(WPARAM wParam,LPARAM lParam)
{
CString str;
str.Format("para1:%d... para2:%d",wParam,lParam);
MessageBox(str);
return 1;
}
在消息列表中添加消息
ON_MESSAGE(WM_THREADOVER,&CXXXDlg::OnThreadOver)
定义线程句柄、ID:
HANDLE hThread= NULL;
unsigned int threadID = 0;
左键按钮消息中创建线程
hThread= (HANDLE)_beginthreadex(NULL,0,RunThread,(void *)this, 0, &threadID );
线程
unsigned __stdcall RunThread(LPVOID param)
{
CXXXDlg *pMainDlg= (CXXXDlg*) param;
pMainDlg->MessageBox("ThreadMessageBox");
Sleep(5000);
::SendMessage(pMainDlg->GetSafeHwnd(),WM_THREADOVER,1UL,2UL);
return 0xdead;
}
下面时参考的地方~
==============================================================================================================================
转至http://blog.csdn.net/perddy/article/details/2101327
一个工程中,子窗口需要将不同的状态信息上传给其他窗口,以便出现不同的显示。
主要实现过程为:
1、将其他窗口的窗口句柄设置为全局,并在初始化时赋值;
HWND hMainWnd ;
hMainWnd = this->GetSafeHwnd();
2、自定义消息,并在其他窗口中添加响应函数;
Resource.h中添加
#define WM_MYMESSAGE (WM_USER+100)
类中添加
afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); 函数以及其实现
消息映射中添加消息与消息处理函数对应
BEGIN_MESSAGE_MAP(CWebDlgDlg, CDialog)
//{{AFX_MSG_MAP(CWebDlgDlg)
ON_MESSAGE(WM_MYMESSAGE,MyMessage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
3、子窗口下发送消息
::SendMessage(hMainWnd,WM_MYMESSAGE,10L, 5L);
================================================================================================================
如何向对话框发送自定义的消息?