大家好,我现在想给树控件做个右键菜单,其中菜单内容包括对节点的增加,删除,修改节点名字,在我的工程里面,树的构建是通过读数据库动态生成的,现在我想做一颗通过通过点击鼠标的右键来实现对树的控制,我写的代码如下:
void CMainDlg::OnRclickMyTree(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code her
CPoint point;
GetCursorPos( & point );
CMenu menuPopup;
menuPopup.CreatePopupMenu();
menuPopup.AppendMenu( MF_STRING, ID_zengjiajiedian, _T(""增加"));
menuPopup.AppendMenu( MF_SEPARATOR );
menuPopup.AppendMenu( MF_STRING, ID_shanchujiedian, "删除");
menuPopup.AppendMenu( MF_SEPARATOR );
menuPopup.AppendMenu( MF_STRING, ID_MENUITEM_EXIT, "修改");
menuPopup.AppendMenu( MF_SEPARATOR );
menuPopup.AppendMenu( MF_STRING, ID_tuichu, "退出" ); menuPopup.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, point.x, point.y, AfxGetMainWnd() );
switch( nCmd )
{
case ID_shanchujiedian: break; case ID_zengjiajiedian:
{
Ctianjia_Dlg m_dlg;
m_dlg.DoModal();
break;
}
case ID_tuichu:
default:
break;
}
*pResult = 0;
}这种方法可以做到弹出菜单,但是我想通过菜单的增加事情去将tianjia_Dlg 对话框调出来,但是我的这种方法不行,不能这样能不能实现,希望大家能帮帮忙。。非常感谢
void CMainDlg::OnRclickMyTree(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code her
CPoint point;
GetCursorPos( & point );
CMenu menuPopup;
menuPopup.CreatePopupMenu();
menuPopup.AppendMenu( MF_STRING, ID_zengjiajiedian, _T(""增加"));
menuPopup.AppendMenu( MF_SEPARATOR );
menuPopup.AppendMenu( MF_STRING, ID_shanchujiedian, "删除");
menuPopup.AppendMenu( MF_SEPARATOR );
menuPopup.AppendMenu( MF_STRING, ID_MENUITEM_EXIT, "修改");
menuPopup.AppendMenu( MF_SEPARATOR );
menuPopup.AppendMenu( MF_STRING, ID_tuichu, "退出" ); menuPopup.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, point.x, point.y, AfxGetMainWnd() );
switch( nCmd )
{
case ID_shanchujiedian: break; case ID_zengjiajiedian:
{
Ctianjia_Dlg m_dlg;
m_dlg.DoModal();
break;
}
case ID_tuichu:
default:
break;
}
*pResult = 0;
}这种方法可以做到弹出菜单,但是我想通过菜单的增加事情去将tianjia_Dlg 对话框调出来,但是我的这种方法不行,不能这样能不能实现,希望大家能帮帮忙。。非常感谢
解决方案 »
- 为什么总返回-1有源码,哪位帮看一下,谢谢
- 中文版的xp,记事本保存中文可以用ASCII形式;英文版的xp保存中文就必须选unicode?
- 关于SetWindowText的问题
- 关于串口波特率上不去的问题?怎么只能设到115200再上去就出错了,怎么解决了?多谢!!!
- 用MS CryptoAPI进行MD5加解密
- 请问LoadIcon(NULL,IDI_ASTERISK)中的IDI_ASTERISK是什么,该函数的第一个参数为什么可以是空的?
- 请教:如何注册数据库驱动???
- 动态库导出自定义类的问题。
- vs2008下lib包含目录的问题
- 请问在 VC 中怎么嵌入 汇编语句 ?那位高手能指点一二
- VC++怎么实现如Word 2007那样的(功能区)用户界面?
- 调色板的问题
你要响应下面的操作就要自己再加消息。。
{
case ID_shanchujiedian: break; case ID_zengjiajiedian:
{
Ctianjia_Dlg m_dlg;
m_dlg.DoModal();
break;
}
case ID_tuichu:
default:
break; }
这段代码是从别的地方扣出来的吧。。囧
nCmd 是什么?
不好意思,上面是nCmd的值,打上去的忘了
//{{AFX_MSG(CMfc1Dlg)...
afx_msg void Onshanchujiedian(); //添加到这里。//}}AFX_MSG
DECLARE_MESSAGE_MAP()
添加到对话框的实现文件:
BEGIN_MESSAGE_MAP(CMfc1Dlg, CDialog)
//{{AFX_MSG_MAP(CMfc1Dlg) ...
ON_COMMAND(ID_shanchujiedian, Onshanchujiedian) //添加到这里。 //}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CMainDlg::Onshanchujiedian()
{
...
}