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

支援皮膚化的 MFC 對話框類 CDialogSK 使用指南

     編輯:關於VC++

類別特色

CDialogSK 繼承自 CDialog,提供完整皮膚化支援:

  • Win2000/XP 透明色鍵控(任意色透視)與整體 Alpha 混合 (0-255)
  • 背景圖片來源:資源 ID、BMP 檔案、HBITMAP 句柄
  • 佈局模式:平鋪、置中、拉伸填滿、視窗自適應圖片尺寸
  • 任意區域拖曳移動視窗(EnableEasyMove)
  • 無標題、無邊框、Popup 風格配合圖形視窗

快速上手

  1. 專案加入 CDialogSK.h、CDialogSK.cpp
  2. 對話框類別包含標頭,將基底類別從 CDialog 改為 CDialogSK
  3. 資源編輯器中設定對話框:Style=Popup、Border=None、Title Bar=未勾選
  4. OnInitDialog 尾部初始化:

BOOL CSkinDialogDemoDlg::OnInitDialog() {
    CDialogSK::OnInitDialog();
    EnableEasyMove();                    // 允許任意處拖曳
    SetBitmap(IDB_BACKGROUND);           // 設定背景圖 (資源 ID)
    SetStyle(LO_RESIZE);                 // 視窗大小自適應圖片
    SetTransparentColor(RGB(0,255,0));   // 綠色為透明色
    return TRUE;
}

建立圓形/異形視窗範例

  1. 製作圖片:背景填滿透明色 (如綠色 RGB(0,255,0)),前景繪製藍色圓形
  2. 呼叫 SetBitmap(path) 載入圖片
  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 clr, BOOL bTrans=TRUE)指定透明色鍵,Win2000+

下載連結

原始碼:CDialogSK_src.zip

應用場景建議

  • 多媒體播放器、即時通訊軟體、系統工具等需求美觀介面的應用
  • 搭配 PNG+Alpha 通道可實現更細緻邊緣(需自行擴充 GDI+ 載入)
  • 注意:Win2000 以下不支援分層視窗 API,透明功能將失效
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved