首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC++ 圖片超連結控件 (CMapHyperLink)

     編輯:關於VC++

前言

經典 CHyperLink (Chris Maunder) 僅支援靜態文字超連結。專案需求在 Picture Control 上實現超連結:滑鼠進入變手型、點擊開啟網址、ToolTip 顯示提示。本文在其基礎上衍生 CMapHyperLink,專為圖片控件設計。

介面方法

方法說明
SetURL(CString)設定目標網址 (如 https://www.google.com)
GetURL()取得目前網址
SetTipText(CString)設定 ToolTip 文字 (預設為 URL)
GetTipText()取得 ToolTip 文字
SetVisited(BOOL)設定已瀏覽狀態 (視覺回饋)
GetVisited()取得瀏覽狀態
SetLinkCursor(HCURSOR)自訂滑鼠游標 (預設手型)
GetLinkCursor()取得游標控制碼
SetAutoSize(BOOL)視窗縮放時自動調整圖片位置 (預設開啟)
GetAutoSize()取得自動調整狀態

使用方法

  1. 資源編輯器放置 Picture Control (ID: IDC_PIC_LINK,Type: Frame 或 Bitmap)。
  2. 類別向導新增控制項變數,類別選 CMapHyperLink (需先加入 .h/.cpp)。
  3. OnInitDialog 設定:

m_picLink.SetURL(_T("https://www.google.com"));
m_picLink.SetTipText(_T("點擊前往 Google 搜尋"));
// 可選:載入圖片
m_picLink.SetBitmap(IDB_MY_LOGO); // 若控件支援

核心實現邏輯

  • 繼承 CStatic,處理 WM_MOUSEMOVE/WM_LBUTTONDOWN/WM_SETCURSOR。
  • WM_SETCURSOR 回傳 SetLinkCursor 設定的游標 (預設 LoadCursor(NULL, IDC_HAND))。
  • WM_LBUTTONDOWN 呼叫 ShellExecute(_T("open"), m_strURL, ...) 開啟預設瀏覽器。
  • PreSubclassWindow 建立 CToolTipCtrl 並 AddTool 關聯控制項區域。
  • 不處理文字繪製,避免與 CHyperLink 衝突;專注圖片控件行為。

效果展示

滑鼠懸停顯示手型游標與 ToolTip,點擊啟動瀏覽器開啟指定網址。

注意事項

  • 僅適用於 Picture Control (SS_BITMAP/SS_ICON/SS_OWNERDRAW);文字超連結請用 CHyperLink。
  • 若 Picture Control 設為 Notify 樣式,可接收 STN_CLICKED 替代自訂訊息。
  • 圖片資源建議使用透明背景 ICO/PNG (需 GDI+ 載入) 以適應不同底色。
  • 未呼叫任何 Set* 方法時行為為普通 Picture Control,不影響編譯。

完整原始碼 MapHyperLink.h/cpp 可直接加入專案使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved