?? headerctrlex.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 + -