程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 一個支持皮膚化的對話框類

一個支持皮膚化的對話框類

編輯:vc教程

  一、介紹

  該類從MFC的CDialog繼承而來,支持如下特征:

  1、運行於win2000或者winxp平台上,可以使用任何透明色以透視對話框的區域。

  2、運行於win2000或者winxp平台上,可以使得整個對話框透明。

  3、使用位圖背景。位圖可以來自資源文件、bmp或者HBITMAP

  4、設置背景類型:標題、中心、伸縮;設置對話框的大小適合位圖的大小

  5、可以點擊對話框的任何部分允許/禁止移動對話框

  二、用法

  使用該類的方法如下:

  1、往工程中加入文件CDialogSK.h和CDialog.cpp

  2、在你的對話框類中包含CDialogSD.h

  3、在你的對話框類中用CDialogSK代替所有的CDialog

  4、如果要使用背景圖片,找到對話框屬性的類型選項,使得Style=Popup,

  Border=None,並使Title Bar為未選擇狀態。

  5、在你的對話框類的OnInitDialog的結尾處,加入CDialogSK屬性方法的調用:

  

BOOL CSkinDialog_DemoDlg::OnInitDialog()
{
   ...
   EnableEasyMove();            // 允許移動
   SetBitmap (IDB_BACKGROUND);       //設置背景位圖
   SetStyle (LO_RESIZE);          // 使對話框大小適合位圖大小
   SetTransparentColor(RGB(0, 255, 0));  //設置透明色為綠色
return TRUE;
}

  6、例如,假如你想生成一個圓形的對話框,可以創建一個圖片,背景為綠,畫一個藍色的圓。然後,調用SetBitmap,參數為圖像的路徑,調用SetTransparentColor,參數為背景的顏色(綠色)。這樣就看不到背景,得到一給圓形的窗口。

  三、方法

  CDialogSK類提供如下的方法:

  1、DWORD SetBitmap (HBITMAP hBitmap);

  2、DWORD SetBitmap (int nBitmap);

  3、DWORD SetBitmap (LPCTSTR lpszFileName);

  4、void SetStyle (LayOutStyle style);

  LO_DEFAULT, LO_TILE (標題圖片), LO_CENTER (中心圖片), LO_STRETCH (伸縮

  圖片以適合對話框大小), or LO_RESIZE (伸縮對話框適合圖片).

  5、void EnableEasyMove (BOOL pEnable = TRUE);

  6、BOOL SetTransparent (BYTE bAlpha);

  使整個對話框透明,范圍為0(透明)-255(不透明)。只適合win2000及以上版

  本

  7、BOOL SetTransparentColor (COLORREF col, BOOL bTrans = TRUE);

  指定透明色。只適合win2000及以上版本。

  CDialogSK類文件下載地址http://www.codeguru.com/code/legacy/dialog/CDialogSK_src.zip

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved