[心得]关于如何向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的。这是你的对话框菜单上的快捷键就能正常使用了!

...全文
571 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过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
);

迷惑不解啊,为什么添加了状态栏之后,就能够使用菜单快捷键了???????
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-08-23 11:46
社区公告
暂无公告