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

善用 Windows 內建 IP 位址控制項 (SysIPAddress32) 於 C++Builder

     編輯:VC 教學

在網路程式開發中,讓使用者輸入 IP 位址向來是個麻煩事:TEdit 既無法限制輸入範圍(0-255),又需自行解析字串轉換為 32 位整數。其實 Windows 早就提供現成的解決方案——IP 位址控制項(類別名 SysIPAddress32),位於 comctl32.dll 中。本文教你如何在 C++Builder 中整合並使用這個原生控制項。

初始化通用控制項庫

IP 控制項屬於 Internet Explorer 3 引入的新控制項,必須呼叫 InitCommonControlsEx 並指定 ICC_INTERNET_CLASSES 旗標才能使用:

INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof(icc);
icc.dwICC = ICC_INTERNET_CLASSES;
InitCommonControlsEx(&icc);

建議在專案的 WinMain 或表單的 OnCreate 最早期執行此初始化。

動態建立控制項

由於 VCL 未包裝此控制項,需用 CreateWindowEx 動態建立:

HWND hIP = CreateWindowEx(
    WS_EX_CLIENTEDGE, WC_IPADDRESS, NULL,
    WS_CHILD | WS_VISIBLE | WS_TABSTOP,
    10, 10, 150, 22,
    Handle, (HMENU)IDC_MYIP, HInstance, NULL
);

WC_IPADDRESS 宏定義於 <commctrl.h>,展開為 "SysIPAddress32"。

常用訊息與巨集

功能訊息/巨集說明
設定 IPIPM_SETADDRESS / IPAddress_SetAddress(hwnd, ip)ip 為 MAKEIPADDRESS(b1,b2,b3,b4) 組合的 DWORD
取得 IPIPM_GETADDRESS / IPAddress_GetAddress(hwnd, &ip)回傳欄位填寫狀態,ip 輸出 DWORD
設定範圍IPM_SETRANGE / IPAddress_SetRange(hwnd, field, min, max)限制某欄位(0-3)輸入範圍
清空IPM_CLEARADDRESS重設為空白

整合到 VCL 表單

將 HWND 封裝在自訂元件中,於 CreateParams 或建構函式建立視窗,並公開 IPAddress 屬性(DWORD 或 AnsiString)供設計時編輯,即可像原生 VCL 控制項一樣使用,享受自動驗證、鍵盤導航、複製貼上等完整體驗。

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