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

📄 dibitmap.h

📁 此次上传的使linux下的文件传输协议
💻 H
字号:
////////////////////////////////////////////////////////////////
// MSDN Magazine -- October 2001
// If this code works, it was written by Paul DiLascia.
// If not, I don't know who wrote it.
// Compiles with Visual C++ 6.0 for Windows 98 and probably Windows 2000 too.
// Set tabsize = 3 in your editor.
//
#pragma once
#include <atlbase.h>

//////////////////
// Picture object--encapsulates IPicture
enum 
{
	BITMAP_TILE = 0,		// 位图在对话框上使用填充模式
	BITMAP_STRETCH,			// 位图在对话框上使用伸展模式
	BITMAP_CENTER			// 位图显示在对话框的中央位置
};

//
class CDIBitmap {
public:
	BOOL Load(HBITMAP hBitmap);
	void DrawDIB(CDC* pDC,int x=0,int y=0);
	void DrawDIB( CDC * pDC, int x, int y, int width, int height );
	int  DrawDIB( CDC * pDC, CRect & rectDC, CRect & rectDIB );


	int GetHeight();
	int GetWidth();
	BOOL m_bImage;
	BOOL Load(BYTE* lpSrc,DWORD len);
	CDIBitmap();
	~CDIBitmap();

	// Load frm various sosurces
	BOOL Load(UINT nIDRes);
	BOOL Load(LPCTSTR sPath);
	BOOL Load(CFile& file);
	BOOL Load(CArchive& ar);
	BOOL Load(IStream* pstm);

	// render to device context
	BOOL Render(CDC* pDC, CRect rc=CRect(0,0,0,0),
		LPCRECT prcMFBounds=NULL) const;

	CSize GetImageSize(CDC* pDC=NULL) const;

	operator IPicture*() 
	{
		return m_spIPicture;
	}

	void GetHIMETRICSize(OLE_XSIZE_HIMETRIC& cx, OLE_YSIZE_HIMETRIC& cy) const {
		cx = cy = 0;
		const_cast<CDIBitmap*>(this)->m_hr = m_spIPicture->get_Width(&cx);
		ASSERT(SUCCEEDED(m_hr));
		const_cast<CDIBitmap*>(this)->m_hr = m_spIPicture->get_Height(&cy);
		ASSERT(SUCCEEDED(m_hr));
	}

	void Free() 
	{
		if (m_spIPicture) 
		{
			m_spIPicture.Release();
		}
		m_bImage=FALSE;
	}

protected:
	CComQIPtr<IPicture>m_spIPicture;		 // ATL smart pointer to IPicture
	HRESULT m_hr;								 // last error code
};

⌨️ 快捷键说明

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