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

📄 picturewnd.cpp

📁 VIPSHELL2007客户端代码
💻 CPP
字号:
// PictureWnd.cpp : 实现文件
//

#include "stdafx.h"

#include "PictureWnd.h"
#include ".\picturewnd.h"


// CPictureWnd

IMPLEMENT_DYNAMIC(CPictureWnd, CWnd)
CPictureWnd::CPictureWnd()
{
}

CPictureWnd::~CPictureWnd()
{
}


BEGIN_MESSAGE_MAP(CPictureWnd, CWnd)
	ON_WM_HSCROLL()
	ON_WM_PAINT()
	ON_WM_VSCROLL()
END_MESSAGE_MAP()



// CPictureWnd 消息处理程序

void CPictureWnd::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if(nSBCode != SB_ENDSCROLL)	
	{
		SCROLLINFO vStructure;
		GetScrollInfo(SB_VERT, &vStructure);
		vStructure.fMask = SIF_ALL;
		vStructure.nPos = nPos;
		SetScrollInfo(SB_VERT, &vStructure);
	}
	Invalidate();
	CWnd::OnVScroll(nSBCode, nPos, pScrollBar);
}

void CPictureWnd::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if(nSBCode != SB_ENDSCROLL)	
	{
		SCROLLINFO hStructure;
		GetScrollInfo(SB_HORZ, &hStructure);
		hStructure.fMask = SIF_ALL;
		hStructure.nPos = nPos;
		SetScrollInfo(SB_HORZ, &hStructure);
	}
	Invalidate();

	CWnd::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CPictureWnd::SetBitmap(HBITMAP hBitmap)
{
	if( hBitmap == NULL)
		return ;
	if( m_hBitmap.m_hObject != NULL )
		m_hBitmap.DeleteObject();
	m_hBitmap.Attach(hBitmap);
	Invalidate();
}

void CPictureWnd::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	// TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CWnd::OnPaint()
	if( m_hBitmap.m_hObject != NULL)
	{
		CDC hdc ;
		hdc.CreateCompatibleDC(&dc);
		CRect rc;
		GetClientRect(&rc);
		CBitmap* hOld = hdc.SelectObject(&m_hBitmap); 


		BITMAP              bitmap ;
		m_hBitmap.GetBitmap(&bitmap);

		SCROLLINFO hStructure, vStructure;
		GetScrollInfo(SB_HORZ, &hStructure);
		GetScrollInfo(SB_VERT, &vStructure);
		DWORD dwX = (int)bitmap.bmWidth - rc.right;
		if(dwX > (DWORD)hStructure.nPos)
			dwX = (DWORD)hStructure.nPos;
		DWORD dwY = (DWORD)bitmap.bmHeight - rc.bottom;
		if(dwY > (DWORD)vStructure.nPos)
			dwY = (DWORD)vStructure.nPos;		
		UINT32 nX;
		if( bitmap.bmWidth > rc.Width() )
			nX = 0;
		else
			nX = ( rc.Width() - bitmap.bmWidth) / 2;

		UINT32 nY;
		if( bitmap.bmHeight > rc.Height() )
			nY = 0;
		else
			nY = (rc.Height() - rc.Height()) / 2;

		m_rcPictureHwndRect.left = dwX;
		m_rcPictureHwndRect.top = dwY;
		m_rcPictureHwndRect.right = dwX + ( rc.Width() - dwX * 2 );
		m_rcPictureHwndRect.bottom = dwY + ( rc.Height() - dwY * 2 );

		m_rcPictureRect.left = nX;
		m_rcPictureRect.top = nY;
		m_rcPictureRect.right = nX + ( rc.Width() - dwX * 2 );
		m_rcPictureRect.bottom = nY + ( rc.Height() - dwY * 2 );

		CFont hFont;
		hFont.CreateFont(14, 0, 0, 0, 800, TRUE, 0, 0, 1, 0, 0, 0, 0, L"宋体") ;

		CFont* pOldFont = hdc.SelectObject(&hFont);
		hdc.SetBkMode(TRANSPARENT);
		hdc.SetTextColor(m_Textcr);
		hdc.TextOut(0,0,L"小神追风箭\r\nhttp://www.vipshell.net/");
		dc.BitBlt(nX, nY, rc.Width(), rc.Height(), &hdc, dwX, dwY, SRCCOPY);
		dc.SelectObject(hOld);
		hdc.SelectObject(pOldFont);

		hStructure.fMask = SIF_ALL;
		hStructure.nMin = 0;
		hStructure.nMax = bitmap.bmWidth ;
		hStructure.nPage = rc.right * rc.right / hStructure.nMax ;
		SetScrollInfo(SB_HORZ, &hStructure);

		vStructure.fMask = SIF_ALL;
		vStructure.nMin = 0;
		vStructure.nMax = bitmap.bmHeight ;
		vStructure.nPage = rc.bottom * rc.bottom / vStructure.nMax;
		SetScrollInfo(SB_VERT, &vStructure);
	}
}
RECT CPictureWnd::GetPictureHwndRect()
{
	return m_rcPictureHwndRect;
}

bool CPictureWnd::GetPicPoint(POINT pt, POINT* pOut)
{
	if( !m_rcPictureHwndRect.PtInRect(pt) )
		return false;
	pOut->x = ( pt.x - m_rcPictureHwndRect.left ) + m_rcPictureRect.left;
	pOut->y = ( pt.y - m_rcPictureHwndRect.top ) + m_rcPictureRect.top;
	return true;
}

⌨️ 快捷键说明

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