还有另外一个弹出菜单的问题:
这个是在网上找的例子,好像是不用加载菜单资源,觉得好一点
void CCollDlg::OnRclickCollList(NMHDR* pNMHDR, LRESULT* pResult) //右键单击列表项处理函数
{
if(m_CollList.GetItemCount())
{
POINT point;
GetCursorPos(&point);
CPopupMenu cMenu;
cMenu.CreatePopupMenu();
cMenu.AppendMenu(MF_STRING, ID_MENU_DELE, _T("删除")); //问题是这个ID(原来是另外的ID是可以到达消息处理函数)到我改了之后就那弹出的菜单项总是变灰!
cMenu.LoadToolBarResource(IDR_TABVIEW_MENU); //这个ID不是菜单资源!我在Resource Symbols对话框里查过,是有该IDR_TABVIEW_MENU存在,但是标记显示是没有使用的
cMenu.RemapMenu(&cMenu);
cMenu.EnableMenuItems(&cMenu, AfxGetMainWnd());
::SetMenuDefaultItem(cMenu.m_hMenu, 0, TRUE);
cMenu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
cMenu.DestroyMenu();
*pResult = 0;
}
}我在加了个消息处理函数来处理菜单项事件
ON_COMMAND(ID_MENU_DELE, OnMenuDele) //就加了这个消息处理函数
这个是在网上找的例子,好像是不用加载菜单资源,觉得好一点
void CCollDlg::OnRclickCollList(NMHDR* pNMHDR, LRESULT* pResult) //右键单击列表项处理函数
{
if(m_CollList.GetItemCount())
{
POINT point;
GetCursorPos(&point);
CPopupMenu cMenu;
cMenu.CreatePopupMenu();
cMenu.AppendMenu(MF_STRING, ID_MENU_DELE, _T("删除")); //问题是这个ID(原来是另外的ID是可以到达消息处理函数)到我改了之后就那弹出的菜单项总是变灰!
cMenu.LoadToolBarResource(IDR_TABVIEW_MENU); //这个ID不是菜单资源!我在Resource Symbols对话框里查过,是有该IDR_TABVIEW_MENU存在,但是标记显示是没有使用的
cMenu.RemapMenu(&cMenu);
cMenu.EnableMenuItems(&cMenu, AfxGetMainWnd());
::SetMenuDefaultItem(cMenu.m_hMenu, 0, TRUE);
cMenu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
cMenu.DestroyMenu();
*pResult = 0;
}
}我在加了个消息处理函数来处理菜单项事件
ON_COMMAND(ID_MENU_DELE, OnMenuDele) //就加了这个消息处理函数
解决方案 »
- 关于屏幕刷新的问题~?
- C++ 下的这样一条函数,如何写成ACTIVE X 接口 并可以用 JS调用?非常感谢
- 关于OnTimer()函数的问题?
- 对于windows 2003操作系统,如何通过设置不同的密码启动系统后显示不同的桌面和使用不同的软件?
- 欲开发一IE组件,请有能力者进来!!!
- 高分征集:恢复被隐藏工具隐藏的文件的方法
- :救命啦,!!!请大家帮帮忙,一个关于文件解包的问题,十万火急!!!!!!!!
- 如何检测网络连接是否正常?
- 请介绍一个能学Socket 5 代理编程的网站。
- 谁有MS Chart的详细资料?
- 问问:数据存放的问题,大谢了!
- 请教如何用CFileDialog打开并读一个文件(txt)
问题1:
在Resource Symbols对话框中可以看到ID_MENU_DELE,但是标记显示是没有使用的.
我没有在xx.h或xx.cpp文件中#define 定义ID_MENU_DELE.
请问如果在Resource Symbols对话框中看到的ID或增加新的ID,是否还要在xx.h或xx.cpp文件中#define 定义该ID?问题2:
在Resource Symbols对话框中可以看到的ID,标记显示,是没有使用的,是否可以删除?
2.不能删,虽然标记没用,但是这个资源号还是被程序使用的,
过程是这样的:
1:
这个ID_MENU_DELE是通过Resource Symbols对话框的New添加的.
2:
在xx.h文件添加了afx_msg void OnMenuDele();
3:
在xx.cpp文件添加了ON_COMMAND(ID_MENU_DELE, OnMenuDele)
4:
xx::OnMenuDele(){...... } //增加消息函数处理体问题1:
请问这样用手动添加这个消息处理是否可以?问题2:
还有就是假如以上的过程是可以的话,我把该ID_MENU_DELE加到菜单项里,为什么会出现菜单项变灰?