作者:朱金灿
来源:http://blog.csdn.net/clever101/
现在很多应用程序的界面基本是用配置文件来规划界面的,在这个时候就得学会自定义菜单栏和工具栏之类的。
VS Feature Pack是为微软新推出的界面库(听说是买BCG的授权,然后对之进行改造的),其中的主要的界面类可以和BCG的界面类可以对应起来,类的使用和BCG的也大同小异。但是有些做法还是很不一样,比如这次我要提到的自定义菜单栏。这里的自定义菜单栏是指去除系统默认的菜单栏,然后动态创建菜单栏。今天摸索了一下,大致搞清楚了(说实话,这方面网上的资料很少)。
首先我们新建一个MFC的单文档工程:DynamicMenu,基本设置如下:
这里要提一下的是VS Feature Pack的应用程序其中的菜单栏操作主要由CMFCMenuBar来负责。因此下面的编码也主要针对该类来进行。
首先我们实现编码实现删除默认的所有系统菜单项,其代码如下:
然后我们定义两个菜单资源ID:
为CMainFrame类添加一个创建菜单栏的成员函数:
我们在CMainFrame类的OnCreate函数调用这个函数,这里只给出部分代码:
现在我们看看效果如何,如下图:
我们发现默认菜单栏去掉了,但是新的菜单栏并没有出来。到网上搜资料,但是并没有搜到适用的,看了看Visual C++ 2008 Feature Pack Demo中提供的DynamicMenu的源码,了解了要增加AFX_WM_RESETMENU消息的处理函数,在函数里调用创建菜单栏,具体增加的代码如下:
我们再删除程序的注册表相关项重新编译(使用VS Feature Pack开发删除注册表这一项非常重要,Feature Pack的界面设计保存思路实际上和BCG是一样的,把上次用户设定的界面配置信息都保存在注册表,如果不删除注册表相关项,往往不能更新界面,注册表相关项一般在HKEY_CURRENT_USER/Software/Local AppWizard-Generated Applications/你的工程名称(英文版VS),HKEY_CURRENT_USER/Software/应用程序向导生成的本地应用程序/你的工程名称(中文版VS))。
我们再看看效果,如下图:
你可能会发现菜单是灰的,那是没有添加菜单的命令响应函数的缘故。本文的编译环境为:Windows XP + sp3, VS C++ 2008 + sp1。
后来查了一下MSDN对AFX_WM_RESETMENU消息的解释,如下:
参考文献:
1. AFX Messages
分享到:
相关推荐
feature pack安装之前打的补丁VS10-KB2403277-x86.exe -------------------------------------- en_visual_studio_2010_visualization_modeling_feature_pack_x86_x64_535571.vsix --------------------------------...
MSDN上发布的VS2008SP1 示例中关于 MFC Feature Pack 的那一部分. 特提取出来供大家下载.
微软Visual Studio 2010的功能包2的Microsoft Visual Studio2010扩展了以下几个方面: • 在Visual Studio 2010旗舰版时,Visual Studio2010高级版和专业测试2010的扩展测试能力。 • 在Visual Studio 2010旗舰版的...
包含两个文件:Visualization and Modeling Feature Pack Runtime.vsix和en_visual_studio_2010_visualization_modeling_feature_pack_x86_x64_535571.vsix。可直接双击安装。 通过可视化和建模功能包,可以扩展 ...
主要功能: (1)支持C++项目的dgml生成:可以查看项目和类的依赖...完成安装后,在VS2010中建立的UML类图上右键就有“Generate Code”菜单了,这样根据模型可以生成代码了。 从代码生成,只要把代码拖放到类图上就行。
VS2010建模 代码生成工具 FeaturePack. VS2010有了自己的建模工具,可以进行架构设计。 而此工具,正是用于模型生成代码的。加快代码的编写。
Visual Studio 2010 Feature Pack 2
msdn的Visual C++ 2008 Feature Pack sp1的例子,有34个例子
Visual C++ 多年以来对界面的设计都没有更新 ...这个文件不是Feature Pack,而是Feature Pack里的示例。 在VS2008 SP1 里已经取消了这些关于新特性的示例,要想学新特性的开发,这些示例肯定是需要的。
VS2008 sp1 MFC的样例代码,值得参考
Visualization and Modeling Feature Pack Expand the scenarios for exploring and understanding your code. Generate code from UML class diagrams. Create UML class diagrams from code. Import UML class,...
Visual C++ 2010 Feature Pack
今天需要分析C++代码,希望能生成类图,准备使用VS旗舰版的Visualization and Modeling Feature Pack。 但需要订阅才能下载,在CSDN上找到了下载连接。但安装时出现错误,说是路径太长: 安装错误: System.IO.Path...
The following tables summarize the capabilities in this feature pack and how they work with the existing tools in Visual Studio Ultimate: •Generate Code from Models •Explore Existing Code •Use ...
有可能是BCG公司与微软一起开发的,可以开发类似VS2008的界面,很实用! Visual C++ 2008 Feature Pack 暂时好像还没有什么书介绍,只有看例子了! 是否好,大家看了就知道好了! 用Visual C++ 2008 Feature Pack ...
VS2010增强工具包feature pack2 。feature pack 2安装之前打的补丁VS10-KB2403277-x86.exe 安装之后可以使用UML生成代码
自Visual C++ 5.0 6.0 ...推出了 Visual C++ Feature Pack Beta 下载。这次的Feature Pack 是专门针对VC 库的一个扩充。扩充分为两方面,一方面是MFC 的界面控件库;另一方面是对ISO C++ Standard 2003 标准的扩充。
VS2010插件,用于从代码生成UML类图以及从UML类图生成代码,还有与TSF协作等功能。 Generate code from UML class diagrams. Create UML class diagrams from code. Import UML class, sequence, and use case ...