您的位置:首页 > 其它

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

2016-03-29 16:22 465 查看
首先需要重写CtreeContrl,然后在.h中添加

afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);//双击事件
afx_msg void OnClkTree(NMHDR* pNMHDR, LRESULT* pResult);//单击事件


.h文件

#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文件

#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的单击事件以及双击事件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: