当前位置: 首页 > article >正文

2506,wtl的通知事件

通知事件

最后一步,通知(连接)控件CMainDlg想要接受的浏览器控件触发的消息.连接OnInitDialog(),断开OnDestroy().

VC6中连接

VC6中,ATL全局函数,AtlAdviseSinkMap()通知(连接)对话框中所有控件开始或终止发送事件C++对象.
该函数第一个参数是一个指向拥有事件映射链C++对象指针(一般是),第二个参数是一个变量,如果为表示该对象开始接收事件,否则表示终止接收事件.

要使用该函数,需要处理WM_INITDIALOGWM_DESTROY消息,并如下调用:

BOOL CMainDlg::OnInitDialog(...)
{//开始沉事件AtlAdviseSinkMap ( this, true );
}void CMainDlg::OnDestroy()
{//停止沉事件AtlAdviseSinkMap ( this, false );
}

AtlAdviseSinkMap()返回一个表示是否成功执行函数HRESULT.如果OnInitDialog()AtlAdviseSinkMap()执行失败,则无法接收一些(或所有)活扩控件的事件.

VC7中连接

VC7中,CAxDialogImpl提供了一个封装AtlAdviseSinkMap()的方法:AdviseSinkMap().AdviseSinkMap()只有一个型参数,它与AtlAdviseSinkMap()第二个参数意义相同.
AdviseSinkMap()检查拥有事件映射表的类,并调用AtlAdviseSinkMap().

VC6不同是CAxDialogImpl已处理了WM_INITDIALOGWM_DESTROY消息,并调用了AdviseSinkMap(),因此只需在CMainDlg消息映射表的开始部分添加上CHAIN_MSG_MAP宏.

BEGIN_MSG_MAP(CMainDlg)CHAIN_MSG_MAP(CAxDialogImpl<CMainDlg>)//`消息映射`的`其余部分`...END_MSG_MAP()
http://www.lryc.cn/news/2399501.html

相关文章:

  • Shiro安全权限框架
  • 虚拟现实教育终端技术方案——基于EFISH-SCB-RK3588的全场景国产化替代
  • 深入理解CSS浮动:从基础原理到实际应用
  • 代码训练LeetCode(22)研究者H指数
  • 网络安全A模块专项练习任务五解析
  • git cli 基于远程master分支创建本地分支并切换
  • Redis初入门
  • (10)Fiddler抓包-Fiddler如何设置捕获Firefox浏览器的Https会话
  • 使用pandas实现合并具有共同列的两个EXCEL表
  • 2025年- H69-Lc177--78.子集(回溯,组合)--Java版
  • 目标检测任务的评估指标mAP50和mAP50-95
  • C++String的学习
  • java day15 (数据库)
  • SQL 中 IN 和 EXISTS 的区别
  • 多线程爬虫使用代理IP指南
  • 前端面试真题(第一集)
  • 电脑安装系统蓝屏的原因
  • TDengine 高级功能——流计算
  • expect程序交互学习
  • 05.字母异位词分组
  • Mac查看MySQL版本的命令
  • 【.net core】【watercloud】树形组件combotree导入及调用
  • [Java 基础]面向对象-封装
  • 2021 RoboCom 世界机器人开发者大赛-高职组(复赛)解题报告 | 珂学家
  • Python趣学篇:Pygame实现3D星空穿越动画
  • 基于Web的安全漏洞分析与修复平台设计与实现
  • 34.1STM32下的can总线实现知识(区分linux)_csdn
  • 相机Camera日志分析之二十四:高通相机Camx 基于预览1帧的process_capture_request三级日志分析详解
  • Linux 内核中 skb_dst_drop 的深入解析:路由缓存管理与版本实现差异
  • 考研系列—操作系统:冲刺笔记(4-5章)