MFC-5动态更新窗体菜单1

#include <afxwin.h>//必须加载此文件,该文件中定义了所有MFC相关的类
#include "resource.h"

class MyFrame:public CFrameWnd
{
private:
	CMenu MainMenu,*SysMenu,*PopMenu,*SubMenu;
	COLORREF color;
public:
	MyFrame()
	{
		Create(NULL,//产生标准窗口
			"Menu",//窗口标题
			WS_OVERLAPPEDWINDOW|WS_VISIBLE,//窗口样式
			rectDefault,//窗口大小
			NULL,//指向父窗口的指针
			MAKEINTRESOURCE(IDR_SMENU)//使用菜单的标志
			);
		SysMenu = GetSystemMenu(FALSE);//取得系统菜单
		SysMenu->AppendMenu(IDR_INSMENU,MF_SEPARATOR);
		SysMenu->AppendMenu(MF_STRING|MF_CHECKED,IDR_INSMENU,"insert by me");
		color = RGB(255,0,0);
	}

	afx_msg void OnSwitchMenu()
	{
		CMenu InsMenu;
		InsMenu.LoadMenu(IDR_INSMENU);
		MainMenu.LoadMenu(IDR_MAINMENU);
		MainMenu.AppendMenu(MF_POPUP,(UINT)InsMenu.m_hMenu,"Color Menu");
		SubMenu= MainMenu.GetSubMenu(1);
		SubMenu->AppendMenu(MF_SEPARATOR);
		SubMenu->InsertMenu(IDM_CreateItem,MF_BYCOMMAND|MF_STRING,IDM_InsertItem,"Insert a Item");
		SubMenu->InsertMenu(IDM_CreateItem,MF_BYCOMMAND|MF_POPUP,(UINT)InsMenu.m_hMenu,"insert a sub menu");
		//SetCheck();//设置应该被选择的菜单项
		SubMenu->InsertMenu(IDM_CreateItem,MF_BYCOMMAND|MF_SEPARATOR);
		InsMenu.Detach();//将菜单资源与菜单对象分离
		SetMenu(&MainMenu);
	}
	DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)
	ON_COMMAND(IDR_SwitchMenu,OnSwitchMenu)
END_MESSAGE_MAP()

class MyApp:public CWinApp
{
public:
		BOOL InitInstance()
		{
			CFrameWnd *Frame = new MyFrame;
			m_pMainWnd = Frame;
			Frame->ShowWindow(SW_SHOW);
			return true;
		}
} a_app;
#define IDR_MAINMENU                    101
#define IDR_SMENU                       102
#define IDR_POPMENU                     103
#define IDR_INSMENU                     104
#define ID_RED                          40001
#define ID_RED_GREEN                    40002
#define ID_RED_BLUE                     40003
#define ID_RED_BLACK                    40004
#define IDM_CREATEITEM                  40005
#define ID_FILE                         40005
#define ID_DYNAMICMENU                  40006
#define ID_Menu                         40007
#define ID_DYNAMICMENU_INSERTASUBMENU   40008
#define ID_COLORMENU                    40009
#define ID_COLORMENU_RED                40010
#define ID_COLORMENU_GREEN              40011
#define ID_COLORMENU_BLUE               40012
#define ID__POPITEM1                    40013
#define ID__POPITEM2                    40014
#define ID_FILE_EXIT                    40015
#define IDR_SwitchMenu                  40016
#define IDM_CreateItem                  40017
#define IDM_InsertItem                  40018
时间: 2024-10-14 22:30:41

MFC-5动态更新窗体菜单1的相关文章

jQuery实现的背景动态变化导航菜单效果_jquery

本文实例讲述了jQuery实现的背景动态变化导航菜单效果.分享给大家供大家参考.具体如下: 这里介绍一款使用jQuery插件制作完成的导航菜单,一大特点是,菜单的背景有动态效果,与使用的背景图片完全变换,动态效果是在鼠标悬停时出现,也就是把鼠标放在菜单上的时候,背景即开始滚动起来,看上去漂亮极了,而且兼容性也是相当不错的,推荐给网页设计者使用. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-bg-cha-menu-nav-code

WPF中动态更新TextBlock文字中的超链接,文本

1.------------------------------------------------------------------------- 修改超链接的文本文字: <TextBlock><Hyperlink> <TextBlock  x:Name="TextBlockNeedChange" Text="改变的文本" />             </Hyperlink></TextBlock>

iOS 利用 framework 进行动态更新

前言 目前 iOS 上的动态更新方案主要有以下 4 种: HTML 5 lua(wax)hotpatch react native framework 前面三种都是通过在应用内搭建一个运行环境来实现动态更新(HTML 5 是原生支持),在用户体验.与系统交互上有一定的限制,对开发者的要求也更高(至少得熟悉 lua 或者 js). 使用 framework 的方式来更新可以不依赖第三方库,使用原生的 OC/Swift 来开发,体验更好,开发成本也更低. 由于 Apple 不希望开发者绕过 App

使用函数递归实现基于php和MySQL的动态树型菜单

mysql|菜单|递归|动态|函数 树型菜单在很多桌面应用系统中都有非常广泛的应用,其主要优点是结构清晰,利于使用者非常清楚的知道目前自己所在的位置.但在web上树型菜单的应用因 为没有理想的现成组件可以拿过来直接使用,所以一般的情况下,程序员主要是通过JavaScript来实现一些简单的树型结构菜单,但这些菜单往往都是事先定 好各菜单项目,以及各菜单项目之间的层次关系,不利于扩充,一旦需要另一个菜单结构时,往往还需要重新编写,因此使用起来不是很方便. 经过对函数递归的研究,我发现这种树型菜单可

实现基于php和MySQL的动态树型菜单

树型菜单在很多桌面应用系统中都有非常广泛的应用,其主要优点是结构清晰,利于使用者非常清楚的知道目前自己所在的位置.但在web上树型菜单的应用因为没有理想的现成组件可以拿过来直接使用,所以一般的情况下,程序员主要是通过JavaScript来实现一些简单的树型结构菜单,但这些菜单往往都是事先定好各菜单项目,以及各菜单项目之间的层次关系,不利于扩充,一旦需要另一个菜单结构时,往往还需要重新编写,因此使用起来不是很方便.   经过对函数递归的研究,我发现这种树型菜单可以通过递归函数,使树型菜单的显示实现

通过XML数据交换实现XForm DataInstance的动态更新

XForms 是下一代 Web 表单的数据处理技术,它通过 Data Instance(数据实例),定义表单上所有和后端应用关联的数据信息,实现各种数据处理,实现了 MVC 中的数据 Modle 与 View 和 Controller 的清晰分离.本文首先 IBM Lotus Forms 进行简单介绍,然后结合作者的项目开发经验,提出了 XForms 在实际表单应用中的一个典型的动态数据交换的应用场景.针对该应用场景,将由浅入深的为大家介绍通过 XForm 的 XML 数据交换,实现 DataI

Ajax基础教程(4)- 实现基本Ajax技术 4.7 动态更新Web页面

如前所述,如果页面中只有一小部分需要修改,此时Ajax技术最适用.换句话说,以前实现一些用例时,为了更新页面中的一小部分总是需要使用完全页面刷新,这些用例就很适合采用Ajax技术. 考虑一个有单个页面的用例,用户向这个页面输入的信息要增加到列表中.在这个例子中,你会看到列出某个组织中员工的Web页面.页面最上面有3个输入框,分别接受员工的姓名.职位和部门.点击Add(增加)按钮,将员工的姓名.职位和部门数据提交到服务器,在这里将这些员工信息增加到数据库中. 当使用传统的Web应用技术时,服务器以

从XML中动态加载菜单的示例

本文配套源码 这个案例是一个基于VS2005的WinForm菜单控件的例子,功能是从XML中动态加载菜单数据到MenuTrip控件上.这个案例中用到了XML,反射之类的技术.当然实用价值有限,仅供学习参考之用. 首先创建一个WinForm项目,在Form1上放置一个MenuTrip控件,将其命名为MainMenu. 在项目中添加一个XML文件,命名为Menu.xml,代码如下: MenuXml 1<?xml version="1.0" encoding="utf-8&q

WF中的动态更新

关于动态更新 在开发工作流时,我们会在工作流设计器中通过拖拽活动,设置属性等等来设计我们的工作流,我们 希望我们在设计时定义好的工作流在运行时是不变的.但在实际中我们往往需要在运行时来改变工作流 的架构,例如我们已经定义好的流程在没有结束时我们需要增加一个流程点,这个时候我们就需要使用 动态更新来现实.在WF中我们也可以对正在运行的工作流实例添加删除活动,修改活动,规则条件等. 当动态更新应用到工作流实例上时,只影响当前的工作流实例.其他的和将来的都不受影响,仍然使用 原始的工作流定义. 动态更