Duilib 窗口之间的消息传递
2024-10-21 10:19:35
转载:https://www.cnblogs.com/Alberl/p/3404240.html
1、定义消息ID
#define WM_USER_POS_CHANGED WM_USER + 2
2、响应自定义消息:
在HandleMessage函数的switch分支里加上如下代码即可:
case WM_USER_POS_CHANGED:
//处理代码;
break;
3、发送自定义消息:
在需要发送消息的地方调用::PostMessage(*this, WM_USER_POS_CHANGED, wParam, lParam);即可,和windows一样(当然,SendMessage也OK,看情况使用)
踩过的坑:
1.PostMessage函数第一个参数为窗口句柄,传递窗口句柄时,应将传递部分写在Create函数和ShowModal函数之间。
例如:点击主窗口设置按钮打开设置窗口,要创建新线程:
CreateThread(NULL,,SettingThread,m_hWnd,,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 ;
}
2.确保传递消息的函数被调用了。
最新文章
- CI模板加载css和js
- using 的三种用法
- dpkg:警告:无法找到软件包 XXXX 问题解决
- Bootstrap页面布局5 - 响应式布局(格式)
- 把excel中的数据导入到数据库
- PHP连接sqlserver的两种方法,向sqlserver2000中写入数据,中文乱码
- 注册表-各种功能-隐藏IE、隐藏硬盘、禁用硬件
- LDAP缓存命令
- kaggle之手写体识别
- 通过配置Windows 防火墙允许使用TCP/IP协议远程访问数据库
- Error:Cannot build Artifact :war exploded because it is included into a circular depency
- Cocos2D:塔防游戏制作之旅(十八)
- nw.js---创建一个点击菜单
- MySQL 8.0 Docker使用注解
- 【CF553E】Kyoya and Train 最短路+cdq分治+FFT
- eclipse---->;自己常用的快捷键
- Inno Setup 脚本
- JQ和JS获取span标签的内容(有的情况下JQ达不到预期的目的就用JS)
- php生成二维码的几种方式
- Java编程之Map中分拣思想。