专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C 教程 » updateui:VisualFC使用 - UpdateUI的方法 »正文

updateui:VisualFC使用 - UpdateUI的方法

来源: 发布时间:星期四, 2009年2月12日 浏览:115次 评论:0


WTL提供了菜单和工具栏以及Control控件UI更新机制VisualFC对WTL这种UpdateUI机制具备良好支持我们将使用VFCWTL向导为对话框应用和视图进行可视化UpdateUI设计事例如下:

、对话框应用:使用WTL新建个对话框应用注意只能使用非模式对话框WTL模式对话框不支持UpdateUI机制为了进步介绍说明我们利用资源编辑器添加菜单IDR_MENU1添加简单文件菜单包括ID_FILE_OPEN(打开)和ID_APP_EXIT(退出)两个菜单项将IDD_MAINDLGMENU设置为IDR_MENU1这样我们就有了个支持菜单对话框窗口运行VFCWTL类向导将Class Name切换为CMainDlg然后选择WTL UpdateUI页面上面列表为支持UpdateUI资源列表(包括Control控件和菜单ID)下面列表为应用了UpdateUI属性资源列表选择ID_APP_ABOUT点击Add UpdateUI按钮将弹出UpdateUI编辑窗口默认属性为CHILDWINDOW直接OK确认即可将在下面列表看到改变再选择ID_FILE_OPEN添加UpdateUI属性这次UpdateUI编辑窗口默认为MENUPOPUP还有个选择为TOOLBAR我们未使用工具栏所以不需要选择按OK确认即可我们按下VFCWTL类向导确认键将在应用中自动添加以下代码中国自学编程网www.zxbc.cn

BEGIN_UPDATE_UI_MAP(CMainDlg)
    UPDATE_ELEMENT(ID_APP_ABOUT, UPDUI_CHILDWINDOW)
    UPDATE_ELEMENT(ID_FILE_OPEN, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP

WTL自带应用向导没有为对话框应用添加UpdateUI完全支持如果要支持Control控件更新需要在OnIdle中添加  UIUpdateChildWindows如果要支持菜单更新需要将CUpdateUI<CMainDlg>加入到消息链表代码如下:

 CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>,
        public CMessageFilter, public CIdleHandler
...{

    virtual BOOL OnIdle
    ...{
        UIUpdateChildWindows;//我们手工加入以支持Control控件更新
         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) [Page]
        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

}    现在可以加入对需要更新Control控件或菜单操作部分了代码如下:UIEnable(ID_FILE_OPEN,FALSE); //使ID_FILE_OPEN禁用
UISetText(ID_APP_ABOUT,_T(\"MyAbout\"); //更改ID_APP_ABOUT文本

    

2、视图框架应用:视图框架应用UpdateUI主要是对菜单和工具栏进行更新WTL自带应用向导默认就生成了完整支持我们来试新建个WTL视图框架应用为了进步介绍说明我们在工具栏上添加个按钮ID_VIEW_STATUS_BAR来控制状态栏显示运行VFCWTL类向导将Class Name切换为CMainDlg选择WTL UpdateUI页面上面列表为Control控件及菜单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即可完成后按VFCWTL类向导确认按钮将自动生成以下代码:

BEGIN_UPDATE_UI_MAP(CMainFrame)
    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状态了



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: