tree控件的右键菜单的增加节点,删除节点,修改节点的功能如何实现?

PPY512 2009-02-25 05:24:55
大家好,我现在想给树控件做个右键菜单,其中菜单内容包括对节点的增加,删除,修改节点名字,在我的工程里面,树的构建是通过读数据库动态生成的,现在我想做一颗通过通过点击鼠标的右键来实现对树的控制,我写的代码如下:
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 对话框调出来,但是我的这种方法不行,不能这样能不能实现,希望大家能帮帮忙。。非常感谢
...全文
643 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwx300 2009-02-26
  • 打赏
  • 举报
回复
//最后写菜单项目的响应函数。
void CMainDlg::Onshanchujiedian()
{
...
}
lwx300 2009-02-25
  • 打赏
  • 举报
回复
添加到对话框的头文件(找一找):

// Generated message map functions
//{{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()
PPY512 2009-02-25
  • 打赏
  • 举报
回复
请问五楼,这两个响应函数是要手动去添加吗?我是刚刚学VC。好多都不是很懂
PPY512 2009-02-25
  • 打赏
  • 举报
回复
请问五楼,这两个响应函数是要手动去添加吗?我是刚刚学VC。好多都不是很懂
lwx300 2009-02-25
  • 打赏
  • 举报
回复
TrackPopupMenu 的返回值是 BOOL,不是所点击菜单的 ID 值,可以在对话框中手动添加菜单的响应函数:

//菜单的消息映射。

afx_msg void Onshanchujiedian(); //.h文件

ON_COMMAND(ID_shanchujiedian, Onshanchujiedian) //.cpp文件

PPY512 2009-02-25
  • 打赏
  • 举报
回复
nCmd=menuPopup.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, point.x, point.y, AfxGetMainWnd() );
不好意思,上面是nCmd的值,打上去的忘了
fishion 2009-02-25
  • 打赏
  • 举报
回复
Ctianjia_Dlg m_dlg; 设为全局
  • 打赏
  • 举报
回复
switch( nCmd )
{
case ID_shanchujiedian:

break;

case ID_zengjiajiedian:
{
Ctianjia_Dlg m_dlg;
m_dlg.DoModal();
break;
}
case ID_tuichu:


default:
break;

}

这段代码是从别的地方扣出来的吧。。囧
nCmd 是什么?
  • 打赏
  • 举报
回复
OnRclickMyTree 这个函数在你右键tree弹出菜单的时候就已经走完了。。
你要响应下面的操作就要自己再加消息。。

15,979

社区成员

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

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