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

📄 hyperlink.cpp

📁 在VC编程环境下
💻 CPP
字号:
/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	文件:HyperLink.cpp

	版权:Firebird Software Workroom 保留

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

	编写:秦传安(chings)	2000.6

	联络:E_mail:chings@163.net
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
#include "fclstd.h"
#include "HyperLink.h"
//#####################################################################
CHyperLink::CHyperLink()
{
	m_hcrHand = NULL;
	m_bMouseOver = FALSE;
}

CHyperLink::~CHyperLink()
{
}
//#####################################################################
BOOL CHyperLink::OnCreate()
{
	ModifyWndStyle(0,SS_NOTIFY | SS_OWNERDRAW);

	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_hcrHand = CopyCursor(hHandCursor);
	}
	FreeLibrary(hModule);

	return TRUE;
}
//#####################################################################
LRESULT CHyperLink::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam)
{
	LRESULT lResult = 0;

	switch(msg)
	{
	case WM_SETCURSOR:
		if(m_hcrHand)
			SetCursor(m_hcrHand);
		else
			lResult = CFBStatic::WindowProc(msg,wParam,lParam);
		break;
	case WM_MOUSEMOVE:
		{
			POINT pt;
			pt.x = LOWORD(lParam);
			pt.y = HIWORD(lParam);

			OnMouseMove(pt);
		}
		break;
	case WM_LBUTTONUP:
		OnClick();
		break;
	case WM_DRAWITEM:
		{
			LPDRAWITEMSTRUCT pds = (LPDRAWITEMSTRUCT)lParam;
			OnDrawItem(pds);
		}
		break;
	default:
		lResult = CFBStatic::WindowProc(msg,wParam,lParam);
		break;
	}

	return lResult;
}
//#####################################################################
void CHyperLink::OnMouseMove(POINT pt)
{
	RECT rc;
	GetClientRect(m_hWnd,&rc);

	if(PtInRect(&rc,pt))
	{
		SetCapture(m_hWnd);
		if(m_bMouseOver == FALSE)
		{
			m_bMouseOver = TRUE;
			Invalidate(FALSE);
		}
	}
	else
	{
		ReleaseCapture();
		m_bMouseOver = FALSE;
		Invalidate(FALSE);
	}
}
//#####################################################################
void CHyperLink::OnDrawItem(LPDRAWITEMSTRUCT pds)
{
	SetBkMode(pds->hDC,TRANSPARENT);

	if(m_bMouseOver)
		SetTextColor(pds->hDC,RGB(128,0,128));
	else
		SetTextColor(pds->hDC,RGB(0,0,255));

	char tmp[MAX_PATH];
	GetText(tmp,MAX_PATH);
	DrawText(pds->hDC,tmp,lstrlen(tmp),&pds->rcItem,DT_CENTER);
}
//#####################################################################
void CHyperLink::OnClick()
{
	char tmp[MAX_PATH];
	GetText(tmp,MAX_PATH);
	if(tmp[0] == '\0')
		return;

	int n = lstrlen(tmp);
	for(int i=0; i<n; i++)
	{
		if(tmp[i] == '@')
			break;
	}

	if(i<n)
	{
		char str[MAX_PATH];
		lstrcpy(str,"mailto:");
		lstrcat(str,tmp);
		ShellExecute(NULL, NULL, str, NULL, NULL, SW_SHOWNORMAL);
	}
	else
		ShellExecute(NULL, "open", tmp, NULL, NULL, SW_SHOWNORMAL);
}

⌨️ 快捷键说明

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