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 |
分类:
c/c++/mfc/QT
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统