程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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