MFC自定义消息
需积分: 0 182 浏览量
更新于2013-11-28
收藏 92KB DOC 举报
在Microsoft Foundation Classes (MFC)库中,自定义消息是一种扩展框架功能的方式,允许程序员创建自己的消息类型,以便处理特定的用户交互或应用程序需求。自定义消息可以是窗口消息,也可以是类消息,它们通常用于封装一些特定的操作,或者提供框架内没有内置的功能。以下是如何在MFC中创建和使用自定义消息的详细步骤:
1. **添加消息值**:
- 自定义消息的ID应该位于WM_USER之后,以避免与系统定义的消息ID冲突。例如,你可以定义一个名为`WM_MY_CUSTOM_MESSAGE`的新消息,其值可以是`WM_USER + 100`。这样确保了不会覆盖已有的消息ID。在头文件中,定义常量如下:
```cpp
#define WM_MY_CUSTOM_MESSAGE (WM_USER + 100)
```
2. **注册消息**:
- 在派生自CWnd的类中,需要使用`RegisterWindowMessage`函数来注册自定义窗口消息。这个函数会返回消息的唯一ID,确保在全局范围内不会重复。在派生类的` OnInitDialog`或`PreCreateWindow`等初始化方法中进行注册:
```cpp
RegisterWindowMessage(_T("MY_CUSTOM_MESSAGE"));
// 然后将返回值赋给WM_MY_CUSTOM_MESSAGE
WM_MY_CUSTOM_MESSAGE = result;
```
3. **处理消息**:
- 在CWnd派生类的`OnMessage映射`(`BEGIN_MESSAGE_MAP`和`END_MESSAGE_MAP`之间)中,添加对自定义消息的处理。这通常是通过`ON_MESSAGE`宏完成的,它指定消息ID和处理该消息的方法:
```cpp
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_MESSAGE(WM_MY_CUSTOM_MESSAGE, OnMyCustomMessage)
// 其他消息映射...
END_MESSAGE_MAP()
```
- 随后定义消息处理函数`OnMyCustomMessage`,并实现自定义消息的行为:
```cpp
LRESULT CMyDlg::OnMyCustomMessage(WPARAM wParam, LPARAM lParam)
{
// 处理自定义消息的代码
// ...
return 0; // 返回值通常是0,除非有特殊需求
}
```
4. **发送消息**:
- 当需要发送自定义消息时,可以使用`SendMessage`或`PostMessage`函数。例如,在某个成员函数中:
```cpp
SendMessage(hWndTarget, WM_MY_CUSTOM_MESSAGE, wParam, lParam);
// 或者
PostMessage(hWndTarget, WM_MY_CUSTOM_MESSAGE, wParam, lParam);
```
- `hWndTarget`是接收消息的窗口句柄,`wParam`和`lParam`是可选的参数,可以根据需要传递数据。
5. **使用代码截图**:
- 文档中的代码截图可能包含了上述步骤的具体实现,包括如何在对话框类中定义消息映射,以及如何在其他地方发送和处理这些消息。这些截图提供了直观的理解和示例,帮助开发者更好地理解和应用自定义消息。
通过自定义消息,MFC程序员能够为应用程序添加更丰富的交互和控制,实现独特的功能,同时保持代码的组织性和可维护性。记住,合理地使用自定义消息可以使程序结构更加清晰,避免过度依赖于复杂的事件处理链。在实际开发中,应当根据项目需求谨慎选择是否使用自定义消息,以确保代码的简洁性和效率。
scuchen123
- 粉丝: 0
- 资源: 1
最新资源
- 基于蒙特卡洛抽样的电动汽车充电负荷计算(matlab代码版) 主要内容:代码主要主要研究的的是大规模电动汽车的蒙特卡洛模拟,包括电动汽车起始充电时间以及每日行使里程的概率密度分布,在此基础上,进一步计
- MATLAB代码:基于粒子群算法的含风光燃储微网优化调度 关键词:微网优化调度 粒子群算法 风光燃储 参考文档:《基于多目标粒子群算法的微电网优化调度-王金全》仅参考部分模型,非完全复现 优势:代码
- kmeans聚类,肘部法确定聚类个数 代码对数据先进行归一化然后聚类 可设定聚类个数范围,根据肘部法选择合适的聚类个数 可求得每类的具体数据 matlab代码,备注清楚,更改为自己的数据和要求即可
- 同步机VSG DFIG双馈风电机组同步机控制,并网端电源分为理想电源或同步发电机 机组1.5MW,采用控制策略如图片所示 (附赠同步机简易模型)
- P3分布参数拟合与ks检验,累计概率密度画图 对数据进行3参数拟合(形状、尺度、位置参数),可设置ks检验的显著性水平 matlab代码,备注清楚,更改为自己的数据即可
- FLAC3D水力压裂例子,可以拿来参考,有单孔和双孔
- 基于高频脉振电压注入的PMSM无传感器控制 无感控制,高频电压注入 1.包括位置观测器构成是带通滤波器加低通滤波器,采用PLL锁相环,是离散模型 2.也有连续模型,用的是龙贝格观测器提取转子位置和转速
- 拉锥光纤,镀膜、耦合、光栅…… Rsoft beamprop,光纤仿真,光子晶体光纤仿真
- 基于floyd算法的路径规划算法matlab代码,求解常见的路径规划问题 内含算法的注释,模块化编程,新手小白可快速入门 佛洛依德算法,路径规划算法,栅格地图
- 二维互相关随机场模拟实践,保姆级教程 基于matlab与flac6.0的乔列斯基分解的中点法模拟岩土体互相关随机场 自相关函数可以选择:指数型、高斯型、二阶自回归型、指数余弦型、三角型自相关函数 案例
- STM32环形串口队列程序 大数据串口收发 实时不丢包 串口程序平常产品开发中编写或移植的程序并亲自测试通过,均为工程文件格式,可直接编译使用 该程序为大数据量吞吐的串口收发例程,中断接收,边收边
- MCGS与三菱变频器通讯基于MODBUS-RTU程序 ~ 可以通过触摸屏控制变频器正反转,运行停止,还能监视变频器的运行频率,输出频率,输出电压,输出电流以及转速 MCGS嵌入版7.7软件打开
- svr支持向量机回归预测 案例提供数据进行归一化处理,对训练数据训练,对测试集预测,并计算mae、rmse、R2、mre等误差指标 matlab代码,备注详细,根据自己需要修改案例数据即可
- pytho面试资源库(含基础题和面试真题带答案)
- stm32低压无感BLDC方波控制方案 MCU是ST32M0核 负载的ADC反电动势采样 1.启动传统三段式,强拖的步数少,启动快,任意电机基本可以顺利启动切闭环; 2.配有英非凌电感法入算法; 3
- 永磁同步电机滑模控制的直接转矩控制的matlab仿真 SMC DTC直接转矩控制加滑膜控制 转速环调节器 磁链和转矩调节器 磁链和转矩的计算SVPWM矢量控制 含有报告