資源簡介
一個自繪的帶checkbox的listctrl類 選中時可以改變背景色

代碼片段和文件信息
//?HeaderCtrlEx.cpp?:?implementation?file
//
#include?“stdafx.h“
#include?“HeaderCtrlEx.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#undef?THIS_FILE
static?char?THIS_FILE[]?=?__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//?CHeaderCtrlEx
CHeaderCtrlEx::CHeaderCtrlEx()
{
m_Height?=?1.5;
}
CHeaderCtrlEx::~CHeaderCtrlEx()
{
}
BEGIN_MESSAGE_MAP(CHeaderCtrlEx?CHeaderCtrl)
//{{AFX_MSG_MAP(CHeaderCtrlEx)
ON_WM_PAINT()
ON_MESSAGE(HDM_LAYOUT?OnLayout)
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//?CHeaderCtrlEx?message?handlers
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;?
//表頭高度為原來1.5倍,如果要動態(tài)修改表頭高度的話,將1.5設(shè)成一個全局變量?
int?nHeight?=?(int)(pwpos->cy?*?m_Height);
pwpos->cy?=?nHeight;?
prc->top?=?nHeight;?
return?lResult;?
}
void?CHeaderCtrlEx::DrawItem(LPDRAWITEMSTRUCT?lpDrawItemStruct)
{
//?This?code?only?works?with?header?controls.
ASSERT(lpDrawItemStruct->CtlType?==?ODT_HEADER);
CRect?rect?=?lpDrawItemStruct->rcItem;
HDITEM?hdi;
TCHAR??lpBuffer[256]?=?{0};
ZeroMemory(?&hdi?sizeof(HDITEM)?);
hdi.mask?=?HDI_TEXT|HDI_FORMAT;
hdi.pszText?=?lpBuffer;
hdi.cchTextMax?=?256;
GetItem(lpDrawItemStruct->itemID?&hdi);
//?Draw?item?bkgnd.
if?(?!m_bitmapMid.IsNull()?)
{
/* CDC?dc;
dc.Attach(?lpDrawItemStruct->hDC?);
m_bitmapMid.DrawRange(?&dc?rect?);
dc.Detach();
*/
CSize?sizeBmp?=?m_bitmapMid.GetSize();
HDC?dcMem?=?CreateCompatibleDC(lpDrawItemStruct->hDC);
HBITMAP?hOldBitmap?=?(HBITMAP)Selectobject(?dcMem?(HBITMAP)m_bitmapMid?);
for(?int?i?=?rect.left;?i? {
StretchBlt(?lpDrawItemStruct->hDC?i?0?sizeBmp.cx?rect.Height()?dcMem
0?1?sizeBmp.cx?sizeBmp.cy?SRCCOPY?);
}
Selectobject(dcMem?hOldBitmap);
DeleteDC(dcMem);
}else
{
//畫個背景色
HBRUSH?hBrush?=?CreateSolidBrush(?RGB(247?249?247)?);
//HBRUSH?hBrush?=?CreateSolidBrush(?RGB(233?247?254)?);
FillRect(?lpDrawItemStruct->hDC?&rect?hBrush?);
Deleteobject(?hBrush?);
}
//?Draw?the?text?items?using?the?text?color?red.
//算出文字顯示位置
int?iTextLen?=?_tcslen(lpBuffer);
SIZE?sizeText;
::GetTextExtentPoint32(lpDrawItemStruct->hDC?lpBuffer?iTextLen?&sizeText);
UINT?uiFormat?=?DT_LEFT;
UINT?uiColumnFmt?=?hdi.fmt?&?HDF_JUSTIFYMASK;
if?(?uiColumnFmt?==?LVCFMT_RIGHT?)
uiFormat?=?DT_RIGHT;
else?if?(?uiColumnFmt?==?LVCFMT_CENTER?)
uiFormat?=?DT_CENTER;
else
rect.left?+=?4;
CXBitmap?*bmpIcon?=?NULL;
int?iIconWidth?=?0;
//? if?(?m_bSortFlag?&&?m_nSortItem?==?lpDrawItemStruct->itemID?)
//? {
//? if?(?m_bAscending?&&?!m_bitmapAscSort.IsNull()?)//升序
//? {
//?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7969??2010-09-16?14:04??OwnerListctrl[1]\HeaderCtrlEx.cpp
?????文件???????1689??2010-08-24?09:51??OwnerListctrl[1]\HeaderCtrlEx.h
?????文件??????20215??2010-09-25?17:55??OwnerListctrl[1]\ListCtrlEx.cpp
?????文件???????3701??2010-08-24?10:01??OwnerListctrl[1]\ListCtrlEx.h
?????文件???????3597??2010-08-24?09:18??OwnerListctrl[1]\ReadMe.txt
?????文件???????1078??2010-08-24?09:18??OwnerListctrl[1]\res\TestDlg.ico
?????文件????????399??2010-08-24?09:18??OwnerListctrl[1]\res\TestDlg.rc2
?????文件????????685??2010-08-24?09:19??OwnerListctrl[1]\resource.h
?????文件????????209??2010-08-24?09:18??OwnerListctrl[1]\StdAfx.cpp
?????文件???????1077??2010-08-24?09:22??OwnerListctrl[1]\StdAfx.h
?????文件??????20976??2010-09-23?10:00??OwnerListctrl[1]\TestDlg.aps
?????文件???????1128??2010-09-23?10:00??OwnerListctrl[1]\TestDlg.clw
?????文件???????2077??2010-08-24?09:18??OwnerListctrl[1]\TestDlg.cpp
?????文件???????4575??2010-08-24?10:00??OwnerListctrl[1]\TestDlg.dsp
?????文件????????537??2010-08-24?09:18??OwnerListctrl[1]\TestDlg.dsw
?????文件?????218624??2010-09-23?11:16??OwnerListctrl[1]\TestDlg.exe
?????文件???????1335??2010-08-24?09:18??OwnerListctrl[1]\TestDlg.h
?????文件???22596608??2010-10-10?11:21??OwnerListctrl[1]\TestDlg.ncb
?????文件??????50688??2010-09-23?10:01??OwnerListctrl[1]\TestDlg.opt
?????文件???????2797??2010-09-23?10:00??OwnerListctrl[1]\TestDlg.plg
?????文件???????5148??2010-09-17?15:16??OwnerListctrl[1]\TestDlg.rc
?????文件????????879??2010-09-17?10:02??OwnerListctrl[1]\TestDlg.sln
????..A..H.?????44032??2010-10-10?11:21??OwnerListctrl[1]\TestDlg.suo
?????文件???????8792??2010-09-16?11:29??OwnerListctrl[1]\TestDlg.vcproj
?????文件???????1403??2010-10-10?11:21??OwnerListctrl[1]\TestDlg.vcproj.WHY.Administrator.user
?????文件???????5750??2010-09-21?14:43??OwnerListctrl[1]\TestDlgDlg.cpp
?????文件???????1389??2010-09-21?10:59??OwnerListctrl[1]\TestDlgDlg.h
?????文件???????7027??2010-08-23?11:26??OwnerListctrl[1]\XBitmap.cpp
?????文件???????1191??2010-08-23?11:26??OwnerListctrl[1]\XBitmap.h
?????目錄??????????0??2010-09-20?15:19??OwnerListctrl[1]\res
............此處省略4個文件信息
- 上一篇:醫(yī)療管理系統(tǒng)軟件
- 下一篇:機房搬遷方案
評論
共有 條評論