[心得]关于如何向MFC对话框添加菜单

caesar22 2005-08-23 11:46:35
这的确是个老话题。

资源编辑器里敲打出一个菜单。

然后要么直接指定其ID到对话框的菜单属性中。

要么就在对话框的OnInitDialog成员函数中添加如下代码:
CMenu *pMenu = new CMenu;
BOOL ret = pMenu->LoadMenu(菜单ID);
SetMenu(pMenu);

可是假如你是在visual studio .net 2003中这么做,结果得到的对话框菜单的顶层菜单快捷键是无效的。譬如文件菜单:"文件(&F)"。在程序执行中,你Alt+F,根本就无法打开文件菜单的。

为什么会这样,研究过MFC的大牛们可以说说的。

要解决这个问题很简单:先在VC++6中做好一个带有菜单的对话框工程,然后在VS.net 2003中打开,它会自动的把VC++6的代码转换为VC++7的。这是你的对话框菜单上的快捷键就能正常使用了!

...全文
605 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljyshadow 2005-09-27
  • 打赏
  • 举报
回复
我用的是visual stdio2003.net,照上面的方法添加菜单后没出现问题,按Alt+F键可以打开顶层菜单的!
2shcm 2005-08-23
  • 打赏
  • 举报
回复
不错,赞一个!
caesar22 2005-08-23
  • 打赏
  • 举报
回复
不是不错,而是大错特错。

我刚刚发现,快捷键之所以能使用的原因在于,我在OnInitDialog成员函数中添加了状态条。

如下:
//为对话框添加状态栏
HWND hDlg=GetSafeHwnd();
HINSTANCE hInstance=AfxGetInstanceHandle();
hStatusWindow=CreateStatusWindow(WS_CHILD|WS_VISIBLE|WS_BORDER|WS_MAXIMIZEBOX,
TEXT(""), //显示在状态栏上的信息
hDlg, //父窗口句柄
IDS_STATUS //预定义的资源ID
);

迷惑不解啊,为什么添加了状态栏之后,就能够使用菜单快捷键了???????

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧