首页 > 其他 > 详细

Duilib 窗口之间的消息传递

时间:2019-08-27 18:35:26      阅读:261      评论:0      收藏:0      [点我收藏+]

转载: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.确保传递消息的函数被调用了。

Duilib 窗口之间的消息传递

原文:https://www.cnblogs.com/Toya/p/11419945.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!