一、介紹
該類從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