MFC单击菜单项如何弹出对话框?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC单击菜单项如何弹出对话框?相关的知识,希望对你有一定的参考价值。
单击insert—单击Resource—选中Dialog,然后点击New。在新建的对话框里右击
,选择
ClassWizard
,跳出一个对话框,在creat。。。情况下,选中OK!在name 输入你想要的名字,比如ab01,后点OK。再OK!
找到Resource的主对话框(IDD_MY....),双击,再双击上面的按钮,点ok!在//TOdo。。。下行输入如此代码:
ab01 t;
t.DoModal();
强调这里大小写要区分
然后 把文件拉到顶端
在#include "007Dlg.h"下面输入
#include "ab01.h"
然后运行 调试 即可 ! 参考技术A 在菜单上单击鼠标右键"建立类向导",添加COMMAND命令,然后在实现文件中弹出对话框:当然在之前你必须先创建对话框类,CDlg_Test.然后在实现文件中写下:
CDlg_Test
dlg;
dlg.DoModal();
即可!(当然要在头文件中添加
CDlg_Test
的引用
#include"Dlg_Test")本回答被提问者采纳
如何将消息映射添加到 MFC 中的动态菜单项
【中文标题】如何将消息映射添加到 MFC 中的动态菜单项【英文标题】:how to add message map to dynamic menu item in MFC 【发布时间】:2009-12-22 12:03:01 【问题描述】:我正在编写一个具有列表视图控件的 MFC。当用户右键单击任何项目时,我将生成一个动态菜单项,其中包含在列表视图中选择的文本。一切都正常显示,但我不知道如何将消息映射添加到该动态菜单项。
有什么帮助吗?
void CMyListDlg::OnRclickList(NMHDR* pNMHDR, LRESULT* pResult)
// TODO: Add your control notification handler code here
int nIndex = m_List.GetSelectionMark();
CString pString = m_List.GetItemText(nIndex,1);
CMenu menu, * pSubMenu;
int pos=0;
menu.LoadMenu(IDR_MENU1);
pSubMenu = menu.GetSubMenu (0);
pSubMenu->DeleteMenu(0,MF_BYPOSITION);
pSubMenu->InsertMenu(pos,MF_BYPOSITION,NULL,pString);
CPoint oPoint;
GetCursorPos (& oPoint);
pSubMenu-> TrackPopupMenu (TPM_LEFTALIGN, oPoint.x, oPoint.y, this);
*pResult = 0;
【问题讨论】:
【参考方案1】:此时您正在插入 ID = 0 (NULL) 的菜单项。这样你就无法确定按下了哪个命令。您必须为该项目分配一个ID,最简单的一个是
#define WM_MYMESSAGE WM_USER + 1
然后你像这样插入它:
pSubMenu->InsertMenu(pos,MF_BYPOSITION,WM_MYMESSAGE,pString);
如果您为您的窗口覆盖 OnCommand
,您的 ID 为 wParam
。
要真正弄清楚发生了什么,请将一些附加信息存储在另一个班级成员中,例如 m_nLastItemClicked
或......你明白了吗?!
【讨论】:
我不完全明白如何覆盖 onCommand,我的消息映射目前有这个 ON_COMMAND(IDM_FILE_OPEN, OnFileOpen) 您只需添加 ON_COMMAND(WM_MYMESSAGE, OnMyMessage) 处理程序,假设您在 InsertMenu 上使用了 WM_MYMESSAGE【参考方案2】:查看MFCIE sample,它会从用户的收藏夹中生成收藏夹菜单,并在点击收藏夹菜单项时导航到收藏夹网址。
【讨论】:
【参考方案3】:只需为您的类中的菜单项 ID 添加ON_COMMAND
(和ON_UPDATE_COMMAND_UI
,如有必要)处理程序。
【讨论】:
但这些是动态菜单项,我不知道它们的 ID 你知道可能的身份证号码的范围吗?在这种情况下,您可以添加 ON_COMMAND_RANGE 我只生成一个菜单项。我尝试使用 ON_COMMAND_RANGE,但可以理解如何将其用于未知(只有 1 个)动态菜单 @dwo 提供了正确答案,我没有意识到您正在插入带有 NULL 作为 ID 的菜单项。以上是关于MFC单击菜单项如何弹出对话框?的主要内容,如果未能解决你的问题,请参考以下文章