轉載: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.確保傳遞消息的函數被調用了。