如何在对话框中使用UPDATECOMMANDUI机制-
源文件地址:http://blog.csdn.net/yjkwf/archive/2010/03/05/5349574.aspx
UPDATE_COMMAND_UI机制对于动态的把 通过检查 或通过激活或失效 菜单命令和工具栏按钮 而发生变化的应用程序的状态 反馈给用户是非常重要的。不幸的是,ClassWizard并不支持直接为对话框加入UPDATE_COMMAND_UI句柄,然而通过努力还是能够利用UPDATE_COMMAND_UI机制来动态的更新对话框的。
第一步:手工为对话框类增加一个WM_KICKIDLE私有的MFC消息句柄,实现这些,遵循以下步骤:
1a、包含#include <afxpriv.h> ,该头文件里定义了这个消息
1b、在对话框类头文件里加入OnKickIdle()函数原型。
afx_msg void OnKickIdle();
1c、增加该消息的消息映射宏
ON_MESSAGE_VOID(WM_KICKIDLE , OnKickIdle)
1d、实现该函数
void CDemoDlg::OnKickIdle()
{
UpdateDialogControls(this,false);
}
第二步:为每一个需要检查的控件加入UPDATE_COMMAND_UI消息句柄,通过pCmdUI来完成其工作。
2a、在对话框类头文件里加入OnUpdateEmpty()函数原型。
afx_msg void OnUpdateEmpty(CCmdUI* pCmdUI);
2b、增加该消息的消息映射宏
ON_UPDATE_COMMAND_UI(IDC_EMPTY , OnUpdateEmpty)
2c、实现该函数
void CDemoDlg::OnUpdateEmpty(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_edtEdit.GetWindowTextLength()>0);
}
编码结束......
解释:
在空闲处理过程中,MFC把WM_IDLEUPDATECMDUI消息发送给主框架窗口和其直接子窗口----工具栏、状态栏、其视图----随后它们依次用CN_UPDATE_COMMAND_UI消息更新自身。然而,因为对话框不是主框架窗口的子窗口,所以对话框开始收不到WM_IDLEUPDATECMDUI消息。
为了给对话框一个实现它自己的空闲进程的机会,MFC定义了私有的WM_KICKIDLE消息,当对话框处于空闲进程时,这个消息自动发送给对话框-----只要队列中没有其它的消息在等待。
可以利用WM_KICKIDLE消息来调用UpdateDialogControls(),这个函数依次对 对话框上www.beateas.com,昱昱炎炎的控件发CN_UPDATE_COMMAND_UI消息。UpdateDialogC
内置英特尔至强 联想服务器助力广发证券信息化建设
ontrols()的函数原型:
void CWnd::UpdateDialogControls(CCmdTarget* pTarget ,684153 BOOL bDisableIfNoHandler );
pTarget 标示处理CN_UPDATE_COMMAND_UI消息的窗口,因为这些更新句柄经常是在与对话框自身相关联的C++类中实现的,因此,通常把this赋给该参数。
源文件地址:
http://blog.csdn.net/yjkwf/archive/2010/03/05/5349574.aspx
如何在对话框中使用UPDATECOMMANDUI机制-相关推荐
- VC++在对话框中加入属性页
当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置.本文针对这种方法来讨论几种可能实现的方案. 方案一 本方案的例子请见源代码打包文件中的Property1部分 在对 ...
- 【转载】在对话框中加入属性页
原文地址:http://www.vckbase.com/document/viewdoc/?id=398 在对话框中加入属性页 作者:黄晨量 下载本文全部源代码 当一个基于对话框的程序中有相当多的控件 ...
- 利用tab_control控件在对话框中加入属性页的方法详细介绍
在对话框中加入属性页 方案一 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab C ...
- 在对话框中加入属性页
资料来源 http://www.vckbase.com/document/viewdoc/?id=398 在对话框中加入属性页 作者:黄晨量 下载本文全部源代码 当一个基于对话框的程序中有相当多的控件 ...
- 对话框中加入标签页的5种方法
(2008-07-08 15:25 博客搬家拾遗) 标签页是MFC控件里有一点难用的东西,今天看到了一篇相关文章,觉得写得比较系统,而且浅显易懂,特地转来,与大家分享的同时也留备自己以后查用. (以下 ...
- 对话框中WaitForSingleObject等待线程退出导致程序阻塞的原因及解决
今天在调试程序中发现了程序中出现的一个问题,具体如下: 在对话框中新建一个线程worker thread,当用户点击cancel时,通知该线程函数退出,同时用WaitForSingleObject等待 ...
- 在MFC对话框中显示html网页
最近在写一个小软件,想在MFC对话框中显示帮助文档,都是html格式的,上网找了好多资料,用一个CHtmlCtrl类的东西,但是网上找的这个类放在VS2005下编译不过去,老是提示错误.于是几经修改, ...
- java弹出对话框的三个命令_Java中弹出对话框中的几种方式
Java中弹出对话框中的几种方式 2019年12月06日 阅读数:20 这篇文章主要向大家介绍Java中弹出对话框中的几种方式,主要内容包括基础应用.实用技巧.原理机制等方面,希望对大家有所帮助. 1 ...
- 「前端面试题系列7」Javascript 中的事件机制(从原生到框架)
前言 这是前端面试题系列的第 7 篇,你可能错过了前面的篇章,可以在这里找到: 理解函数的柯里化 ES6 中箭头函数的用法 this 的原理以及用法 伪类与伪元素的区别及实战 如何实现一个圣杯布局? ...
最新文章
- Ubuntu中安装sqldeveloper出现的问题及其解决方法
- python templates_详解Python的Django框架中的templates设置
- mysql怎么禁止远程连接_mysql禁止远程访问
- DCMTK:DSRDocumentTree,DSRDocumentSubTree,DSRDocumentTreeNode和DSRContentItem类的测试程序
- linearlayout设置最大高度_一句话掌握一消建筑高度计算方法,先收藏!
- php模拟环境搭建,PHP环境搭建最新方法
- PostgreSQL学习手册(PL/pgSQL过程语言)【转】
- 被苹果摆了一道的高通,亮出了一张“小米”牌
- 高通又失一员大将,英特尔成功挖角高通CFO
- vue php 架构目录,vuex 项目结构目录及一些简单配置介绍
- 服务器虚拟化和vcpu介绍
- 两金压降两金指什么_什么是两金压降
- HDOJ4699 Editor 栈
- aspose-word的简单使用以及转pdf线上乱码
- 论我是如何被自己搭建的聊天机器人气死的(自己的搞笑经历)
- 微信小程序webview内嵌h5页面
- uc浏览器怎么看历史记录 uc浏览器网页历史记录查看方法
- 金九银十,一个新的王者在8月即将加冕——Treasure project(TPC)重磅来袭,你参与了吗?
- C语言求n的阶乘的方法总结
- 美国计算机游戏设计专业排名,美国游戏设计专业大学排名TOP5推荐!