VisualFC使用 - UpdateUI
来源:互联网 发布:关于乒乓球赛事的软件 编辑:程序博客网 时间:2024/05/02 01:33
WTL提供了菜单和工具栏以及控件的UI更新机制,VisualFC对WTL这种UpdateUI机制具备良好的支持,我们将使用VFC的WTL向导为对话框应用程序和视图程序进行可视化UpdateUI设计。事例如下:
一、对话框应用程序:使用WTL新建一个对话框应用程序,注意只能使用非模式对话框,WTL的模式对话框不支持UpdateUI机制。为了进一步说明,我们利用资源编辑器添加一菜单IDR_MENU1,添加简单的文件菜单,包括ID_FILE_OPEN(打开)和ID_APP_EXIT(退出)两个菜单项,将IDD_MAINDLG的MENU设置为IDR_MENU1,这样我们就有了一个支持菜单的对话框窗口。运行VFC的WTL类向导,将Class Name切换为CMainDlg,然后选择WTL UpdateUI页面,上面列表为支持UpdateUI的资源列表(包括控件和菜单ID),下面列表为应用了UpdateUI属性的资源列表。选择ID_APP_ABOUT,点击Add UpdateUI按钮,将弹出UpdateUI编辑窗口,默认属性为CHILDWINDOW,直接OK确认即可,将在下面列表看到改变。再选择ID_FILE_OPEN,添加UpdateUI属性,这次的UpdateUI编辑窗口默认为MENUPOPUP,还有一个选择为TOOLBAR,因为我们未使用工具栏,所以不需要选择,按OK确认即可。我们按下VFC的WTL类向导的确认键,将在应用程序中自动添加以下代码。
UPDATE_ELEMENT(ID_APP_ABOUT, UPDUI_CHILDWINDOW)
UPDATE_ELEMENT(ID_FILE_OPEN, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP()
WTL自带的应用程序向导没有为对话框应用程序添加UpdateUI的完全支持,如果要支持控件的更新,需要在OnIdle中添加 UIUpdateChildWindows(),如果要支持菜单的更新,需要将CUpdateUI<CMainDlg>加入到消息链表。代码如下:
public CMessageFilter, public CIdleHandler
...{
。。。。。。
virtual BOOL OnIdle()
...{
UIUpdateChildWindows();//我们手工加入以支持控件的更新
return FALSE;
}
BEGIN_UPDATE_UI_MAP(CMainDlg)
UPDATE_ELEMENT(ID_APP_ABOUT, UPDUI_CHILDWINDOW)
UPDATE_ELEMENT(ID_FILE_OPEN, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP()
BEGIN_MSG_MAP(CMainDlg)
COMMAND_ID_HANDLER(ID_APP_EXIT, OnAppExit)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
CHAIN_MSG_MAP(CUpdateUI<CMainDlg>) //我们手工加入以支持菜单的更新
END_MSG_MAP()
。。。。。。
}
UISetText(ID_APP_ABOUT,_T("MyAbout"); //更改ID_APP_ABOUT的文本
。。。。。。
二、视图框架应用程序:视图框架应用程序的UpdateUI主要是对菜单和工具栏进行更新,WTL自带的的应用程序向导默认就生成了完整的支持,我们来试一下。新建一个WTL的视图框架应用程序,为了进一步说明,我们在工具栏上添加一个按钮ID_VIEW_STATUS_BAR来控制状态栏的显示,运行VFC的WTL类向导,将Class Name切换为CMainDlg,选择WTL UpdateUI页面,上面列表为控件及菜单ID列表,下面的列表为使用了UpdateUI属性的ID列表,目前已包括ID_VIEW_TOOLBAR和ID_VIEW_STATUS_BAR,可以看到ID_VIEW_STATUS_BAR的属性为UPDUI_MENUPOPUP,我们选择下面列表的ID_VIEW_STATUS_BAR,按Del UpdateUI将其删除,然后按Add UpdateUI为其添加新的UpdateUI属性,将弹出编辑UpdateUI窗口,默认的MENUPOPUP已经选中,我们将TOOLBAR也选中按OK即可。完成后按VFC的WTL类向导确认按钮,将自动生成以下代码:
UPDATE_ELEMENT(ID_VIEW_STATUS_BAR, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_VIEW_TOOLBAR, UPDUI_MENUPOPUP)
//UPDATE_ELEMENT(ID_VIEW_STATUS_BAR, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP()
编译运行,点击工具栏上的ID_VIEW_STATUS_BAR,可能看到ID_VIEW_STATUS_BAR已经能够自动选择Check和非Check状态了。
- VisualFC使用 - UpdateUI
- VisualFC使用 - DialogResize(对话框调整)
- VisualFC使用 - 处理WTL窗口消息
- VisualFC使用 - DialogFont(对话框字体设计)
- UpdateUI机制
- VisualFC使用 - 内联函数选择,与原始代码保持一致
- 关于VisualFC
- VisualSVN VisualFC
- VisualFC 0.80 beta1 Released!
- VisualFC 0.80.0601 Released!
- VS2008 + WTL8 + VisualFC 环境配置
- Swing组件的updateUI()和repaint()
- Swing 重绘 repaint,updateUI区别
- Swing动态刷新,repaint,updateUI区别
- java中paint repaint update updateui 区别?
- java updateUI() 有什么用?怎样用
- Swing组件的updateUI()和repaint()
- Swing 重绘 repaint,updateUI区别
- Android 入门开发指南之四 -- Hello,Android例子(上)
- 创业未成功人士讲述未成功经验
- ActiveReports for .NET,终端用户的报表设计控件
- 第一个JSR-184 MIDlet
- 13位CEO告诉你成功始于首份工作的谦卑
- VisualFC使用 - UpdateUI
- 使用ActiveReport for .net 进行报表开发(一)--开始
- 一个PHPer的面试经历
- Windows下PHP环境的配置
- Rails 中的映射关系:
- 最基本也是最常用的一些正则表达式
- SMARTY分页详解
- smarty中foreach,section循环注意点及include,insert,literal等用法
- 很有用的文件操作php函数