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

简介: #include //必须加载此文件,该文件中定义了所有MFC相关的类 #include "resource.h" class MyFrame:public CFrameWnd { private: CMenu MainMenu,*SysMenu,*PopMenu,*SubMenu;...
#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
目录
相关文章
14 MFC - 普通按钮 CButton
14 MFC - 普通按钮 CButton
47 0
|
C++
基于MFC实现选项卡控件练习
基于MFC实现选项卡控件练习
73 0
基于MFC实现选项卡控件练习
|
C# 索引
WPF实用指南二:移除窗体的图标
原文:WPF实用指南二:移除窗体的图标 WPF没有提供任何功能来移除窗体上的icon图标。一般的做法是设置一个空白的图标,如下图1: 这种做法在窗体边框与标题之间仍然会保留一片空白。
1264 0
|
区块链 C#
C# 窗体修改应用程序图标
C# 窗体修改应用程序图标
386 0
C# 窗体修改应用程序图标
|
程序员 C语言
Qt编写自定义控件48-面板窗体控件
一、前言 很多时候需要有一个控件,能够替代容器控件,自动容纳多个widget,自适应宽高,然后提供滚动条功能,这就必然需要用到QScrollArea控件,可设置各个子面板的间距等,也在很多系统中用到,比如温湿度设备面板,有几百个温湿度设备,需要一个容器放置,自动产生滚动条,可以设置面板的固定宽高或者自适应拉伸,其实就是放了表格布局+弹簧来设置。
1281 0
|
测试技术
MFC中为菜单或按钮添加快捷键功能
1、新建一快捷键资源,ACCELERATOR,关联相应的ID号,下图所示中,其中,第一个ID为自定义快捷键ID,按CTRL+R,此时响应该ID以应的消息响应函数, 第二个ID为菜单ID,此时按CTRL+V,调出ID_NETWORK_PING菜单对应的响应函数。
1388 0
MFC设置窗体大小SetWindowPos
SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE);     表示不考虑(0,0),仅仅将大小改为200x300,位置不变    SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE);    表示不考虑200X300,只是把位置挪到(0,0).
4130 0