www.gusucode.com > VC++指定区域抓图、截屏小程序-源码程序 > VC++指定区域抓图、截屏小程序-源码程序/code/about.cpp

    //Download by http://www.NewXing.com
/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

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

	版权:Firebird Software Workroom 保留

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

	编写:秦传安(chings)	1999.12 - 2000.4

	联络:Tel:(0792)6323086	E_mail:chings@163.net
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
#include "fclstd.h"
#include "resource.h"
#include <shellapi.h>
#include "about.h"

BOOL CAboutDlg::m_bOverHLink = FALSE;
HCURSOR CAboutDlg::m_hLinkCursor = NULL;
WNDPROC CAboutDlg::pfnStaticProc = NULL;
///////////////////////////////////////////////////////////////////////////////////
CAboutDlg::CAboutDlg()
{
}
CAboutDlg::~CAboutDlg()
{
}
///////////////////////////////////////////////////////////////////////////////////
LRESULT CAboutDlg::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam)
{
	if(msg == WM_CTLCOLORSTATIC)
	{
		int nRet = 1;
		HWND hStatic = GetDlgItem(m_hWnd,IDC_EMAILTO);
		if(hStatic == (HWND)lParam)
		{
			if(!m_bOverHLink)
				SetTextColor((HDC)wParam,RGB(0,0,238));
			else
				SetTextColor((HDC)wParam,RGB(85,26,139));
			SetBkMode((HDC)wParam,TRANSPARENT);
			nRet = (int)(HBRUSH)GetStockObject(NULL_BRUSH);
		}
		return nRet;
	}
	else
		return CModalDlg::WindowProc(msg,wParam,lParam);
}
///////////////////////////////////////////////////////////////////////////////////
void CAboutDlg::OnInitDialog()
{
	char caption[16];
	SendMessage(m_pOwner->m_hWnd,WM_GETTEXT,16,(LPARAM)caption);
	HWND hwnd = GetDlgItem(m_hWnd,IDC_CAPTION);
	SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)caption);

	char WinPath[MAX_PATH];
	GetWindowsDirectory(WinPath, MAX_PATH);
	lstrcat(WinPath,"\\winhlp32.exe");
	HMODULE hModule = LoadLibrary(WinPath);
	if (hModule) {
		HCURSOR hHandCursor = ::LoadCursor(hModule, MAKEINTRESOURCE(106));
		if (hHandCursor)
			m_hLinkCursor = CopyCursor(hHandCursor);
	}
	FreeLibrary(hModule);

	HWND hStatic = GetDlgItem(m_hWnd,IDC_EMAILTO);
	if(hStatic)
		pfnStaticProc = (WNDPROC)SetWindowLong(hStatic,GWL_WNDPROC,(LONG)StaticProc);

	CenterWindow(m_hWnd);
}
///////////////////////////////////////////////////////////////////////////////////
void CAboutDlg::OnCommand(UINT uCmdID,UINT code)
{
	if((code == STN_CLICKED) && (uCmdID == IDC_EMAILTO))
	{
		char str[MAX_PATH];
		char tmp[MAX_PATH];
		HWND hStatic = GetDlgItem(m_hWnd,IDC_EMAILTO);
		SendMessage(hStatic,WM_GETTEXT,MAX_PATH,(LPARAM)tmp);
		lstrcpy(str,"mailto:");
		lstrcat(str,tmp);
		ShellExecute(NULL,NULL,str,NULL,NULL,SW_SHOWNORMAL);
	}
}
///////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK CAboutDlg::StaticProc (HWND hWnd, UINT msg, UINT wParam, LPARAM lParam)
{
	LRESULT lResult = 0;

	switch(msg)
	{
	case WM_SETCURSOR:
		SetCursor(m_hLinkCursor);
		break;
	case WM_MOUSEMOVE:
		{
			RECT rc;
			POINT pt;
			GetClientRect(hWnd,&rc);
			pt.x = LOWORD(lParam);
			pt.y = HIWORD(lParam);
			if(!PtInRect(&rc,pt))
			{
				m_bOverHLink = FALSE;
				ReleaseCapture();
				RedrawWindow(hWnd,NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW);
			}
			else
			{
				m_bOverHLink = TRUE;
				SetCapture(hWnd);
				RedrawWindow(hWnd,NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW);
			}
		}
		break;
	default:
		lResult = CallWindowProc(pfnStaticProc,hWnd,msg,wParam,lParam);
		break;
	}

	return lResult;
}