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

支援換膚的 MFC 對話框類 CDialogSK 使用詳解

     編輯:VC 教學

類別簡介

CDialogSK 繼承自 MFC 的 CDialog,提供完整的對話框皮膚化支援,適用於 Windows 2000/XP 及以上系統。核心功能包括:

  • 任意透明色挖空對話框區域(實現非矩形視窗)
  • 整體視窗 Alpha 混合透明度
  • 位圖背景支援(資源、BMP 檔、HBITMAP 句柄)
  • 背景佈局模式:平鋪、置中、拉伸、或依圖片大小調整視窗
  • 點擊任意區域拖曳移動視窗

快速上手步驟

  1. 將 CDialogSK.h、CDialogSK.cpp 加入專案
  2. 在對話框類別的標頭檔包含 #include "CDialogSK.h"
  3. 將基類從 CDialog 改為 CDialogSK
  4. 對話框屬性設定:
    Style = Popup、Border = None、Title Bar = False(去除標準標題列與邊框)
  5. 在 OnInitDialog() 末尾呼叫皮膚初始化方法:
BOOL CSkinDialog_DemoDlg::OnInitDialog()
{
    CDialogSK::OnInitDialog(); // 呼叫基類

    EnableEasyMove();           // 允許點擊任意處拖曳
    SetBitmap(IDB_BACKGROUND);  // 設定背景位圖 (資源 ID)
    SetStyle(LO_RESIZE);        // 視窗大小自動適應圖片
    SetTransparentColor(RGB(0, 255, 0)); // 設定透明色 (綠色)

    return TRUE;
}

進階範例:建立圓形視窗

  1. 製作一張 BMP 圖片:背景填滿綠色 (RGB(0,255,0)),中央畫一個藍色圓形
  2. 呼叫 SetBitmap("path\\round.bmp") 載入
  3. 呼叫 SetTransparentColor(RGB(0, 255, 0)) 移除綠色背景
  4. 結果:只顯示藍色圓形,四周透明,形成圓形視窗

核心方法參考表

方法說明
DWORD SetBitmap(HBITMAP hBitmap)從 HBITMAP 句柄設定背景
DWORD SetBitmap(int nBitmap)從資源 ID 設定背景
DWORD SetBitmap(LPCTSTR lpszFileName)從 BMP 檔案路徑設定背景
void SetStyle(LayOutStyle style)佈局模式:
LO_DEFAULT、LO_TILE(平鋪)、LO_CENTER(置中)、LO_STRETCH(拉伸填滿)、LO_RESIZE(視窗縮放適應圖片)
void EnableEasyMove(BOOL bEnable = TRUE)啟用/停用點擊任意處拖曳移動
BOOL SetTransparent(BYTE bAlpha)整體視窗透明度 (0 完全透明 ~ 255 不透明),需 Win2000+
BOOL SetTransparentColor(COLORREF col, BOOL bTrans = TRUE)指定透明色 (Color Key),需 Win2000+

原始碼下載

CDialogSK 完整原始碼 (CodeGuru)

適用場景與提示

  • 適合需要自定義外觀的對話框式應用程式(登入框、播放器面板、工具箱等)
  • 透明色與 Alpha 混合可同時使用,但建議二擇一以免效能負擔
  • 若在 Windows 7/10 以上使用,建議開啟 DWM 合成以獲得最佳視覺效果
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved