VC實現去掉vista視窗的玻璃效果

2021-04-30 21:46:38 字數 1070 閱讀 7879

vc實現去掉vista視窗的玻璃效果

最近發現以前的自繪**視窗,在vista系統開啟玻璃效果的情況下,非客戶區的**總是被那層玻璃蓋著,甚感煩躁,經過查詢資料,發現那個玻璃效果是vista下有個dwm.exe弄的,微軟給出了相關api,可以自己定製某個視窗的效果。

http://msdn.microsoft.com/en-us/library/aa969540.aspx,該api的介紹,如果英文不好的話,可以用火狐瀏覽器翻譯該網頁,效果還不錯。

如果編譯器是vs2008以上的版本的話,**非常簡單,只需要在視窗初始化的地方加下如下**:

dwmncrenderingpolicy ncrp = dwmncrp_disabled;

dwmsetwindowattribute(getsafehwnd(),dwmwa_ncrendering_policy,&ncrp,sizeof(ncrp));

再包含下#include

如果編譯環境低於vs2008並且沒有 vista sdk的話是如下的**:

由於編譯環境中沒有dwmapi.h檔案,所以需要的一些定義就得自己加了,如下加了兩個列舉。

enum dwmwindowattribute

;

typedef enum _dwmncrenderingpolicy dwmncrenderingpolicy;

然後在動態鏈結庫中得到去掉玻璃效果的函式(dwmsetwindowattribute)進而執行該函式

typedef hresult (winapi * tmpfun)(hwnd,dword,lpcvoid,dword);

hmodule library = ::loadlibrary("dwmapi.dll");

tmpfun dwmsetwindowattributeex;

if (0 != library)   

verify(::freelibrary(library));   

}

VC動畫視窗的實現

函式功能 該函式 能在顯示與隱藏視窗時能產生特殊的效果。有兩種型別的動畫效果 滾動動畫和滑動動畫。函式原型 bool animatewindow hwnd hwnd,dword dwtime,dword dwflags 引數 hwnd 指定產生動畫的視窗的控制代碼。dwtime 指明動畫持續的時間 ...

VC 實現視窗異形

由於工作的需要,最近一直在研究異形視窗的實現。網上也有一些相關的文章,能夠滿足各式各樣的異形視窗要求。既然花了時間去研究,就想好好的將其總結記錄下來,以免今後遇到類似問題,還要從新花時間去研究。我需要完成的效果很簡單,但實現思路適合大部分的異形視窗。圖1 效果圖 總結了下,實現異形視窗的方法分為以下...

VC如何實現透明視窗

vc如何實現透明視窗 選擇自 leisureful 的 blog 在對話方塊初始化函式中加入 define lwa colorkey 0x00000001 define ws ex layered 0x00080000 typedef bool winapi lpfnsetlayeredwindow...