📄 hyperlink.cpp
字号:
//HyperLink.CPP
// HyperLink.cpp : implementation file
#include "stdafx.h"
#include "HyperLink.h"
#include "Resource.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHyperLink
CHyperLink::CHyperLink()
{
m_crLinkColour = RGB( 0, 0, 238 );
m_crHoverColour = RGB( 255, 0, 255 );
m_bOverControl = FALSE;
}
CHyperLink::~CHyperLink()
{
m_Font.DeleteObject();
}
BEGIN_MESSAGE_MAP(CHyperLink, CStatic)
//{{AFX_MSG_MAP(CHyperLink)
ON_CONTROL_REFLECT(STN_CLICKED, OnClicked)
ON_WM_CTLCOLOR_REFLECT()
ON_WM_SETCURSOR()
ON_WM_MOUSEMOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHyperLink message handlers
void CHyperLink::OnClicked()
{
CString strURL;
GetWindowText( strURL );
// 装配成 URL 地址
/* strURL.Format( "mailto:%s", (LPCTSTR)m_MailAddr);/* * /*/
// 调用 ShellExecute() 执行邮件发送
int iRet = (int)ShellExecute( NULL, _T("open"), (LPCTSTR)strURL, NULL, NULL, SW_SHOW );
if( iRet <= HINSTANCE_ERROR )
AfxMessageBox("发送邮件失败!\n系统未安装邮件处理程序,或未设置缺省的邮件处理程序!!\n\n", MB_OK | MB_ICONEXCLAMATION );
}
HBRUSH CHyperLink::CtlColor(CDC* pDC, UINT nCtlColor)
{
ASSERT(nCtlColor == CTLCOLOR_STATIC);
if( m_bOverControl )
pDC->SetTextColor(m_crHoverColour);
else
pDC->SetTextColor(m_crLinkColour);
pDC->SetBkMode( TRANSPARENT );
return (HBRUSH)GetStockObject( NULL_BRUSH );
}
void CHyperLink::OnMouseMove(UINT nFlags, CPoint point)
{
CStatic::OnMouseMove(nFlags, point);
if( m_bOverControl ) {
CRect rc;
GetClientRect( &rc );
if( !rc.PtInRect(point) ) {
m_bOverControl = FALSE;
ReleaseCapture();
RedrawWindow();
return;
}
}
else {
m_bOverControl = TRUE;
RedrawWindow();
SetCapture();
}
}
BOOL CHyperLink::OnSetCursor(CWnd* /*pWnd*/, UINT /*nHitTest*/, UINT /*message*/)
{
::SetCursor( m_hLinkCursor );
return TRUE;
}
void CHyperLink::PreSubclassWindow()
{
// 要求得到 STN_CLICKED 通知消息
DWORD dwStyle = GetStyle();
::SetWindowLong( GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
// 设置字体下划线
LOGFONT lf;
GetFont()->GetLogFont( &lf );
lf.lfUnderline = TRUE;
m_Font.CreateFontIndirect( &lf );
SetFont( &m_Font );
CStatic::PreSubclassWindow();
}
void CHyperLink::SetInfo(LPTSTR sMailAddr, LPTSTR sName)
{
m_MailAddr = sMailAddr;
m_ShowName = sName;
}
BOOL CHyperLink::SetCursor(HCURSOR hCursor)
{
m_hLinkCursor = hCursor;
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -