请问能否动态扩展菜单并相应菜单命令 我想做一个菜单,事先不知到这个菜单将会有多少项,也就是无法定义id,程序运行时根据需要自动扩展然后选中哪个菜单项就将菜单上的文字用对话框弹出来,请问能否实现! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以:CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDC_ABOUT, "关于1");pSysMenu->AppendMenu(MF_STRING, IDC_ABOUT+1, "关于2");pSysMenu->AppendMenu(MF_STRING, IDC_ABOUT+2, "关于3");pSysMenu->AppendMenu(MF_STRING, IDC_ABOUT+3, "关于4");}OnCommand(UINT nID, LPARAM lParam){ if( nID == IDC_ABOUT) MessageBox( "ABOUT1" ); if( nID == IDC_ABOUT+1) MessageBox( "ABOUT2" ); if( nID == IDC_ABOUT+2) MessageBox( "ABOUT3" ); if( nID == IDC_ABOUT+3) MessageBox( "ABOUT4" );... 我从一本书上找到了答案。#define USE_MSG_1 1001手工添加//cppON_COMMAND_RANGE(USE_MSG_1,USE_MSG_1+100,OnMenuSelect)ON_UPDATE_COMMAND_UI_RANGE (USE_MSG_1,USE_MSG_1+100,OnupdateMenu)//.hafx_msg void OnMenuSelect(UINT nID);afx_msg void OnupdateMenu(CCmdUI *pCmdUI);结果主窗口就能收到一个1001+X的值了,很好用 我正在做这样的一个练习,遇到这样的问题:关于 BOOL InsertMenu(UINT nPosition,UINT nFlags, UINT nIDNewItem=0,LPCTSTR lpszNewItem=NULL);的用法这个函数本来有三中用法吧,其中两种都无问题,问题出在这一种MyMenu.InsetMenu(ID_1,MF_BYCOMMAND | MF_POPUP, (UINT)subMenu.m_hMenu,"子菜单");Ddbug Assertion Faile我是跟着书本上的练习做的,就是这么一条语句出问题,请指教 标记字写的不对吧,你看看msdn 本人准备入手activex控件,大家帮我想想怎么搞 哪位帮我看看这个问题, 我超级菜! vc图像显示 请大家进来看一看 彩色位图分割 如何检测机器是否安装directx8.0? 用ADO怎样取得表中主键的信息 directshow 怎么把字幕合到播放视频里 读取文件到数组中,总是出错。。。。 请问IE里面的超时设置默认为多少秒? 高分征求sdk中对数据库中记录显示,修改的方法 vc中如何用函数清空文本文件
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDC_ABOUT, "关于1");
pSysMenu->AppendMenu(MF_STRING, IDC_ABOUT+1, "关于2");
pSysMenu->AppendMenu(MF_STRING, IDC_ABOUT+2, "关于3");
pSysMenu->AppendMenu(MF_STRING, IDC_ABOUT+3, "关于4");}
OnCommand(UINT nID, LPARAM lParam)
{
if( nID == IDC_ABOUT) MessageBox( "ABOUT1" );
if( nID == IDC_ABOUT+1) MessageBox( "ABOUT2" );
if( nID == IDC_ABOUT+2) MessageBox( "ABOUT3" );
if( nID == IDC_ABOUT+3) MessageBox( "ABOUT4" );
...
#define USE_MSG_1 1001
手工添加
//cpp
ON_COMMAND_RANGE(USE_MSG_1,USE_MSG_1+100,OnMenuSelect)
ON_UPDATE_COMMAND_UI_RANGE (USE_MSG_1,USE_MSG_1+100,OnupdateMenu)
//.h
afx_msg void OnMenuSelect(UINT nID);
afx_msg void OnupdateMenu(CCmdUI *pCmdUI);
结果主窗口就能收到一个1001+X的值了,很好用
关于 BOOL InsertMenu(UINT nPosition,UINT nFlags,
UINT nIDNewItem=0,LPCTSTR lpszNewItem=NULL);
的用法
这个函数本来有三中用法吧,其中两种都无问题,问题出在这一种
MyMenu.InsetMenu(ID_1,MF_BYCOMMAND | MF_POPUP, (UINT)subMenu.m_hMenu,"子菜单");
Ddbug Assertion Faile
我是跟着书本上的练习做的,就是这么一条语句出问题,请指教