VC++ 动态添加菜单实例—基于Visual Studio 2010

合集下载

VisualStudio2010为CC++添加外部库的方法

VisualStudio2010为CC++添加外部库的方法

在Visual Studio 2010中为c++添加外部库的方法
在V isual Studio 2010中添加外部库的方法稍微与2008等以前的版本有点改变。

在这里我以导入lua的库文件与头文件来介绍。

Visual Studio 2010版本下是这样的:
1.选择Project 然后选择Property 于是出现如下对话框:
2.选择Configuration Properties下的VC++Directories:,然后在右边的Include Directories 指定包含文件Include(一般里面是一些头文件)文件,例如我要指定的目录是:
C:\Program Files\Lua\5.1\Include
3.配置完VC++Directories后,就配置Linker,在右边的Additional Library Directories 里指定库文件lib(一般里面是一些.lib文件),例如我要指定的目录是:
C:\Program Files\Lua\5.1\Lib
4.选择Linker下的Input,然后在右边的Addtitional Dependences 里指定你使用的库文件,例如我要用的是:lua51.lib;lua
5.1.lib
到这里就相关的配置就基本完成了。

VC++控件使用——菜单

VC++控件使用——菜单

VC++控件使⽤——菜单VC++简单应⽤指南四——菜单⼀、菜单资源设计1.打开⼯作区窗⼝,在Resource View选项卡中,右击,选择插⼊2.打开插⼊资源对话框,选择Menu节点,点击新建3.打开菜单资源设计窗⼝,再按Enter键,显⽰菜单资源属性窗⼝4.在菜单资源属性窗⼝中填写标题5.选中菜单标题填写的⼦菜单,并点击Enter 键或者双击6.添加分割线,在菜单资源属性中点选分隔符(Separator)7.⼦菜单添加弹出菜单,菜单资源属性中点选弹出(Pop-up)8.给菜单添加快捷键,在标题后添加“&+字母”,则Alt+字母就是快捷键⼆、菜单项的命令处理1.命令设置在类向导中;打开类向导,点选Message Maps选项卡2.打开Message Maps选项卡,Class name对应对话框;Object IDs对应菜单项ID;Messages 对应事件:COMMAND单击事件3.选择COMMAND单击事件,点击Add Function,弹出创建窗⼝,点击OK4.在类向导中点击Edit Code按钮,显⽰命令处理函数三、动态创建菜单1.创建基于对话框的应⽤程序2.头⽂件中声明⼀个CMenu类对象m_Menu3.1在FileView选项卡中打开资源头⽂件(Resource.h),定义命令ID3.2在资源头⽂件中添加的代码如下#define ID_MENUCAT 1001#define ID_MENUDOG 1002#define ID_MENUMONKEY 10034.1在对话框OnInitDialog⽅法中创建菜单 4.2创建菜单程序m_Menu.CreateMenu();CMenu m_PopMenu;m_PopMenu.CreatePopupMenu();m_Menu.AppendMenu(MF_POPUP,(UINT)m_PopMenu,m_hMenu,"动物");m_PopMenu.AppendMenu(MF_STRING,ID_MENUCAT,"猫");m_PopMenu.AppendMenu(MF_STRING,ID_MENUDOG,"狗");m_PopMenu.AppendMenu(MF_STRING,ID_MENUMONKEY,"猴⼦");m_PopMenu.Detach();SetMenu(&m_Menu);5.2程序5.1在对话框的头⽂件中声明菜单的消息处理函数afx_msg void OnMenucat();afx_msg void OnMenudog();afx_msg void OnMenumonkey();6.2程序6.1在对话框源⽂件中添加消息映射宏,将命令ID关联到消息处理函数中ON_COMMAND(ID_MENUCAT,OnMenucat)ON_COMMAND(ID_MENUDOG,OnMenudog)ON_COMMAND(ID_MENUMONKEY,OnMenumonkey) 7.1在对话框源⽂件中添加消息处理函数7.2程序void CMy124Dlg::OnMenucat(){MessageBox("猫");}void CMy124Dlg::OnMenudog(){MessageBox("狗");}void CMy124Dlg::OnMenumonkey(){MessageBox("猴⼦");}四、创建弹出式菜单1.创建基于对话框的应⽤程序2.在资源选项卡中右击,选择插⼊,在插⼊资源窗⼝中选择Menu 点击新建3.对菜单进⾏编辑4.在对话框头⽂件中声明⼀个CMenu类对象m_Menu6.在类视图选项卡中,右击对话框程序节点,然后选择Add Windows Message Handler命令,在弹出的对话框中选择WM_RBUTTONUP 事件,点击Add Handler ,点击确定:⿏标右键抬起触发m_Menu.LoadMenu(IDR_MENU1);7.1在⿏标右键抬起事件处理函数中添加代码7.2程序CMenu *pMenu =m_Menu.GetSubMenu(0);CRect rect;ClientToScreen(&point);rect.top = point.x;rect.left = point.y;pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,rect.top,rect.left,this,&rect);8.1给弹出菜单中添加⽂件增加单击事件8.2程序MessageBox("成功");五、创建图标菜单1.创建基于对话框的应⽤程序2.在⼯作区窗⼝选择Recource View选项卡,右击⼀个节点,弹出快捷菜单,点击Insert命令3.在插⼊资源窗⼝,选择菜单资源,插⼊并编辑4.新建⼀个类;打开类向导,创建类名为CMenuIcon,5.打开CMenuIcon类的头⽂件,为该类添加⼀个基类Cmenu6.1在CMenuIcon头⽂件中定义⼀个数据结6.2程序构,⽤来保存菜单信息struct CMenuItem{CString m_ItemText;int m_IconIndex;int m_ItemID;};int m_Index;int m_IconIndex;CImageList m_ImageList;8.2程序8.1在CMenuIcon类的构造函数中初始化图像列表m_Index=0;m_IconIndex=0;m_ImageList.Create(16,16,ILC_COLOR24|ILC_MASK,0,0);m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON6));9.1在CMenuIcon类中添加AttatchMenu⽅法9.2AttatchMenu⽅法中添加程序9.3程序LoadMenu(m_uID);return TRUE;10.210.1在CMenuIcon类中添加MenuItem⽅法,并添加程序BOOL CMenuIcon::MenuItem(CMenu *pMenu){if(pMenu!=NULL){int m_Count=pMenu->GetMenuItemCount();for(int i=0;ipMenu->GetMenuString(i,m_ItemLists[m_Index].m_ItemText,MF_B YPOSITION);int m_itemID=pMenu->GetMenuItemID(i);m_ItemLists[m_Index].m_ItemID=m_itemID;if(m_itemID>0){m_ItemLists[m_Index].m_IconIndex=m_IconIndex;m_IconIndex+=1;}RING,m_ItemLists[m_Index].m_ItemID,(LPSTR)&(m_ItemLists[m_Index])); m_Index+=1;CMenu *m_SubMenu=pMenu->GetSubMenu(i);if(m_SubMenu){MenuItem(m_SubMenu);}}} return TRUE;}11.2程序11.1重载CMenuIcon类中MeasureItem虚拟⽅法,计算菜单项的⼤⼩1.在类上⽅右击,选择新建成员函数,并创建voidCMenuIcon::MeasureItem(LPMEASUREITEMSTRUCT IpStruct){if(IpStruct->CtlType==ODT_MENU){IpStruct->itemHeight=ITEMHEIGHT;IpStruct->itemWidth=ITEMWIDTH;CMenuItem* m_item;m_item=(CMenuItem*)IpStruct->itemData;IpStruct->itemWidth=((CMenuItem*)IpStruct->itemData)->m_ItemText.GetLength()*10;if(m_item->m_ItemID==0){IpStruct->itemHeight=2;}}}员函数,绘制菜单项⽂本void CMenuIcon::DrawItemText(CDC *pDC,LPSTR Str, CRect Rect){pDC->DrawText(Str,Rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);13.2程序13.1在CMenuIcon类中添加DrawItemIcon成员函数,绘制菜单项图标void CMenuIcon::DrawItemIcon(CDC *pDC, CRect Rect, int Icon){m_ImageList.Draw(pDC,Icon,CPoint(Rect.left+2,Rect.top+4),ILD_TRANSPARENT);}14.2程序14.1在CMenuIcon类中添加DrawSeparater成员函数,绘制分隔条void CMenuIcon::DrawSeparater(CDC *pDC, CRect Rect){pDC->Draw3dRect(Rect,RGB(255,0,255),RGB(255,0,255));}15.2程序15.1在CMenuIcon类中添加DrawTopMenu成员函数,绘制顶层菜单void CMenuIcon::DrawTopMenu(CDC *pDC, CRect Rect, BOOL Selected){if(Selected){pDC->Rectangle(&Rect);Rect.DeflateRect(1,1);pDC->FillSolidRect(Rect,RGB(192,170,220));}else{pDC->FillSolidRect(&Rect,RGB(192,192,192));}成员函数,绘制普通菜单项void CMenuIcon::DrawComMenu(CDC *pDC, CRect Rect, BOOL Selected) {if(Selected){pDC->Rectangle(&Rect);Rect.DeflateRect(1,1);pDC->FillSolidRect(Rect,RGB(255,0,0));}else{pDC->FillSolidRect(&Rect,RGB(255,255,255));}}17.2程序17.1重载CMenuIcon类中DrawItem虚拟⽅法,根据菜单项的不同状态绘制菜单项void CMenuIcon::DrawItem(LPDRAWITEMSTRUCT IpStruct){ if(IpStruct->CtlType==ODT_MENU) {if(IpStruct->itemData==NULL)return;unsigned int m_state=IpStruct->itemState;CDC* pDC=CDC::FromHandle(IpStruct->hDC);CString str =((CMenuItem*)(IpStruct->itemData))->m_ItemText;LPSTR m_str = str.GetBuffer(str.GetLength());intm_itemID=((CMenuItem*)(IpStruct->itemData))->m_ItemID;intm_itemicon=((CMenuItem*)(IpStruct->itemData))->m_IconIndex;CRect m_rect=IpStruct->rcItem;pDC->SetBkMode(TRANSPARENT);switch(m_itemID) {case -1: {DrawTopMenu(pDC,m_rect,(m_state&ODS_SELECTED)||(mDrawItemText(pDC,m_str,m_rect);break; }case 0: {DrawSeparater(pDC,m_rect);break;}default: {DrawComMenu(pDC,m_rect,m_state&ODS_SELECTED);DrawItemText(pDC,m_str,m_rect);DrawItemIcon(pDC,m_rect,m_itemicon);break; }}}}18.在对话框头⽂件中声明CMenuIcon类对象m_Menu 19.在对话框OnInitDialog⽅法中加载菜单资源,并设置菜单项m_Menu.AttatchMenu(IDR_MENU1);m_Menu.MenuItem(&m_Menu);this->SetMenu(&m_Menu);20重载对话框的OnDrawItem⽅法,在该⽅法中体⽤菜单类中DrawItem⽅法21重载对话框的OnMeasureItem⽅法,在该⽅法中体⽤菜单类中MeasureItem⽅法22.屏蔽message_map 23.析构函数中添加程序m_ImageList.Detach();。

VC++中动态生成菜单

VC++中动态生成菜单

VC++中动态生成菜单
梁海珍
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2009(000)017
【摘要】通过两个实例,在VC++6.0中实现动态生成菜单,解决菜单项固定与变化两种情况下的菜单项的动态添加.着重讲解菜单项变化时,读取数据库中记录作为菜单项.并根据菜单项命令动态生成控件.
【总页数】5页(P11-14,22)
【作者】梁海珍
【作者单位】(Missing)
【正文语种】中文
【中图分类】TP3
【相关文献】
1.Delphi中动态生成QQ面板式菜单 [J], 陈振庆
2.用VC++实现自画式菜单 [J], 季坚波
3.一种基于VC++的动态生成控制按钮的方法 [J], 李刚;赵宗涛;李燕
4.利用VC++和Ultraedit修改Windows开始菜单 [J], 李如忠
5.一种用VC++动态加入和删除菜单的方法 [J], 黄玉英;张玲;张拴生;王卫国;刘继东
因版权原因,仅展示原文概要,查看原文内容请购买。

VC++中动态生成菜单技巧

VC++中动态生成菜单技巧

VC++中动态⽣成菜单技巧⼀.前⾔在实际运⽤中,经常需要根据操作来增减菜单和菜单项。

在VC++开发环境下,动态⽣成菜单的⽅法有多种。

例如:可以利⽤资源编辑器创建菜单资源,然后在程序运⾏中动态加⼊菜单,这种动态⽣成菜单的⽅法⽐较常见,运⽤⽐较多。

⽤这种⽅法动态增加菜单时,⾸先需要在Resource.h中添加菜单ID;由于是动态⽣成的菜单选项,所以要实现它的功能就不能在ClassWizard中映射函数了,需要在头⽂件中⼿动添加消息函数原型,在代码⽂件中⼿动添加消息映射和添加消息响应函数。

动态⽣成菜单的另⼀种⽅法,不能事先对每个菜单ID进⾏定义,⽐如从数据库中读出的每条记录内容动态添加为菜单项,菜单项的数量不是固定的,可以在动态添加菜单项时使菜单项的ID顺序递增;对菜单项的消息响应不能事先写出响应代码,⽽需要根据菜单ID动态响应函数。

⼆.菜单相关知识2.1 常⽤菜单操作函数⽂中涉及到的VC++中常见的菜单只要操作如下:GetMenu() - 获得与框架窗⼝相链接的菜单。

InsertMenu() – 在指定位置插⼊新的菜单项,其他的选项向下移。

GetSubMenu() – 获得⼦菜单指针。

GetMenuItemCount() – 得到菜单下的菜单项的个数。

AppendMenu() – 添加⼀个新菜单。

GetMenuString() – 获得指定菜单项的标记。

DeleteMenu() – 删除菜单。

2.2 菜单消息处理Windows消息分为3类:标准Windows消息、命令消息、控件通知消息。

标准消息指除WM_COMMAND之外,所以以WM_前缀开始的消息,包括键盘消息和窗⼝消息等;命令消息,指来⾃菜单、快捷键、⼯具栏按钮等⽤户界⾯对象发出的WM_COMMAND消息。

其中,在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。

控件通知消息,是对控件操作⽽引起的消息,是控件和⼦窗⼝向其⽗窗⼝发出的WM_COMMAND通知消息。

C#2010 创建菜单栏

C#2010  创建菜单栏

C#2010 创建菜单栏菜单栏是Windows窗体程序的重要组成部分,其作用是为Windows窗体程序提供分组的命令选项,供用户进行选择和执行。

开发者需要为每一个命令选项添加相应的代码,实现命令的功能。

以Windows操作系统自带的【记事本】程序为例,其就包含【文件】、【编辑】、【格式】、【查看】和【帮助】等5个菜单栏,如图9-5所示。

图9-5 带菜单栏的【记事本】程序在Visual Studio 2010中,使用MenuStrip控件定义应用程序的菜单栏,该控件可以对应用程序命令分组处理,使其更容易被访问。

1.创建命令菜单控件为应用程序创建菜单栏,可以先创建窗体,然后再在【工具箱】中选择【菜单和工具栏】选项卡,选择【MenuStrip】选项,如图9-6所示。

图9-6 插入菜单栏单击菜单栏中的第一个菜单输入文本域,然后即可输入第一组命令的名称,如图9-7所示。

图9-7 编辑菜单组名称在编辑了菜单组的名称之后,可以选择该菜单组的名称,此时,Visual Studio 将弹出该菜单,显示预设的一个空项目。

与编辑菜单组类似,直接选择该项目,即可输入项目的名称,如图9-8所示。

图9-8 输入菜单项名称在设置菜单项名称后用户既可以在菜单项右侧添加关于该菜单的子菜单,也可以在菜单项下方添加新的菜单项,如图9-9所示。

图9-9 添加多个菜单项在Visual Studio中,开发者除了可以将命令添加到菜单栏中,还可以添加几种复合控件。

将鼠标光标置于新菜单项名称上方,此时该文本域中将显示一个下拉菜单的按钮。

单击此按钮,即可在弹出的菜单中选择插入的控件类型,如图9-10和图9-11所示。

图9-10 单击下拉箭头图9-11 选择插入的控件在图9-11的菜单中,包含4种控件类型,其作用如下所示。

表9-1 菜单中允许添加的控件2.设置菜单属性作为一种可视化的窗体控件,在Visual Studio中,开发者可以像定义其他控件一样为菜单项设置属性。

轻松学Visual C++之菜单

轻松学Visual C++之菜单

6.2.6 添加右键菜单
Windows系统中右键菜单无处不在,最典型的就是在 桌面单击右键,然后进行刷新。文件的拷贝粘贴都 会用到右键菜单。这一小节我们将在对话框程序中 添加一个右键菜单。
6.3 动态菜单操作
在程序运行期间,或许会根据用户பைடு நூலகம்要来添加、插 入、删除子菜单或菜单项。这时候就需要对菜单进 行动态操作。这一节就菜单项的添加、插入、删除 进行简要介绍。
6.1.1 菜单的构成
菜单总体来说是由顶层菜单、子菜单还有菜单项构 成。顶层菜单通常为子菜单形式,子菜单即为弹出 式菜单。弹出式菜单不能响应单击命令,只有子菜 单中的菜单项才能为其添加命令消息响应函数。菜 单的大体构成,如下图所示。
顶层菜单 子菜单
菜单项
6.1.2 为对话框程序添加菜单资源
创建一个名为Test1的对话框应用程序,并为其添加 菜单资源。添加的菜单资源和应用程序还无任何关 联,需要在对话框属性中进行关联。
第6章 菜单
菜单栏是构成Windows应用程序界面的主要元素之一。 大多数应用程序都提供菜单栏的操作。菜单栏集中 了一个应用程序所有潜在的功能和操作,使软件具 有很强的可操作性。本章主要介绍菜单的命令响应、 基本操作、动态创建等内容。
6.1 构建菜单
上一章介绍为对话框中各控件添加消息响应函数。 因为来自菜单、加速键、工具栏按钮的消息是以 WM_COMMAND呈现的,所以我们称之为命令消息。 这一节主要介绍命令消息响应函数和命令消息在各 类中的响应顺序。
6.3.3 删除子菜单项
删除子菜单项相比添加和插入要简单一些。在没有 添加“查看”子菜单的情况下,实现删除“编辑” 子菜单。
6.3.4 动态添加菜单项命令消息响 应函数

Visual C++应用开发与实践第3章 菜单、工具栏和状态栏


3.1.1 菜单资源设计
在Visual C++中,用户可以通过工作区方便地设计菜单资源。下 面介绍如何设计菜单资源。 (1)在工作区的ResourceView选项卡中,用鼠标右键单击某个节点, 将弹出一个快捷菜单,如图所示。
鼠标右键单击该节点, 在弹出的快捷菜单中选 择“Insert”菜单项
工作区的资源视图窗口
(2)在该窗口的Messages列表框中双击COMMAND,将打开“添加成 员函数”窗口,如图所示
(3)单击OK按钮即可编写命令消息处理代码,代码编辑器中将显示 消息处理函数,如图3-22所示。
(4)运行程序时,当用户单击菜单项时,将执行其命令消息处理函 数。
3.1.3
菜单项的更新机制
在使用类向导为菜单添加命令处理函数时,发现菜单除了COMMAND 消息外,还有一个UPDATE_COMMAND_UI消息,该消息是“更新命令用户 接口消息”。菜单项的状态维护就依赖于UPDATE_COMMAND_UI消息。下 面就来看看如何使用这个消息。其具体操作步骤如下。 (1)打开一个基于单文档的应用程序,运行程序后发现“编辑”菜单 下的菜单项都不可用,如图所示。
(2)如果要使“编辑”菜单下的菜单项都可用,就要为相应的菜单项 处理UPDATE_COMMAND_UI消息,以“撤销”菜单项为例,打开类向导, 选择 Message Maps 选项卡,在 Class name 下拉列表中选择 CMainFrame 类;在 Object Ids 列表框中选择“撤销”菜单项 ID_EDIT_UNDO ;在 Message列表框中选择UPDATE_COMMAND_UI项,如图所示。
(5)运行程序,效果如图3-25所示。
3.1.4
菜单类的主要方法

vs2010创建和使用动态链接库(dll)

vs2010创建和使用动态链接库(dll)1、打开Microsoft Visual Studio 2010,选择File->New->Project。

2、在New Project中选择Installed Templates->VisualC++->Win32。

3、选择Win32 Console Application,设置名称:simpledll,设置解决方案名:zdddll。

4、单击OK,在出现的Win32 Application Wizard的Overview 对话框中点击Next。

5、在Application Settings中,选择Application type下的DLL。

6、勾选Additional options下的Empty project。

7、单击Finish创建项目。

向动态链接库添加类:1、添加新类头文件。

右键单击simpledll项目,Add->New Item,选择Header File(.h),设置名称为simpledll,单击Add。

2、添加新类源文件。

右键单击simpledll项目,Add->New Item,选择C++ File(.cpp),设置名称为simpledll,单击Add。

3、为新类添加内容。

内容如下:头文件simpledll.h:[html] view plain copy print?//------------------ simpledll.h---------------- #pragma once; //该宏完成在dll项目内部使用__declspec(dllexport)导出//在dll项目外部使用时,用__declspec(dllimport)导入//宏DLL_IMPLEMENT在simpledll.cpp中定义#ifdef DLL_IMPLEMENT #define DLL_API __declspec(dllexport) #else #define DLL_API__declspec(dllimport) #endif namespace zdd { //导出类class DLL_API SimpleDll { public: SimpleDll(); ~SimpleDll(); int add(int x, int y); //简单方法}; }源文件simpledll.cpp:[cpp] view plain copy print?//------------------ simpledll.cpp---------------- //注意此处的宏定义需要写在#include "simpledll.h"之前//以完成在dll项目内部使用__declspec(dllexport)导出//在dll项目外部使用时,用__declspec(dllimport)导入#define DLL_IMPLEMENT#include "simpledll.h" namespace zdd{ SimpleDll::SimpleDll() { } SimpleDll::~SimpleDll() { } intSimpleDll::add(int x, int y) { returnx+y; } } 4、完成后点击Build->Build Solution,生成解决方案。

VC++ 动态添加菜单实例—基于Visual Studio 2010

VC++ 学习笔记—基于Visual Studio 2010 菜单操作之动态添加菜单Author:WukkCreate Date:10/27/2011Version:1.0.0Email:11046064@标题: VC++ 2010动态添加菜单作者:Wukk创建日期:2011-10-27上次更新日期: 2011-10-27版本:1.0(初稿)文档状态修订文档历史记录日期版本说明作者2011-10-27 初稿需要动手实践Wukk2011-**-** 1.0 ****2011-**-** 2.0 ****VC++ 2010动态添加菜单表格1-1 开发环境介绍详细开发过程如下:启动Visual Studio 2010,点击“文件”-->“新建”-->“项目”,在左侧“已安装的模板视图”中选择“Visual C++ ” 节点,选择“MFC”,在右侧视图中选择“MFC应用程序”,编写项目的名称为:AddMenu,如下图所示:点击“确定”按钮,进入“MFC 应用程序向导”页面,点击左侧的“应用程序类型”,在右侧点击“单个文档”单选按钮,选择“项目类型”为“MFC标准”,并将下边的“使用 Unicode 库”前边的对勾去掉(否则在程序中输入中文字符串后,编译时会遇到问题),如下图所示:点击左侧的“用户界面功能”,在右侧的“命令栏(菜单/工具栏/功能区)”中选用“使用经典菜单”,如图所示:其他保持默认,点击“完成”按钮完成项目的创建。

然后在项目的“资源视图”中点击“String table ”节点,资源视图如下图所示:双击“String table”,打开“String table”窗口,添加如下字符串,如图所示:接下来,切换到“类视图”,单击选中“CAddMenuView”类,如下图所示:右键单击该类,打开属性视图,在“消息”选项下选择“WM_RBUTTONDOWN”消息,在右侧添加“OnRButtonDown”函数,如图所示:系统自动定位到添加函数的代码处,在此位置编写代码如下:接下来,为新添加的菜单项添加消息映射,在消息映射处添加菜单ID和响应函数映射,代码如下:在头文件中添加菜单响应函数的定义,如图所示:接下来编写菜单响应函数,代码如下:最后,点击“生成”-->“生成解决方案”,生成成功后,点击“调试”-->“启动调试”,运行项目,在视图右键点击鼠标右键,效果如下所示:点击“确定”按钮,点击菜单栏的视图菜单,看到下拉菜单中出现了动态添加的“动态菜单”,如下图所示:点击“动态菜单”,执行响应函数,看到效果如下:至此,动态添加菜单功能实例结束。

VisualC++2010创建Ribbon界面

无幻潜心成魔.....V isual C++ 2010创建Ribbon界面分类: 2.2 MFC9.0版本 2010-01-29 09:55 3351人阅读 评论(26) 收藏举报创建MFC应用程序项目创建MFC应用程序项目实际上,Ribbon界面(Office 2007风格的界面)的开发早在2008年就随着Visual C++ Feature Pack被引入到Visual Studio 2008中。

在即将到来的Visual Studio 2010中,Ribbon界面的开发更是得到了原生的支持,使得Ribbon界面的开发更加简便高效。

首先,我们启动Visual Studio 2010,创建一个基于MFC的应用程序,项目模板我们选择“MFC Application”:图2 创建MFC应用程序在接下来的“MFC应用程序向导”中,我们就可以对项目的可视化风格进行选择和配置。

Visual Studio 2010支持MFC风格、标准的Windows风格,Visual Studio 2005风格和Office 2007风格。

而这里的Office 2007风格,就是我们要创建的Ribbon界面:图3 设置Ribbon界面风格在接下来的向导页中,我们可以选择命令栏(工具栏。

菜单栏)的样式,这里我们当然选择“Use a ribbon”了。

当然,为了跟旧有的系统保持兼容,Visual Studio 2010也支持传统的命令式界面,如果你的用户比较保守,想继续使用传统的菜单式界面,我们可以选择“Use a menu bar and toolbar”:图4 选择命令栏的风格为了支持丰富的Office 2007界面风格,MFC默认情况下为MFC文档应用程序添加了类似Outlook风格的导航面板(Navigation pane)和标题条(Caption bar)。

这两者并不是我们关注的重点,为了更好的展示Ribbon界面,我们这里就去掉这两个多余的面板:图5 去掉多余的界面元素到这里,针对新项目的设置就完成了,点击“Finish”按钮关闭应用程序向导,Visual Studio 2010就会按照我们的设置创建相应的MFC应用程序解决方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC++ 学习笔记—基于Visual Studio 2010 菜单操作之
动态添加菜单
Author:Wukk
Create Date:10/27/2011
Version:1.0.0
Email:11046064@
标题: VC++ 2010动态添加菜单
作者:Wukk
创建日期:2011-10-27
上次更新日期: 2011-10-27
版本:1.0(初稿)
文档状态
修订文档历史记录
日期版本说明作者2011-10-27 初稿需要动手实践Wukk
2011-**-** 1.0 ****
2011-**-** 2.0 ****
VC++ 2010动态添加菜单
表格1-1 开发环境介绍
详细开发过程如下:
启动Visual Studio 2010,点击“文件”-->“新建”-->“项目”,在左侧“已安装的模板视图”中选择“Visual C++ ” 节点,选择“MFC”,在右侧视图中选择“MFC应用程序”,编写项目的名称为:AddMenu,如下图所示:
点击“确定”按钮,进入“MFC 应用程序向导”页面,点击左侧的“应用程序类型”,在右侧点击“单个文档”单选按钮,选择“项目类型”为“MFC标准”,并将下边的“使用 Unicode 库”前边的对勾去掉(否则在程序中输入中文字符串后,编译时会遇到问题),如下图所示:
点击左侧的“用户界面功能”,在右侧的“命令栏(菜单/工具栏/功能区)”中选用“使用经典菜单”,如图所示:
其他保持默认,点击“完成”按钮完成项目的创建。

然后在项目的“资源视图”中点击“String table ”节点,资源视图如下图所示:
双击“String table”,打开“String table”窗口,添加如下字符串,如图所示:
接下来,切换到“类视图”,单击选中“CAddMenuView”类,如下图所示:
右键单击该类,打开属性视图,在“消息”选项下选择“WM_RBUTTONDOWN”消息,在右侧添加“OnRButtonDown”函数,如图所示:
系统自动定位到添加函数的代码处,在此位置编写代码如下:
接下来,为新添加的菜单项添加消息映射,在消息映射处添加菜单ID和响应函数映射,代码如下:
在头文件中添加菜单响应函数的定义,如图所示:
接下来编写菜单响应函数,代码如下:
最后,点击“生成”-->“生成解决方案”,生成成功后,点击“调试”-->“启动调试”,运行项目,在视图右键点击鼠标右键,效果如下所示:
点击“确定”按钮,点击菜单栏的视图菜单,看到下拉菜单中出现了动态添加的“动态菜单”,如下图所示:
点击“动态菜单”,执行响应函数,看到效果如下:
至此,动态添加菜单功能实例结束。

相关文档
最新文档