如何给CTreeCtrl 添加右键菜单

如何给CTreeCtrl 添加右键菜单,第1张

如何给CTreeCtrl 添加右键菜单

首先定义右键消息函数

afx_msg void OnRBClick(NMHDR* pNMHDR, LRESULT* pResult)

然后在消息循环中定义消息对应关系:

ON_NOTIFY(NM_RCLICK, ID_TREECTRL, OnRbClick)

接着定义消息函数内容:

void OnRBClick(NMHDR* pNMHDR, LRESULT* pResult)

{

CPoint point

GetCursorPos(&point)

CPoint pointInTree = point

m_TreeCtrl.ScreenToClient(&pointInTree)

HTREEITEM item

UINT flag = TVHT_ONITEM

item = m_TreeCtrl.HitTest(pointInTree, &flag)

if(item != NULL)

{

m_TreeCtrl.SelectItem(item)

CMenu menu

menu.LoadMenu(IDR_MENU1)

menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN |

TPM_RIGHTBUTTON, point.x, point.y, this, NULL)

}

}

1.初始化CImageList、设置图像列表 成员函数: CImageList::Create CTreeCtrl::SetImageList 示例: BOOL CMfc1Dlg::OnInitDialog(){ //... m_iml.Create(16,16,ILC_COLOR16 | ILC_MASK,20,20)m_Tree.SetImageList(&m_iml,TVSIL_NORMAL)} 2.向树视图中添加窗口列表 成员函数: CImageList::Replace CTreeCtrl::InsertItem 示例: int i=0HWND hDesktop=::GetDesktopWindow()HWND hWnd=::GetWindow(hDesktop,GW_CHILD)TCHAR sTitle[MAX_PATH]HICON hIconBOOL bShow=TRUELONG idxwhile ( i<1000 &&hWnd!=NULL ) { bShow=TRUEif (!::GetWindowTextLength(hWnd)) bShow=FALSEif (!::IsWindowEnabled(hWnd)) bShow=FALSEif (!::IsWindowVisible(hWnd)) bShow=FALSEif (!::GetWindow(hWnd,GW_CHILD)) bShow=FALSEif (bShow) { ::GetWindowText(hWnd,sTitle,MAX_PATH)hIcon=(HICON)::SendMessage(hWnd,WM_GETICON,ICON_SMALL,NULL)if ((LONG)hIcon==NULL) hIcon=(HICON)::SendMessage(hWnd,WM_GETICON,ICON_BIG,NULL)if ((LONG)hIcon==NULL) hIcon=m_hIconidx=m_iml.Replace(-1,hIcon)m_Tree.InsertItem(sTitle,idx,idx)} hWnd=::GetWindow(hWnd,GW_HWNDNEXT)++i} 源代码mfc_study_2.zip(38KB)

最近在做MFC开发的过程中,由于对MFC的不熟悉,让我遇到了一些坑,也不能算是坑吧,本质上还是自己太菜了,我遇到的问题描述如下: 我的目的是继承一个树控件的类,在派生类中实现一些自己想要添加的方法.我的遇到的问题是:

基于对话框的MFC程序->转到对话框->拖入TreeControl控件->右键树控件添加类(我以为这样的类是继承自CTreeCtrl的)->对应类的头文件查看

过程如下:

跟我的预期并不相符,基类中没有我想要的CTreeCtrl类,后面我发现在对话框的任意位置右键添加类都是这样的情况,所以我下结论:在对话框中右键添加类其基类都是和对话框相关的类(如CDialogEx之类).

后面经过请教,找到了正确添加MFC类的方法:右键项目名->类向导->添加类右边的下拉框选择MFC类->此时查看基类就可以看到所有的MFC类,添加的新类也就继承自想要继承的类.

归根结底还是对MFC和VS的用法不熟悉.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7875250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存