前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VC中CTreeContrl实现响应单击或双击事件

VC中CTreeContrl实现响应单击或双击事件

作者头像
acoolgiser
发布2019-01-17 10:05:21
1.7K0
发布2019-01-17 10:05:21
举报
文章被收录于专栏:acoolgiser_zhuanlanacoolgiser_zhuanlan

首先需要重写CtreeContrl,然后在.h中添加

代码语言:javascript
复制
afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);//双击事件
afx_msg void OnClkTree(NMHDR* pNMHDR, LRESULT* pResult);//单击事件

.h文件

代码语言:javascript
复制
#pragma once

/////////////////////////////////////////////////////////////////////////////
// CViewTree 窗口

class CViewTree : public CTreeCtrl
{
// 构造
public:
	CViewTree();

// 重写
protected:
	virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);

// 实现
public:
	virtual ~CViewTree();
	afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnClkTree(NMHDR* pNMHDR, LRESULT* pResult);

protected:
	DECLARE_MESSAGE_MAP()
};

.cpp文件

代码语言:javascript
复制
#include "stdafx.h"
#include "ViewTree.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CViewTree

CViewTree::CViewTree()
{
}

CViewTree::~CViewTree()
{
}

BEGIN_MESSAGE_MAP(CViewTree, CTreeCtrl)
	ON_NOTIFY_REFLECT(NM_DBLCLK, &CViewTree::OnDblClkTree)
	ON_NOTIFY_REFLECT(NM_CLICK, &CViewTree::OnClkTree)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CViewTree 消息处理程序

BOOL CViewTree::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
	BOOL bRes = CTreeCtrl::OnNotify(wParam, lParam, pResult);

	NMHDR* pNMHDR = (NMHDR*)lParam;
	ASSERT(pNMHDR != NULL);

	if (pNMHDR && pNMHDR->code == TTN_SHOW && GetToolTips() != NULL)
	{
		GetToolTips()->SetWindowPos(&wndTop, -1, -1, -1, -1, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOSIZE);
	}

	return bRes;
}

void CViewTree::OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult)
{

	HTREEITEM hTreeItem = GetSelectedItem(); 
	//以GetItemText()函数为例: 
	CString S1 = GetItemText(hTreeItem); 
	AfxMessageBox("You have selected "+S1);

	*pResult = 0;

}

void CViewTree::OnClkTree(NMHDR* pNMHDR, LRESULT* pResult)
{

	HTREEITEM hTreeItem = GetSelectedItem(); 
	//以GetItemText()函数为例: 
	CString S1 = GetItemText(hTreeItem); 
	AfxMessageBox("You have selected "+S1);

	*pResult = 0;

}

以上就实现了ctreecontrl的单击事件以及双击事件

本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年03月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com