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...