MFC Tree Control对鼠标右击的响应.
2012-11-09 15:26
323 查看
在做聊天程序的时候,想对树形控件进行右键响应.只响应用户,不响应在线用户那一行.
void CClientDlg::OnNMRClickUserTree(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
POINT point;
GetCursorPos(&point);
//把显示器坐标转换为客户区坐标,一定要是tree控件的句柄.主要用来测试用户有没有选中某项.
::ScreenToClient(pNMTreeView->hdr.hwndFrom,&point);
UINT uFlags;
uFlags=TVHT_ONITEM;
HTREEITEM hItem = m_UserTree.HitTest(point, &uFlags);
CMenu menu;
int nID;
//就像上图一样,我只想当用户选中walking时才会有效,选中在线用户也没有用.m_hRoot在我的程序里就是保存在线用户的树.
if ((hItem != NULL) && (TVHT_ONITEM & uFlags)&&(hItem!=m_hRoot))
{
m_UserTree.Select(hItem, TVGN_CARET);
menu.LoadMenu(IDR_FILE_TRANSFER);
//控制弹出菜单的位置,要用到和上面相反的函数.
::ClientToScreen(pNMTreeView->hdr.hwndFrom,&point);
CMenu* pContextMenu = menu.GetSubMenu(0);
nID = pContextMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RETURNCMD,
point.x, point.y,this);
}
//下面就是你具体要做的事了,根据菜单项来具体安排.
switch (nID)
{
......
}
*pResult = 0;
}
原文地址:MFC Tree Control对鼠标右击的响应.作者:walking
void CClientDlg::OnNMRClickUserTree(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
POINT point;
GetCursorPos(&point);
//把显示器坐标转换为客户区坐标,一定要是tree控件的句柄.主要用来测试用户有没有选中某项.
::ScreenToClient(pNMTreeView->hdr.hwndFrom,&point);
UINT uFlags;
uFlags=TVHT_ONITEM;
HTREEITEM hItem = m_UserTree.HitTest(point, &uFlags);
CMenu menu;
int nID;
//就像上图一样,我只想当用户选中walking时才会有效,选中在线用户也没有用.m_hRoot在我的程序里就是保存在线用户的树.
if ((hItem != NULL) && (TVHT_ONITEM & uFlags)&&(hItem!=m_hRoot))
{
m_UserTree.Select(hItem, TVGN_CARET);
menu.LoadMenu(IDR_FILE_TRANSFER);
//控制弹出菜单的位置,要用到和上面相反的函数.
::ClientToScreen(pNMTreeView->hdr.hwndFrom,&point);
CMenu* pContextMenu = menu.GetSubMenu(0);
nID = pContextMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RETURNCMD,
point.x, point.y,this);
}
//下面就是你具体要做的事了,根据菜单项来具体安排.
switch (nID)
{
......
}
*pResult = 0;
}
原文地址:MFC Tree Control对鼠标右击的响应.作者:walking
相关文章推荐
- 《MFC游戏开发》笔记四 键盘响应和鼠标响应:让人物动起来
- MFC的picture control响应鼠标操作
- 【mfc】鼠标、键盘响应事件
- MFC对话框禁止移动 使标题栏不响应鼠标消息 通过客户区移动窗体 OnNcHitTest()的实现
- MFC中tree control
- MFC列表控件ListControl和树控件TreeControl
- 继承MFC控件后怎么响应鼠标单双击事件
- 《MFC游戏开发》笔记四 键盘响应和鼠标响应:让人物动起来
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- MFC添加托盘图标并添加图标鼠标右键的响应
- MFC Tree Control 控件使用
- MFC对话框添加菜单栏并添加鼠标单击响应(实例,包你一学就会)
- MFC对话框添加菜单及鼠标响应事件步骤详解
- MFC树视图控件(Tree Control)
- 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应
- MFC中的消息响应(左键按下鼠标)和(移动鼠标)
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- (在做报文编辑器时右键菜单老不出来)This article explains how to display a context menu for a tree control in MFC
- mfc 利用CXTPChartControl画柱状图,响应柱状图单击事件
- MFC响应鼠标滚动的问题