转载:https://www.cnblogs.com/Alberl/p/3404240.html
1、定义消息ID
#define WM_USER_POS_CHANGED WM_USER + 2
2、响应自定义消息:
在HandleMessage函数的switch分支里加上如下代码即可:
1 case WM_USER_POS_CHANGED: 2 //处理代码; 3 break;
3、发送自定义消息:
在需要发送消息的地方调用::PostMessage(*this, WM_USER_POS_CHANGED, wParam, lParam);即可,和windows一样(当然,SendMessage也OK,看情况使用)
踩过的坑:
1.PostMessage函数第一个参数为窗口句柄,传递窗口句柄时,应将传递部分写在Create函数和ShowModal函数之间。
例如:点击主窗口设置按钮打开设置窗口,要创建新线程:
CreateThread(NULL,0,SettingThread,m_hWnd,0,NULL);
然后线程函数代码如下:
DWORD WINAPI SettingThread(LPVOID lpParameter){ HWND hWnd = (HWND)lpParameter; CsettingWnd* pWnd = new CSettingWnd; pWnd->Create(NULL, _T("CSettingWnd"),UI_WNDSTYLE_DIALOG,WS_EX_WINDOWEDGE); pWnd->SetMainWnd(hWnd); pWnd->CenterWindow(); pWnd->ShowModal(); delete pWnd; return 0; }
2.确保传递消息的函数被调用了。