Duilib 窗口之間的消息傳遞


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM