about.cpp

来自「在VC编程环境下」· C++ 代码 · 共 156 行

CPP
156
字号
/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

	文件:about.h	类CAboutDlg的执行文件

	版权:Firebird Software Workroom 保留

	声明:本源程序的版权受《中华人民共和国著作权法》以及其
		  它相关法律和条约的保护。任何有机会得到本源程序的
		  个人和机构,未经作者明确授权,不得将本源程序用于
		  任何商业目的(直接的或间接的)。对于非商业目的的使
		  用 (包括复制、传播、编译和修改), 原则上没有特别
		  的限制条款,但请在相关文档中说明其来源,并尊重原
		  作者的署名权。

	编写:秦传安(chings)	2000.6

	联络:E_mail:chings@163.net
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
#include "fclstd.h"
#include "resource.h"
#include "about.h"
///////////////////////////////////////////////////////////////////////////////////
CAboutDlg::CAboutDlg()
{
	m_hBmp = NULL;
}
CAboutDlg::~CAboutDlg()
{
}
///////////////////////////////////////////////////////////////////////////////////
void CAboutDlg::OnInitDialog()
{
	HWND hwnd = GetDlgItem(m_hWnd,IDC_EMAILTO);
	m_wndHLink.Attach(hwnd);

	hwnd = GetDlgItem(m_hWnd,IDC_BUTTON1);
	m_wndFlatBtn.Attach(hwnd);
	HICON hIcon = LoadIcon(GetInstance(),MAKEINTRESOURCE(IDI_MAINICON));
	if(hIcon)
		m_wndFlatBtn.SetImage(IMAGE_ICON,(HANDLE)hIcon);

	m_hBmp = (HBITMAP)LoadImage(NULL,"chings.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
	if(m_hBmp)
	{
		BITMAP bmp;
		RECT rc;
		GetObject(m_hBmp,sizeof(bmp),&bmp);
		GetClientRect(m_hWnd,&rc);

		m_rcPic.left = (int)(rc.right - rc.left - bmp.bmWidth)/2;
		m_rcPic.top = rc.bottom - 24;
		m_rcPic.right = m_rcPic.left + bmp.bmWidth;
		m_rcPic.bottom = m_rcPic.top + bmp.bmHeight;
	}
	else
	{
		SetRectEmpty(&m_rcPic);
	}
}
///////////////////////////////////////////////////////////////////////////////////
LRESULT CAboutDlg::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam)
{
	if(msg == WM_PAINT)
	{
		PAINTSTRUCT ps;
		BeginPaint(m_hWnd,&ps);
		OnPaint(ps.hdc);
		EndPaint(m_hWnd,&ps);
		return 0;
	}
	else if(msg == WM_COMMAND && LOWORD(wParam) == IDC_BUTTON1)
	{
		RECT rc,rcOK;
		POINT pt;
		GetWindowRect(m_hWnd,&rc);

		HWND hwnd = GetDlgItem(m_hWnd,IDOK);
		GetWindowRect(hwnd,&rcOK);
		pt.x = rcOK.left;
		pt.y = rcOK.top;
		ScreenToClient(m_hWnd,&pt);

		int n;
		if(IsRectEmpty(&m_rcPic))
			n = 160;
		else
			n = m_rcPic.bottom - m_rcPic.top + 8;

		if(m_wndFlatBtn.IsPushed())
		{
			rc.bottom -= n;
			pt.y -= n;
			m_wndFlatBtn.Pushed(FALSE);
		}
		else
		{
			rc.bottom += n;
			pt.y += n;
			m_wndFlatBtn.Pushed(TRUE);
		}

		MoveWindow(m_hWnd,&rc,TRUE);
		SetWindowPos(hwnd,NULL,pt.x,pt.y,0,0,SWP_NOACTIVATE	| 
					SWP_NOSIZE | SWP_NOZORDER | SWP_NOCOPYBITS);
		Invalidate();
		return 0;
	}
	else
		return CModalDlg::WindowProc(msg,wParam,lParam);
}
///////////////////////////////////////////////////////////////////////////////////
void CAboutDlg::OnPaint(HDC hDC)
{
	RECT rc;
	GetClientRect(m_hWnd,&rc);

	rc.top += 4;
	rc.left += 2;
	rc.right -= 2;
	rc.bottom -= 28;

	DrawEdge(hDC,&rc,EDGE_ETCHED,BF_RECT);

	if(m_wndFlatBtn.IsPushed())
	{
		int n;
		if(m_hBmp)
		{
			n = m_rcPic.bottom - m_rcPic.top + 8;
			HDC hBmpDC = CreateCompatibleDC(hDC);
			SelectObject(hBmpDC,m_hBmp);
			BitBlt(hDC,m_rcPic.left,m_rcPic.top,m_rcPic.right - m_rcPic.left,
					m_rcPic.bottom - m_rcPic.top,hBmpDC,0,0,SRCCOPY);
			DeleteDC(hBmpDC);
			DrawEdge(hDC,&m_rcPic,EDGE_SUNKEN,BF_RECT);
		}
		else
			n = 160;

		rc.top = rc.bottom - n -1;
		rc.left += 1;
		rc.right -= 1;
		DrawEdge(hDC,&rc,EDGE_ETCHED,BF_TOP);

		if(!m_hBmp)
		{
			LPTSTR pText = "没有找到图片文件";
			SIZE sz;

			GetTextExtentPoint32(hDC,pText,lstrlen(pText),&sz);
			rc.top += (int)((rc.bottom - rc.top) - sz.cy)/2;
			DrawText(hDC,pText,lstrlen(pText),&rc,DT_CENTER);
		}
	}
}

⌨️ 快捷键说明

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