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

📄 view.h

📁 是WTL的开发包,直接包括在路径中,最好放在VC目录中,要更新的包请到官方网站去下载
💻 H
字号:
// View.h : interface of the CBitmapView class
//
/////////////////////////////////////////////////////////////////////////////

#ifndef __VIEW_H__
#define __VIEW_H__

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000


class CBitmapView : public CScrollWindowImpl<CBitmapView>
{
public:
	DECLARE_WND_CLASS_EX(NULL, 0, -1)

	CBitmap m_bmp;
	SIZE m_size;


	CBitmapView()
	{
		m_size.cx = m_size.cy = 1;
	}

	BOOL PreTranslateMessage(MSG* pMsg)
	{
		pMsg;
		return FALSE;
	}

	void SetBitmap(HBITMAP hBitmap)
	{
		if(!m_bmp.IsNull())
			m_bmp.DeleteObject();

		m_bmp = hBitmap;

		if(!m_bmp.IsNull())
			m_bmp.GetSize(m_size);
		else
			m_size.cx = m_size.cy = 1;

		SetScrollOffset(0, 0, FALSE);
		SetScrollSize(m_size);
	}

	BEGIN_MSG_MAP(CBitmapView)
		MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
		CHAIN_MSG_MAP(CScrollWindowImpl<CBitmapView>);
	END_MSG_MAP()

	LRESULT OnEraseBackground(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
		RECT rect;
		GetClientRect(&rect);
		int x = 0;
		int y = 0;
		if(!m_bmp.IsNull())
		{
			x = m_size.cx + 1;
			y = m_size.cy + 1; 
		}
		CDCHandle dc = (HDC)wParam;
		if(rect.right > m_sizeAll.cx)
		{
			RECT rectRight = rect;
			rectRight.left = x;
			rectRight.bottom = y;
			dc.FillRect(&rectRight, (HBRUSH)(COLOR_WINDOW + 1));
		}
		if(rect.bottom > m_sizeAll.cy)
		{
			RECT rectBottom = rect;
			rectBottom.top = y;
			dc.FillRect(&rectBottom, (HBRUSH)(COLOR_WINDOW + 1));
		}
		if(!m_bmp.IsNull())
		{
			dc.MoveTo(m_size.cx, 0);
			dc.LineTo(m_size.cx, m_size.cy);
			dc.LineTo(0, m_size.cy);
		}
		return 0;
	}

	void DoPaint(CDCHandle dc)
	{
		if(!m_bmp.IsNull())
		{
			CDC dcMem;
			dcMem.CreateCompatibleDC(dc);
			HBITMAP hBmpOld = dcMem.SelectBitmap(m_bmp);
			dc.BitBlt(0, 0, m_size.cx, m_size.cy, dcMem, 0, 0, SRCCOPY);
			dcMem.SelectBitmap(hBmpOld);
		}
	}
};

#endif // __VIEW_H__

⌨️ 快捷键说明

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