⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitmapstatusbar.cpp

📁 在状态条中加入bmp图像
💻 CPP
字号:
// BitmapStatusBar.cpp: implementation of the CBitmapStatusBar class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Status.h"
#include "BitmapStatusBar.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBitmapStatusBar::CBitmapStatusBar()
{

}

CBitmapStatusBar::~CBitmapStatusBar()
{

}
#if _MFC_VER < 0x400
void CBitmapStatusBar::DoPaint(CDC *pDC)
{
	CRect rect;
	GetItemRect(1, &rect); //得到pane的大小 
	pDC->ExcludeClipRect(&rect); //创建新的裁剪区域 
	CStatusBar::DoPaint(pDC); //描绘状态条(status bar)的其余部分 
	CRgn paneRgn; 
	paneRgn.CreateRectRgnIndirect(rect); 
	pDC->SelectClipRgn(&paneRgn); //选择裁剪区域 
	CBitmap pBitmap; //加载位图,使用Import从文件加载资源,可以不受调色板限制 
	pBitmap.LoadBitmap(IDB_BITMAP1); //将当前位图放入兼容CDC 
	BITMAP bm;
	pBitmap.GetBitmap(&bm);
	CDC SourceDC; 
	SourceDC.CreateCompatibleDC(NULL);//生成兼容的CDC 
	CBitmap* pOldBitmap = SourceDC.SelectObject(&pBitmap);//选择位图 
	pDC->StretchBlt(rect.left, rect.top, rect.Width(), rect.Height(),&SourceDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);//BitBlt 
	SourceDC.SelectObject(pOldBitmap);//删除CDC中所选择的位图 
	pBitmap.DeleteObject();//删除位图
}
#else
void CBitmapStatusBar::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
	switch(lpDrawItemStruct->itemID)
	{ case 1: //从资源中选择位图 
		CBitmap pBitmap; //加载位图,使用Import从文件加载资源,可以不受调色板限制 
		pBitmap.LoadBitmap(IDB_BITMAP1); //将状态条(StatusBar)附加到一个CDC对象 
		BITMAP bm;
		pBitmap.GetBitmap(&bm);
		CDC dc,SourceDC; 
		dc.Attach(lpDrawItemStruct->hDC); //得到pane的大小和坐标 
		CRect rect(&lpDrawItemStruct->rcItem); //将当前位图放入兼容CDC 
		SourceDC.CreateCompatibleDC(NULL);//生成兼容的CDC 
		CBitmap* pOldBitmap = SourceDC.SelectObject(&pBitmap);//选择位图 
		dc.StretchBlt(rect.left, rect.top, rect.Width(), rect.Height(), &SourceDC, 0, 0,bm.bmWidth,bm.bmHeight,SRCCOPY);//BitBlt 
		SourceDC.SelectObject(pOldBitmap);//删除CDC中所选择的位图 
		pBitmap.DeleteObject();//删除位图
		//将状态条(StatusBar)与CDC对象分离,否则hDC将会在CDC废弃时被删除 
		dc.Detach(); 
		return; 
	} 
	CStatusBar::DrawItem(lpDrawItemStruct);
}
#endif

⌨️ 快捷键说明

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