科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件托管C++程序开发Win表单文档表单的文档程序程序设计(上)

托管C++程序开发Win表单文档表单的文档程序程序设计(上)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在Windows桌面程序中,应用程序类型通常有:对话框、单文档、多文档以及顶层显示的文档应用程序等

作者:Adding 来源:YESKY 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
2、创建多级菜单

  在应用程序窗口中,最上面的菜单栏的菜单是顶层菜单、每个顶层菜单项还有相应的下拉子菜单,每一个下拉子菜单项还有下一级的子菜单,......。实际上,在Win表单中,除了顶层菜单是用MainMenu来构造外,其余的菜单项都是用MenuItem来构造。若一个菜单项还包含由若干个菜单项组成的子菜单,那么在构造时既可以在其构造函数进行指定,或者通过MenuItems的Add方法来添加,例如下面的代码是构造一个如图1所示的多级菜单。

m_pFileMenuNew = new MenuItem( S"新建(&N)", new EventHandler(this, &WinForm::OnFileNew), Shortcut::CtrlN);
m_pFileMenuNew->ShowShortcut = true;
m_pFileMenuOpen = new MenuItem( S"打开(&O)", new EventHandler(this, &WinForm::OnFileOpen), Shortcut::CtrlO);
m_pFileMenuOpen->ShowShortcut = true;
m_pFileMenuExit = new MenuItem( S"退出(&X)", new EventHandler(this, &WinForm::OnFileExit));

MenuItem* rItems[] = new MenuItem *[3];
rItems[0] = m_pFileMenuNew;
rItems[1] = m_pFileMenuOpen;
rItems[2] = m_pFileMenuExit;

m_pFileMenu = new MenuItem( S"文件(&F)", rItems);

m_pEditMenuCut = new MenuItem( S"剪切(&X)");
m_pEditMenuCut->Shortcut = Shortcut::CtrlX;
m_pEditMenuCut->ShowShortcut = true;
m_pEditMenuCut->Enabled = false;
m_pEditMenuCopy = new MenuItem( S"复制(&C)");
m_pEditMenuCopy->Shortcut = Shortcut::CtrlC;
m_pEditMenuCopy->ShowShortcut = true;
m_pEditMenuCopy->Enabled = false;
m_pEditMenuPaste = new MenuItem( S"粘贴(&V)");
m_pEditMenuPaste->Shortcut = Shortcut::CtrlV;
m_pEditMenuPaste->ShowShortcut = true;
m_pEditMenuPaste->Enabled = false;

rItems[0] = m_pEditMenuCut;
rItems[1] = m_pEditMenuCopy;
rItems[2] = m_pEditMenuPaste;

m_pEditMenu = new MenuItem( S"编辑(&E)", rItems);

m_pViewMenuToolBar = new MenuItem( S"工具栏");
m_pViewMenuToolBar->Checked = true;
m_pViewMenuStatusBar = new MenuItem( S"状态栏");
m_pViewMenuStatusBar->Checked = true;

m_pViewMenu = new MenuItem( S"查看(&V)");
m_pViewMenu->MenuItems->Add(m_pViewMenuToolBar);
m_pViewMenu->MenuItems->Add(m_pViewMenuStatusBar);

m_pAboutMenu = new MenuItem( S"关于...(&A)");
m_pHelpMenu = new MenuItem( S"帮助(&H)");
m_pHelpMenu->MenuItems->Add(m_pAboutMenu);

rItems[0] = m_pFileMenu;
rItems[1] = m_pEditMenu;
rItems[2] = m_pViewMenu;

m_pMenu = new MainMenu(rItems);
m_pMenu->MenuItems->Add(m_pHelpMenu);


  3、为应用程序添加菜单的过程

  这个过程比较简单,首先,创建所需要的多级,然后创建顶层菜单(MainMenu),最后将窗口的Menu属性值设为该MainMenu即可:

  Menu = m_pMenu;

  4、使用快捷菜单

  在Win表单使用快捷菜单是极其方便的,只要将要显示的菜单按前面的方法构造好,然后设置相应的窗口ContextMenu属性即可,如下面的代码:

...//同上面的代码
MenuItem* cItems[] = new MenuItem *[3];
cItems[0] = m_pFileMenuNew;
cItems[1] = m_pFileMenuOpen;
cItems[2] = m_pFileMenuExit;

Windows::Forms::ContextMenu* pContextMenu = new Windows::Forms::ContextMenu(cItems);
ContextMenu = pContextMenu;

  需要说明的是,由于窗口的ContextMenu属性名与类名ContextMenu相同,因此需要像上面代码那样指明相应的具体名称空间。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章