资源简介
一个自绘的带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个文件信息
相关资源
- listview带checkbox全选、取消功能精简版
- 高效的虚ListCtrl,丰富的颜色设置功能
- 改变 CListCtrl、CHeaderCtrl 高度、字体、
- duilib界面库,库ListCtrl可以添加check
- CListCtrl实现icon显示
- 双击可编辑单元格的ListControl控件
- SysListView32通用表格控件内容读取程序
- VC ListCtrl添加超级连接
- 控制ComboBoxTextBoxDateTimePicker在Enable=f
- 可编辑子项的ListCtrl (ComboBox与EditB
- Vue.js实现购物车checkbox的全选与反选
- 类似ListCtrl 的控件,又有点像excel 表
- listcontrol高度可变 类似控制面板的下
- CListCtrl设置不同行不同颜色,字体颜
- combox 列表嵌套checkbox
- QT的QTreeWidget有checkbox时轻松选中
- CListCtrl重绘 Redraw 源码
- virtual listctrl
- CListCtrl控件实现Item项拖拽效果
- ListCtrl控件和下拉框,编辑框等控件组
- CColorListctrl
- 带CheckBox功能的ComboBox
- Tree和ListCtrl的完美结合
- CListCtrl 使用演示的
- CListCtrl自绘CheckBox
- CListCtrlEx扩展列表控件
- 自定义ListCtrl控件CustomListCtrl
- 给StringGrid添加复选框
- qml基础知识对话框、checkbox、下拉框
- wxCheckedListCtrl带checkbox的ListCtrl
评论
共有 条评论