资源简介

一个自绘的带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倍,如果要动态修改表头高度的话,将1.5设成一个全局变量 
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 < rect.right; i += sizeBmp.cx )
{
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个文件信息

评论

共有 条评论