`
tempsitegoogle
  • 浏览: 864791 次
文章分类
社区版块
存档分类
最新评论

WTL学习之窗口界面更新

 
阅读更多

作者:朱金灿

来源:http://blog.csdn.net/clever101

窗口界面更新是指设置窗口的界面元素如菜单之类的状态,如是否可用或者选中之类的。今天先介绍菜单状态如何设置。要更新一个WTL窗口的界面,需要完成以下步骤:

  1. 窗口类需要继承自CUpdateUI模板类和CIdleHandler类,具体如下:
class CMyWindow : public CFrameWindowImpl<CMyWindow>,public CUpdateUI<CMyWindow>, public CIdleHandler


2. CIdleHandler负责把框架窗口添加到模块的空闲处理列表中 ,CUpdateUI负责提供具体的界面更新函数。具体步骤是:

    1. 是重载CIdleHandler类的OnIdle函数:
virtual BOOL OnIdle()
	{
		return FALSE;
	}

b.在BEGIN_MSG_MAP宏添加一行:CHAIN_MSG_MAP(CUpdateUI<CMyWindow>),具体如下:

	BEGIN_MSG_MAP(CMyWindow)
		CHAIN_MSG_MAP(CUpdateUI<CMyWindow>)
     END_MSG_MAP()

C.添加界面更新消息处理宏:

BEGIN_UPDATE_UI_MAP(CMyWindow)
   UPDATE_ELEMENT(IDM_EXIT, UPDUI_MENUPOPUP) // IDM_EXIT为退出菜单项
   UPDATE_ELEMENT(IDM_ABOUT, UPDUI_MENUPOPUP)// IDM_ABOUT为关于菜单项
END_UPDATE_UI_MAP()

其中UPDUI_MENUPOPUP为一个枚举值,这里意思是更新弹出式菜单。它可以是多个值的组合,如UPDUI_MENUPOPUP| UPDUI_MENUBAR

d.然后你可以在任何地方调用CUpdateUI类的接口来更新菜单状态,如在窗口创建时把退出菜单项置灰,把关于菜单项选中:

	LRESULT OnCreate( LPCREATESTRUCT lpcs )
	{
		UIEnable(IDM_EXIT,false);
		UISetCheck(IDM_ABOUT,true);
		return 0;
	}

遇到的问题:

CUpdateUI类的UISetRadio函数似乎不管用,即使我这样设置:

UPDATE_ELEMENT(IDM_EXIT, UPDUI_MENUPOPUP| UPDUI_RADIO)。知道的同学告知我一声。




分享到:
评论

相关推荐

    WTL 8.1 界面开发库

    WTL也有个类似MFC的UpDateUI的东西,但是它们不是很一样 - 主要的区别是您需要把需要更新的项用宏映射标注出来,然后您在您的类里加入执行UpdateUI的代码. DDX/DDV在WTL也支持,同样类似MFC,但有不同. 必须加一个宏...

    WTL 入门学习资料

    感谢网络前辈的无私分享,再整理一下 WTL 的学习文档。 所有源码都能在 VC6,WTL7.0 下编译通过。 具体内容如下: 1、WTL个性设置demo 文档和源码。 2、WTL for MFC Programmers 系列翻译文章,以及源码。 3、WTL ...

    学习WTL 的基础教程

    (例如我工作中的一个原型就使用了了MFC的 CFrameWnd,并在其内包含了WTL的CSplitterWindow,在CSplitterWindow中又使用了MFC的CDialogs -- 我并不是为了炫耀什么,只是修改了MFC的代码使之能够使用WTL的分割窗口,...

    WTL界面编程之获取父窗口背景画刷[整理].pdf

    WTL界面编程之获取父窗口背景画刷[整理].pdf

    MFC程序员的WTL编程

    (例如我工作中的一个原型就使用了了MFC的CFrameWnd,并在其内包含了WTL的CSplitterWindow,在CSplitterWindow中又使用了MFC的CDialogs -- 我并不是为了炫耀什么,只是修改了MFC的代码使之能够使用WTL的分割窗口,它...

    WTL-MFC-Win32无边框窗口.zip

    用vs2010实现的项目, 只配置了Debug模式,虽然使用的是WTL来实现界面,但是消息映射是一样的,很容易移植到MFC. 详细内容查看 https://infoworld.blog.csdn.net/article/details/91960284

    WTL起步-玩转图形界面

    然而,当我们比较 MFC 的界面相关部分的功能时,ATL 对界面编程的支持简直就是一个玩笑。甚至 到了 ATL3.0,ATL 仍然没有对诸如 MDI,命令条,DDX,打印,GDI 等流行功能的支持。最被人喜爱的 MFC 的 CString 也没被...

    WTL简单教程WTL for MFC Programmers

    (例如我工作中的一个原型就使用了了MFC的CFrameWnd,并在其内包含了WTL的CSplitterWindow,在CSplitterWindow中又使用了MFC的CDialogs -- 我并不是为了炫耀什么,只是修改了MFC的代码使之能够使用WTL的分割窗口,它...

    WTL起步-玩转图形界面

    第二章 WTL之路 11 第三章 命令条 14 第四章 带视图的框架窗口 15 第五章 使用MRU 17 第六章 创建多线程SDI应用程序 19 第七章 创建MDI应用程序 23 第八章 分隔窗口 26 第九章 GDI的封装 31 第十章 CString及其它 34...

    彻底深入剖析WTL精髓

    深入剖析WTL 一.Win32模型 二.如何封装Windows界面程序 三.WTL框架窗口分析 深入剖析WTL

    WTL for MFC Programmers

    我认真地对比了MFC和WTL,发现二者有很多相通之处,MFC的功能几乎都能在WTL中实现,只是方法不同而已。我几乎不费吹灰之力就将以前写的一个MFC程序用WTL改写了,使用静态链接的WTL程序比使用动态链接的MFC程序还要小...

    WTL时钟控件及获取父窗口背景画刷

    在Windows界面编程中,获取父窗口的背景画刷是经常要...该下载文件中包含了一份有关“WTL界面编程之获取父窗口背景画刷”的说明文档。 本源代码及文档均为"任明星Ming"原创,欢迎喜欢界面编程及WTL的朋友一起讨论。

    WTL 9.1 5270 ReadMe 中文 汉化 中英文对照版 01d

    WTL为众多用户界面元素提供支持,包括框架窗口和弹出窗口、MDI、标准和通用控件、通用对话框、属性表单和属性页、GDI对象、用户界面更新、可滚动窗口、分割窗口、命令条等等。WTL类尽量模板化,使用较少实例数据和较...

    MFC程序员的WTL指南

    第二章WTL 界面基类 18 2.1、WTL 总体印象 18 2.2、开始写WTL程序 18 2.2.1、WTL 对消息映射的增强 20 2.2.2、从WTL的应用程序生成向导能得到什么 24 第三章 工具条与状态条 35 3.1、主窗口的工具条和状态条 35 第四...

    C++中WTL_和_MFC_编程

    界面元素的自动更新 界面元素的自动更新 (UI Updating)(UI Updating)(UI Updating)(UI Updating) (UI Updating) (UI Updating)(UI Updating)(UI Updating)(UI Updating) (UI Updating) ...............................

    深入剖析WTL.pdf

    深入剖析WTL 一. Win32 模型 二.如何封装Windows 界面程序 三WTL 框架窗口分析

    WTL合集 ATL windowing

    WTL Window Template Library 一套Windows下基于ATL Windowing的窗口界面扩展库,模板元编程代替MFC的界面框架。

    VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:

    1 美化界面之开题篇 相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面: 图1 瑞星杀毒软件的精美界面 程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的...

Global site tag (gtag.js) - Google Analytics