📄 theadctl.cpp
字号:
#include "stdafx.h"
#include "theadctl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#pragma warning ( disable : 4711 )
/////////////////////////////////////////////////////////////////////////////
// CTreeHeaderCtrl
CTreeHeaderCtrl::CTreeHeaderCtrl ():m_pctlTree (NULL), m_bDirtyCache (true)
{
}
CTreeHeaderCtrl:: ~ CTreeHeaderCtrl ()
{
}
BOOL CTreeHeaderCtrl::
GetCachedItemRect (int nIndex, LPRECT lpRect)
{
if (m_bDirtyCache)
{
RefreshItemRectCache ();
}
if (nIndex < m_arrRect.GetSize ())
{
::CopyRect (lpRect, m_arrRect[nIndex]);
return TRUE;
}
return GetItemRect (nIndex, lpRect);
}
void CTreeHeaderCtrl::
RefreshItemRectCache ()
{
int nCount = GetItemCount ();
m_arrRect.SetSize (nCount);
for (int i = 0; i < nCount; i++)
{
VERIFY (GetItemRect (i, m_arrRect[i]));
}
m_bDirtyCache = false;
}
BEGIN_MESSAGE_MAP (CTreeHeaderCtrl, CAppHeaderCtrl)
//{{AFX_MSG_MAP(CTreeHeaderCtrl)
ON_NOTIFY_REFLECT (HDN_ITEMCHANGED, OnItemChanged)
ON_NOTIFY_REFLECT (HDN_TRACK, OnItemChanged)
//}}AFX_MSG_MAP
END_MESSAGE_MAP ()
/////////////////////////////////////////////////////////////////////////////
// CTreeHeaderCtrl message handlers
void CTreeHeaderCtrl::OnItemChanged (NMHDR * pNMHDR, LRESULT * pResult)
{
NMHEADER *phdr = (LPNMHEADER) pNMHDR;
if (phdr->iItem < m_arrRect.GetSize ())
{
int delta = phdr->pitem->cxy - m_arrRect[phdr->iItem].Width ();
m_arrRect[phdr->iItem].right += delta;
int nCount = m_arrRect.GetSize ();
for (int i = phdr->iItem + 1; i < nCount; i++)
{
m_arrRect[i].left += delta;
m_arrRect[i].right += delta;
}
}
if (m_pctlTree)
{
m_pctlTree->Paint ();
}
*pResult = 0;
}
void CTreeHeaderCtrl::
OnTrack (NMHDR * pNMHDR, LRESULT * pResult)
{
NMHEADER *phdr = (LPNMHEADER) pNMHDR;
phdr->pitem->mask = HDI_WIDTH;
SetItem (phdr->iItem, phdr->pitem);
*pResult = 0;
}
/////////////////////////////////////////////////////////////////////////////
#pragma warning ( default : 4711 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -