📄 hyperlink.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 + -