bklistbox.cpp

来自「Visualc++6.0自学手册第4章」· C++ 代码 · 共 87 行

CPP
87
字号
// BKListBox.cpp : implementation file
//

#include "stdafx.h"
#include "E0410.h"
#include "BKListBox.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBKListBox

CBKListBox::CBKListBox()
{
	m_brHollow.CreateStockObject(HOLLOW_BRUSH);  // 创建空心画刷
}

CBKListBox::~CBKListBox()
{
}


BEGIN_MESSAGE_MAP(CBKListBox, CListBox)
	//{{AFX_MSG_MAP(CBKListBox)
	ON_WM_CTLCOLOR_REFLECT()
	ON_WM_ERASEBKGND()
	ON_WM_VSCROLL()
	ON_WM_HSCROLL()
	ON_WM_LBUTTONDOWN()
	ON_CONTROL_REFLECT(LBN_SELCHANGE, OnSelchange)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBKListBox message handlers


HBRUSH CBKListBox::CtlColor(CDC* pDC, UINT nCtlColor) 
{
	pDC->SetBkMode(TRANSPARENT); // 设置背景透明模式
	return m_brHollow;	  // 返回空心画刷
}

BOOL CBKListBox::OnEraseBkgnd(CDC* pDC) 
{
	RECT rc;
	GetClientRect(&rc);  // 获取列表框客户区域
	int rcWidth = rc.right-rc.left;  // 列表框客户区域宽度
	int rcHeight = rc.bottom-rc.top;  // 列表框客户区域高度
	BITMAP bitmap;  // 位图句柄
	m_Bitmap.GetBitmap(&bitmap);  // 载入位图
	CDC dcMem;  // 内存绘图设备
	dcMem.CreateCompatibleDC(pDC);
	CBitmap* pOldBitmap = dcMem.SelectObject(&m_Bitmap);
	// 绘制背景位图
	pDC->StretchBlt(0,0,rcWidth,rcHeight,&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
	dcMem.SelectObject(pOldBitmap);	
	return CListBox::OnEraseBkgnd(pDC);
}

void CBKListBox::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	Invalidate();
	CListBox::OnVScroll(nSBCode, nPos, pScrollBar);
}

void CBKListBox::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	Invalidate();	
	CListBox::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CBKListBox::OnLButtonDown(UINT nFlags, CPoint point) 
{
	Invalidate();	
	CListBox::OnLButtonDown(nFlags, point);
}

void CBKListBox::OnSelchange() 
{
	Invalidate();	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?