代碼運行效果圖如下:
此不規則對話框的實現應用了一個重要的位圖對話框類——CBitmapDialog ,通過靈活運用,可以實現任意形狀的對話框。
一、CBitmapDialog 簡介:
CBitmapDialog從CDialog派生並封裝了根據位圖形成任意形狀對話框的功能,類的實現也非常簡單,主要是一些加載位圖、設置透明色等操作,最關鍵的函數是MakeWindowRgn, 它根據位圖生成所需的區域對象, 然後調用SetWindowRgn將窗口設置成需要的形狀,MakeWindowRgn函數的具體代碼請參考本文配套的代碼。
二、CBitmapDialog類的使用
下面介紹CBitmapDialog類的使用過程:
1.運行VC,建立基於對話框的應用程序 BitmapDlg。設置對話框的屬性,去掉邊框和標題欄。
2.插入位圖。(在插入->資源->選 Bitmap)
3.在CBitmapDialogDlg 的BOOL CBmpDlgDlg::OnInitDialog() 中添加如下代碼:
LoadBitmap(IDB_BITMAP1);//加載位圖
SetTransparent (TRUE);
SetTransColor (RGB(0,0,0));//去掉形狀的顏色設置
SetStaticTransparent (TRUE);
SetClickAnywhereMove (TRUE);//鼠標是否能拖動窗體。
4.將 CBitmapDialogDlg 的基類改為 CBitmapDialog,並將更改相應的消息映射。
請大家都來試一試吧!
本文配套源碼