程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++語言中的毛玻璃效果

C++語言中的毛玻璃效果

編輯:C++入門知識

本文將演示在基於Windows Vista的普通Windows應用程序及對話框程序中,如何利用C++語言來生成Aero毛玻璃效果,此處使用的是Beta 2版本的Vista及Windows SDK,現在就讓大家看一下震撼的效果吧。

一些API在細節上會有所變化。另外,文中沒有使用MFC,全部例子用WTL 7.5生成,其可在http://wtl.sourceforge.net/下載得到,雖然此處使用的是Visual C++ 2003,但Visual C++ 2005也類似。

  • C++中的C++代碼真的這麼復雜嗎
  • Visual C++ 6.0開發工具介紹
  • 如何學好C++庫類?
  • C++函數調用方式解析
  • 講述C++中的C++基類

Aero主題及毛玻璃效果,是隨同Vista"桌面窗口治理DWM)"而來的新特性,也是微軟市場推廣的一個重心,在應用程序中集成毛玻璃效果,當打開Aero主題時,程序看上去會顯得非常與眾不同--很酷,對吧。

Aero主題中的毛玻璃效果

當以Aero為主題時,Vista會根據計算機顯卡進行判定是否開啟毛玻璃效果,此時桌面由DWM進行繪制,而DWM使用一個composition進程來渲染桌面,其會在頂層窗口的非客戶區自動使用Aero主題元素有點類似於Windows XP)。又說回來,也不是總會添加這些毛玻璃效果的,假如計算機運行於"電池模式",或用戶決定關閉透明效果,那麼非客戶區就不會有毛玻璃效果了,如下圖所示。

假如在控制面板的可視效果中打開了透明玻璃效果,那非客戶區看上去就像下圖這樣:

用C++品嘗Vista美味:界面的毛玻璃效果圖一)

請留意,記事本的邊框呈現綠色調,這是牆紙透過來的顏色,並且也可以透過標題欄看到桌面的一些圖標。我們在編寫代碼的時候,要害只須留意composition是否打開,而不是設置了什麼毛玻璃效果,因為DWM會處理毛玻璃效果繪制的部分。

項目開始

第一個示例程序是不帶視窗口、工具條、狀態條的SDI應用程序,在運行完WTL AppWizard之後,第一件事就是設置stdafx.h中的#define,以便利用Vista的新特性。Vista的Windows版本為6,且Vista中IE的版本為7,設置完成後應像下面這樣:

用C++品嘗Vista美味:界面的毛玻璃效果圖二)

在GetThemeTextMetrics() API中的轉換,是對Platform SDK的uxtheme.h中錯誤的修正,然而,Windows SDK卻沒有這個錯誤,所以這個轉換導致了一個錯誤,可刪除函數中的這個轉換,其他三個也同樣。 添加邊框的毛玻璃效果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved