?? listhearderctrl.cpp
字號:
#include "StdAfx.h"
#include "ListCtrl.h"
#include "ListHeaderCtrl.h"
#include "memdc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CListHeaderCtrl::CListHeaderCtrl()
{
}
CListHeaderCtrl::~CListHeaderCtrl()
{
}
BEGIN_MESSAGE_MAP(CListHeaderCtrl, CHeaderCtrl)
//{{AFX_MSG_MAP(CListHeaderCtrl)
ON_WM_PAINT()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAG
END_MESSAGE_MAP()
void CListHeaderCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
}
void CListHeaderCtrl::OnPaint()
{
CPaintDC dc(this);
CRect rect, rectItem, clientRect;
GetClientRect(&rect);
GetClientRect(&clientRect);
CMemDC memDC(&dc, rect);
CDC bitmapDC;
bitmapDC.CreateCompatibleDC(&dc);
memDC.FillSolidRect(&rect, RGB(76,85,118));
CBitmap bitmapSpan;
bitmapSpan.LoadBitmap(IDB_MYCOLUMN);
CBitmap* pOldBitmapSpan = bitmapDC.SelectObject(&bitmapSpan);
memDC.StretchBlt(rect.left + 2, 0, rect.Width(), 20, &bitmapDC, 0, 0, 1, 20, SRCCOPY);
bitmapDC.SelectObject(pOldBitmapSpan);
bitmapSpan.DeleteObject();
int nItems = GetItemCount();
CBitmap bitmap;
CBitmap bitmap2;
CBitmap bitmap3;
bitmap.LoadBitmap(IDB_COLUMNHEADER_START);
bitmap2.LoadBitmap(IDB_MYCOLUMN);
bitmap3.LoadBitmap(IDB_COLUMNHEADER_END);
for(int i = 0; i < nItems; i++)
{
TCHAR buf1[256];
HD_ITEM hditem1;
hditem1.mask = HDI_TEXT | HDI_FORMAT | HDI_ORDER;
hditem1.pszText = buf1;
hditem1.cchTextMax = 255;
GetItem(i, &hditem1);
GetItemRect(i, &rect);
CBitmap* pOldbitmap = NULL;
// if(hditem1.iOrder == 0)
// {
// pOldbitmap = bitmapDC.SelectObject(&bitmap);
// memDC.BitBlt(rect.left, rect.top, 2, 12, &bitmapDC, 0, 0, SRCCOPY);
// }
//
// else
// {
memDC.BitBlt(rect.left - 1, rect.top, 2, 20, &bitmapDC, 0, 0, SRCCOPY);
pOldbitmap = bitmapDC.SelectObject(&bitmap2);
memDC.BitBlt(rect.left + 1, rect.top, 1, 20, &bitmapDC, 0, 0, SRCCOPY);
// }
//
bitmapDC.SelectObject(pOldbitmap);
int nWidth = rect.Width() - 4;
CBitmap* pOldBitmap2 = bitmapDC.SelectObject(&bitmap2);
memDC.StretchBlt(rect.left + 2, 0, nWidth, 1, &bitmapDC, 0, 0, 1, 20, SRCCOPY);
bitmapDC.SelectObject(pOldBitmap2);
CBitmap* pOldBitmap3 = bitmapDC.SelectObject(&bitmap3);
memDC.BitBlt((rect.right - 2), 0, 2, 20, &bitmapDC, 0, 0, SRCCOPY);
bitmapDC.SelectObject(pOldBitmap3);
//
DRAWITEMSTRUCT DrawItemStruct;
GetItemRect(i, &rectItem);
DrawItemStruct.CtlType = 100;
DrawItemStruct.hDC = dc.GetSafeHdc();
DrawItemStruct.itemAction = ODA_DRAWENTIRE;
DrawItemStruct.hwndItem = GetSafeHwnd();
DrawItemStruct.rcItem = rectItem;
DrawItemStruct.itemID = i;
DrawItem(&DrawItemStruct);
UINT uFormat = DT_SINGLELINE | DT_NOPREFIX | DT_TOP | DT_CENTER;
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfHeight = 18;
wcscpy(lf.lfFaceName, _T("Tohoma"));
font.CreateFontIndirect(&lf);
CFont* def_font = memDC.SelectObject(&font);
memDC.SetBkMode(TRANSPARENT);
rectItem.DeflateRect(2, 2, 2, 2);
TCHAR buf[256];
HD_ITEM hditem;
hditem.mask = HDI_TEXT | HDI_FORMAT | HDI_ORDER;
hditem.pszText = buf;
hditem.cchTextMax = 255;
GetItem(DrawItemStruct.itemID, &hditem);
memDC.DrawText(buf, &rectItem, uFormat);
memDC.SelectObject(def_font);
font.DeleteObject();
}
}
BOOL CListHeaderCtrl::OnEraseBkgnd(CDC* pDC)
{
return false;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -