⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headerctrlex.cpp

📁 ClistCtrl的使用完整实例 包括基本的属性设置、出入数据、实现排序等
💻 CPP
字号:
// HeaderCtrlEx.cpp : implementation file
//

#include "stdafx.h"
#include "Testlistctrl.h"
#include "HeaderCtrlEx.h"
#include ".\headerctrlex.h"


// CHeaderCtrlEx
IMPLEMENT_DYNAMIC(CHeaderCtrlEx, CHeaderCtrl)
CHeaderCtrlEx::CHeaderCtrlEx()
{
}

CHeaderCtrlEx::~CHeaderCtrlEx()
{
}


BEGIN_MESSAGE_MAP(CHeaderCtrlEx, CHeaderCtrl)
	ON_MESSAGE(HDM_LAYOUT, OnLayout)
END_MESSAGE_MAP()



// CHeaderCtrlEx message handlers

//修改表头背景色和文本颜色
void CHeaderCtrlEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{

	// TODO:  Add your code to draw the specified item
	ASSERT(lpDrawItemStruct->CtlType == ODT_HEADER);   
	HDITEM   hdi;   
	TCHAR   lpBuffer[256];   
	hdi.mask = HDI_TEXT;   
	hdi.pszText = lpBuffer;   
	hdi.cchTextMax = 256; 
	GetItem(lpDrawItemStruct->itemID,&hdi);   
    
	CDC*   pDC;   
	pDC = CDC::FromHandle(lpDrawItemStruct->hDC);   
	//pDC->SetBkColor(RGB(233,33,0));   
	pDC->SetTextColor(RGB(0,0,0));  
	pDC->SetBkColor(RGB(222,213,242));
	CBrush   brush;   
	brush.CreateSolidBrush(RGB(222,213,242)); 
	CRect   rect = lpDrawItemStruct->rcItem; 
	//THIS FONT IS ONLY FOR DRAWING AS LONG AS WE DON'T DO A SetFont(...)   
	CBrush   *pOldBrush=pDC->SelectObject(&brush);   
	pDC->FillRect(&rect,&brush);   
	pDC->SelectObject(pOldBrush);   
	pDC->SelectObject(GetStockObject(DEFAULT_GUI_FONT));   
	UINT   uFormat = DT_CENTER;  
	//DRAW THE TEXT
	lpDrawItemStruct->rcItem.top += 2;
	::DrawText(lpDrawItemStruct->hDC,lpBuffer,strlen(lpBuffer),     
	&lpDrawItemStruct->rcItem,uFormat);   
	pDC->SelectStockObject(SYSTEM_FONT);
}

//固定列宽
BOOL CHeaderCtrlEx::OnChildNotify(UINT msg,WPARAM wp,LPARAM lp,LRESULT* pRes)   
{   
	HD_NOTIFY  *phdn = (HD_NOTIFY*)lp;   
	if((phdn->hdr.code==HDN_BEGINTRACKA||phdn->hdr.code==HDN_BEGINTRACKW)   
		&&(phdn->iItem==0||phdn->iItem==1||phdn->iItem==2))   
	{   
	//禁止列被拖动   
		return   *pRes=TRUE;   
	}   
    return   CHeaderCtrl::OnChildNotify(msg,wp,lp,pRes);   
}

//修改表头高度
LRESULT CHeaderCtrlEx::OnLayout( WPARAM wParam, LPARAM lParam ) 
{
	LRESULT lResult = CHeaderCtrl::DefWindowProc(HDM_LAYOUT, 0, lParam);

	HD_LAYOUT &hdl = *( HD_LAYOUT * ) lParam;
	RECT *prc = hdl.prc;
	WINDOWPOS *pwpos = hdl.pwpos;

	//如果想动态修改表头高度,下式中的2可以用一个全局变量来代替
	int nHeight = pwpos->cy * 2; 

	pwpos->cy = nHeight;
	prc->top = nHeight;

	return lResult;
} 




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -