锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鏈枃灝嗘紨紺哄湪鍩轟簬Windows Vista鐨勬櫘閫歐indows搴旂敤紼嬪簭鍙婂璇濇紼嬪簭涓紝濡備綍鍒╃敤C++鏉ョ敓鎴怉ero姣涚幓鐠冩晥鏋滐紝姝ゅ浣跨敤鐨勬槸Beta 2鐗堟湰鐨刅ista鍙奧indows SDK錛屼篃璁稿湪鍚庣畫鐨勭増鏈腑錛屼竴浜汚PI鍦ㄧ粏鑺備笂浼氭湁鎵鍙樺寲銆傚彟澶栵紝鏂囦腑娌℃湁浣跨敤MFC錛屽叏閮ㄤ緥瀛愮敤WTL 7.5鐢熸垚錛屽叾鍙湪http://wtl.sourceforge.net/涓嬭澆寰楀埌錛岃櫧鐒舵澶勪嬌鐢ㄧ殑鏄疺isual C++ 2003錛屼絾Visual C++ 2005涔熺被浼箋?/p>
Aero涓婚鍙婃瘺鐜葷拑鏁堟灉錛屾槸闅忓悓Vista“妗岄潰紿楀彛綆$悊錛圖WM錛?#8221;鑰屾潵鐨勬柊鐗規э紝涔熸槸寰蔣甯傚満鎺ㄥ箍鐨勪竴涓噸蹇冿紝鍦ㄥ簲鐢ㄧ▼搴忎腑闆嗘垚姣涚幓鐠冩晥鏋滐紝褰撴墦寮Aero涓婚鏃訛紝紼嬪簭鐪嬩笂鍘諱細鏄懼緱闈炲父涓庝紬涓嶅悓--寰堥叿錛屽鍚с? Aero涓婚涓殑姣涚幓鐠冩晥鏋?/strong> 褰撲互Aero涓轟富棰樻椂錛孷ista浼氭牴鎹綆楁満鏄懼崱榪涜鍒ゆ柇鏄惁寮鍚瘺鐜葷拑鏁堟灉錛屾鏃舵闈㈢敱DWM榪涜緇樺埗錛岃孌WM浣跨敤涓涓猚omposition榪涚▼鏉ユ覆鏌撴闈紝鍏朵細鍦ㄩ《灞傜獥鍙g殑闈炲鎴峰尯鑷姩浣跨敤Aero涓婚鍏冪礌錛堟湁鐐圭被浼間簬Windows XP錛夈傝瘽鍙堣鍥炴潵錛屼篃涓嶆槸鎬諱細娣誨姞榪欎簺姣涚幓鐠冩晥鏋滅殑錛屽鏋滆綆楁満榪愯浜?鐢墊睜妯″紡"錛屾垨鐢ㄦ埛鍐沖畾鍏抽棴閫忔槑鏁堟灉錛岄偅涔堥潪瀹㈡埛鍖哄氨涓嶄細鏈夋瘺鐜葷拑鏁堟灉浜嗭紝濡備笅鍥炬墍紺恒?/p>
璇風暀鎰忥紝璁頒簨鏈殑杈規鍛堢幇緇胯壊璋冿紝榪欐槸澧欑焊閫忚繃鏉ョ殑棰滆壊錛屽茍涓斾篃鍙互閫忚繃鏍囬鏍忕湅鍒版闈㈢殑涓浜涘浘鏍囥?/p>
鎴戜滑鍦ㄧ紪鍐欎唬鐮佺殑鏃跺欙紝鍏抽敭鍙』鐣欐剰composition鏄惁鎵撳紑錛岃屼笉鏄緗簡浠涔堟瘺鐜葷拑鏁堟灉錛屽洜涓篋WM浼氬鐞嗘瘺鐜葷拑鏁堟灉緇樺埗鐨勯儴鍒嗐?/p>
欏圭洰寮濮?/strong> 絎竴涓ず渚嬬▼搴忔槸涓嶅甫瑙嗙獥鍙c佸伐鍏鋒潯銆佺姸鎬佹潯鐨凷DI搴旂敤紼嬪簭錛屽湪榪愯瀹學TL AppWizard涔嬪悗錛岀涓浠朵簨灝辨槸璁劇疆stdafx.h涓殑#define錛屼互渚垮埄鐢╒ista鐨勬柊鐗規с俈ista鐨刉indows鐗堟湰涓?錛屼笖Vista涓璉E鐨勭増鏈負7錛岃緗畬鎴愬悗搴斿儚涓嬮潰榪欐牱錛?/p>
鍦℅etThemeTextMetrics() API涓殑杞崲錛屾槸瀵筆latform SDK鐨剈xtheme.h涓敊璇殑淇錛岀劧鑰岋紝Windows SDK鍗存病鏈夎繖涓敊璇紝鎵浠ヨ繖涓漿鎹㈠鑷翠簡涓涓敊璇紝鍙垹闄ゅ嚱鏁頒腑鐨勮繖涓漿鎹紝鍏朵粬涓変釜涔熷悓鏍楓?/p>
娣誨姞杈規鐨勬瘺鐜葷拑鏁堟灉 閫氳繃鎶婃瘺鐜葷拑鏁堟灉浠庨潪瀹㈡埛鍖烘墿灞曞埌瀹㈡埛鍖猴紝灝卞彲瀹屾垚娣誨姞紼嬪簭鐨勬瘺鐜葷拑鏁堟灉錛岃繖涓狝PI鏄疍wmExtendFrameIntoClientArea()銆侱wmExtendFrameIntoClientArea()鎺ュ彈涓や釜鍙傛暟錛氭垜浠鏋剁獥鍙g殑HWND鍜屼竴涓敤浜庤鏄庢瘺鐜葷拑鏁堟灉鎵╁睍鍒扮獥鍙e洓鍛ㄥ榪滅殑MARGINS緇撴瀯銆傚彲鍦∣nCreate()涓皟鐢ㄨ繖涓狝PI錛?/p>
濡傛灉鍦ㄦ帶鍒墮潰鏉跨殑鍙鏁堟灉涓墦寮浜嗛忔槑鐜葷拑鏁堟灉錛岄偅闈炲鎴峰尯鐪嬩笂鍘誨氨鍍忎笅鍥捐繖鏍鳳細
#define WINVER 0x0600
#define _WIN32_WINNT 0x0600
#define _WIN32_IE 0x0700
鎺ヤ笅鏉ュ寘鍚獳TL涓嶹TL鐨勫ご鏂囦歡錛?br>
#define _WTL_NO_WTYPES // 涓嶈鍦╓TL澶存枃浠朵腑瀹氫箟CRect/CPoint/CSize
#include <atlbase.h>
#include <atltypes.h>//鍏變韓鐨凜Rect/CPoint/CSize
#include <atlapp.h>
extern CAppModule _Module;
#include <atlwin.h>
#include <atlframe.h>
#include <atlmisc.h>
#include <atlcrack.h>
#include <atltheme.h>// XP/Vista涓婚鏀寔
#include <dwmapi.h>// DWM API
濡傛灉淇敼瀹屾垚涔嬪悗灝辯紪璇戯紝灝嗕細浠巃tltheme.h涓緱鍒?涓敊璇備緥濡傦紝浠ヤ笅鏄笉浼氱紪璇戦氳繃鐨凜Theme::GetThemeTextMetrics()浠g爜錛?br>
HRESULT GetThemeTextMetrics(..., PTEXTMETRICW pTextMetric)
{
銆ATLASSERT(m_hTheme != NULL);
銆//娉ㄦ剰錛氬洜涓簎xtheme.h澶存枃浠訛紝鎵浠ヨ漿鎹負PTEXTMETRIC銆?br>
銆//鏇挎崲鎺塒TEXTMETRICW鏄笉瀵圭殑
銆return ::GetThemeTextMetrics(m_hTheme, ..., (PTEXTMETRIC) pTextMetric);
}
LRESULT CMainFrame::OnCreate(LPCREATESTRUCT lpcs)
{
銆//鍦ㄥ簳閮ㄦ坊鍔犵幓鐠冩晥鏋?br>
銆MARGINS mar = {0};
銆mar.cyBottomHeight = 100;
銆DwmExtendFrameIntoClientArea ( m_hWnd, &mar );
銆return 0;
}
浣嗗鏋滆繍琛岀▼搴忥紝鐪嬩笉鍒版湁浠諱綍鍙樺寲錛?/p>
榪欐槸鍥犱負姣涚幓鐠冩晥鏋滀緷璧栦簬紿楀彛鐨勯忔槑搴︼紝涓烘樉紺哄嚭鐜葷拑鏁堟灉錛屽尯鍩熶腑鍍忕礌錛堝湪鏈緥涓負瀹㈡埛鍖哄簳閮ㄧ殑100鍍忕礌錛夌殑alpha鍊煎繀欏昏緗負0銆傛渶綆鍗曠殑鏂規硶鏄敤涓涓粦鐢誨埛鏉ョ粯鍒惰繖涓尯鍩燂紝瀹冧細鎶婂儚绱犵殑棰滆壊鍊鹼紙綰€佺豢銆佽摑鍜宎lpha錛夎涓?錛屽彲鍦∣nEraseBkgnd()涓畬鎴愶細
BOOL CMainFrame::OnEraseBkgnd ( HDC hdc ) { 銆CDCHandle dc = hdc; 銆CRect rcClient; 銆GetClientRect(rcClient); 銆dc.FillSolidRect(rcClient, RGB(0,0,0)); 銆return true; } |
淇敼涔嬪悗錛屾鏋剁獥鍙g湅璧鋒潵鍍忚繖鏍鳳細
搴曢儴鐨?00鍍忕礌鐜板湪鏄瘺鐜葷拑鏁堟灉浜嗐?/p>
鍦ㄦ瘺鐜葷拑鍖哄煙娣誨姞鏂囨湰
鍦ㄧ獥鍙d腑娣誨姞姣涚幓鐠冩晥鏋滄槸姣旇緝綆鍗曠殑閮ㄥ垎錛屼絾瑕佹妸鑷繁鐨勭晫闈㈠厓绱狅紙UI錛夋坊鍔犲埌姣涚幓鐠冧箣涓婏紝灝辨湁鐐歸毦搴︿簡銆傚洜涓哄繀欏諱竴鐩翠繚鎸佸儚绱犵殑alpha鍊鹼紝鎵浠ュ氨瑕佺敤鍒伴偅浜涘彲浠ョ悊瑙e茍閫傚綋璁劇疆alpha鐨勭粯鍥続PI銆傚潖娑堟伅鏄紝GDI鍑芥暟宸笉澶氬叏閮ㄤ笉鐞嗕細alpha--鍞竴鍓╀笅鐨凙PI鍒欎負甯︽湁SRCCOPY鍏夋爡鎿嶄綔鐨凚ilBlt()鍑芥暟浜嗭紝鍥犳錛岀▼搴忓繀欏諱嬌鐢℅DI+鎴栦富棰楢PI鏉ヨ繘琛岀粯鍥撅紝榪欎簺API閮芥槸鏃跺埢涓嶅繕alpha鐨勩?/p>
鍦╒ista涓紝鏈夊叧姣涚幓鐠冪殑鏁堟灉涓鑸敤鍦ㄨ〃紺虹▼搴忕姸鎬佺殑鍖哄煙錛堝彇浠d簡閫氱敤鎺т歡涓殑鐘舵佹爮錛夛紝渚嬪錛學indows Media Player 11灝卞湪紿楀彛搴曢儴鐨勬瘺鐜葷拑鍖哄煙鏄劇ず鎾斁鎺у埗涓庡綋鍓嶆瓕鏇蹭俊鎭細
浠ヤ笅錛屽皢婕旂ず鎬庢牱鍦ㄦ瘺鐜葷拑鍖哄煙涓婄粯鍒舵枃鏈紝騫舵庢牱鍦ㄦ枃鏈笂娣誨姞鍙戝厜鏁堟灉錛屼互渚挎枃鏈湪浠諱綍鑳屾櫙涓婇兘鏂逛究闃呰銆?/p>
浣跨敤姝g‘鐨勫瓧浣?/strong>
Vista宸茬粡褰誨簳鏀懼純浣跨敤MS Sans Serif涓嶵ahoma瀛椾綋錛岃漿鑰屾妸Segoe UI浣滀負榛樿鐨刄I瀛椾綋銆傛垜浠殑紼嬪簭涔熷簲璇ヤ嬌鐢⊿egoe UI瀛椾綋錛屾墍浠ワ紝灝嗕細鍦ㄥ熀浜庡綋鍓嶄富棰樼殑鎯呭喌涓嬪垱寤轟竴涓瓧浣撱傚鏋滀富棰樿紱佺敤錛堝鐢ㄦ埛姝e湪浣跨敤Windows緇忓吀棰滆壊鏂規錛夛紝閭f垜浠氨浣跨敤SystemParametersInfo() API銆?/p>
棣栧厛錛岄渶瑕佸湪CMainFrame涓坊鍔犱富棰樻敮鎸侊紝榪欎竴鐐歸潪甯哥畝鍗曪紝鍥犱負WTL宸茬粡鏈変竴涓敤浜庡鐞嗕富棰樼殑綾伙細CThemeImpl銆傛垜浠彲鎶奀ThemeImpl娣誨姞鍒扮戶鎵垮垪琛紝騫舵妸娑堟伅閾炬帴鑷矯ThemeImpl錛屼互渚垮湪褰撳墠涓婚鏀瑰彉鏃訛紝紼嬪簭鍙互寰楀埌鐩稿簲鐨勯氱煡銆?/p>
class CMainFrame : public CFrameWindowImpl<CMainFrame>, public CMessageFilter, public CThemeImpl<CMainFrame> { 銆// ... 銆BEGIN_MSG_MAP(CMainFrame) CHAIN_MSG_MAP(CThemeImpl<CMainFrame>) // ... 銆END_MSG_MAP() 銆protected: CFont m_font; //鐢ㄤ簬緇樺埗鏂囨湰鐨勫瓧浣?br> }; |
CMainFrame::CMainFrame() { 銆SetThemeClassList ( L"globals" ); } |
LRESULT CMainFrame::OnCreate ( LPCREATESTRUCT lpcs ) { 銆// ... 銆//鍐沖畾鍦ㄦ枃鏈腑浣跨敤鍝竴縐嶅瓧浣?br> 銆LOGFONT lf = {0}; 銆if ( !IsThemeNull() ) GetThemeSysFont ( TMT_MSGBOXFONT, &lf ); 銆else 銆{ NONCLIENTMETRICS ncm = { sizeof(NONCLIENTMETRICS) }; SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS),&ncm, false ); lf = ncm.lfMessageFont; 銆} 銆m_font.CreateFontIndirect ( &lf ); 銆return 0; } |
緇樺埗鏂囨湰
鍦ㄦ瘺鐜葷拑鏁堟灉涓婄粯鍒舵枃鏈秹鍙婁互涓嬫楠わ細
鈼嗗垱寤轟竴涓敤浜庡弻緙撳啿緇樺埗鐨勫唴瀛楧C銆?br>
鈼嗗垱寤轟竴涓?2浣嶈壊娣辯殑DIB錛屽茍閫夊叆DC銆?br>
鈼嗙敤DrawThemeTextEx()鎶婃枃鏈粯鍒跺湪鍐呭瓨涓殑DIB涓娿?br>
鈼嗙敤BitBit()鎶婃枃鏈鍒跺埌灞忓箷銆?/p>
鍥犱負鎴戜滑鐨勭粯鍒朵唬鐮佸皢浼氬洜涓篶omposition鏄惁鎵撳紑鑰屾湁鎵涓嶅悓錛屾墍浠ラ渶瑕佸湪緇樺埗鏈熼棿媯鏌omposition鐘舵併傛鏌ョ姸鎬佺殑API涓篋wmIsCompositionEnabled()錛屽鏋淎PI鎵ц澶辮觸錛屽湪榪斿洖鍊間腑灝變笉浼氭寚紺哄嚭鎵撳紑鐘舵侊紝浣咰MainFrame涓湁涓涓寘瑁呭ソ鐨勫嚱鏁癐sCompositionEnabled()錛岄潪甯告槗浜庝嬌鐢細
bool CMainFrame::IsCompositionEnabled() const { 銆HRESULT hr; 銆BOOL bEnabled; 銆hr = DwmIsCompositionEnabled(&bEnabled); 銆return SUCCEEDED(hr) && bEnabled; } |
BOOL CMainFrame::OnEraseBkgnd(HDC hdc) { 銆CDCHandle dc = hdc; 銆CRect rcClient, rcText; 銆GetClientRect ( rcClient ); 銆dc.FillSolidRect ( rcClient, RGB(0,0,0) ); 銆rcText = rcClient; 銆rcText.top = rcText.bottom - 100; 銆 銆//鑾峰彇褰撳墠鏃墮棿 銆TCHAR szTime[64]; 銆GetTimeFormat(LOCALE_USER_DEFAULT,0,NULL,NULL,szTime,_countof(szTime)); 銆…… } |
if ( IsCompositionEnabled() ) { 銆//璁劇疆涓涓垜浠皢緇樺埗鐨勫唴瀛楧C鍜屼綅鍥?br> 銆CDC dcMem; 銆CBitmap bmp; 銆BITMAPINFO dib = {0}; 銆dcMem.CreateCompatibleDC ( dc ); |
鎺ヤ笅鏉ワ紝濉厖BITMAPINFO緇撴瀯浠ュ緱鍒頒竴涓?2浣嶈壊娣變綅鍥撅紝涓斾笌姣涚幓鐠冨尯鍩熺殑楂樺鐩稿悓銆傛澶勯渶閲嶇偣鐣欐剰鐨勬槸錛屼綅鍥鵑珮搴︼紙鍗矪ITMAPINFOHEADER鐨刡iHeight鎴愬憳錛変負璐熸暟錛岃繖鏄洜涓洪氬父鎯呭喌涓婤MP鏄寜鐓т粠涓嬭嚦涓婄殑欏哄簭瀛樺偍鍦ㄥ唴瀛樹腑鐨勶紝浣咲rawThemeTextEx()闇瑕佺殑浣嶅浘欏哄簭鏄粠涓婅嚦涓嬶紝鎵浠ヨ鎶婇珮搴﹁涓鴻礋鏁般?/p>
dib.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); dib.bmiHeader.biWidth = rcText.Width(); dib.bmiHeader.biHeight = -rcText.Height(); dib.bmiHeader.biPlanes = 1; dib.bmiHeader.biBitCount = 32; dib.bmiHeader.biCompression = BI_RGB; bmp.CreateDIBSection (dc,&dib,DIB_RGB_COLORS,NULL,NULL,0); |
//璁劇疆濂紻C dcMem.SelectBitmap ( bmp ); dcMem.SelectFont ( m_font ); //緇樺埗鏂囨湰 DTTOPTS dto = { sizeof(DTTOPTS) }; const UINT uFormat = DT_SINGLELINE|DT_CENTER|DT_VCENTER|DT_NOPREFIX; CRect rcText2 = rcText; dto.dwFlags = DTT_COMPOSITED|DTT_GLOWSIZE; dto.iGlowSize = 10; rcText2 -= rcText2.TopLeft(); //鐩稿悓鐨剅ect錛屼絾宸︿笂瑙掍負(0,0) DrawThemeTextEx ( m_hTheme, dcMem, 0, 0, CT2CW(szTime), -1, uFormat, rcText2, &dto ); |
銆//灝嗘枃鏈粯鍒跺埌灞忓箷涓娿?br> 銆BitBlt ( dc, rcText.left, rcText.top, rcText.Width(), rcText.Height(), dcMem, 0, 0, SRCCOPY ); } // end if (IsCompositionEnabled()) |
else { 銆const UINT uFormat = DT_SINGLELINE|DT_CENTER|DT_VCENTER|DT_NOPREFIX; 銆//璁劇疆濂紻C 銆dc.SetTextColor ( RGB(255,255,255) ); 銆dc.SelectFont ( m_font ); 銆dc.SetBkMode ( TRANSPARENT ); 銆//緇樺埗鏂囨湰 銆dc.DrawText ( szTime, -1, rcText, uFormat ); } return true; //鎴戜滑緇樺埗浜嗘暣涓儗鏅?br> } |
涓嬮潰灝辨槸“鍚堟垚鏂囨湰”鐨勬ā鏍鳳細
涓烘紨紺哄彂鍏夋晥鏋滐紝涓嬮潰鏄悓涓鑳屾櫙涓婄殑涓孌墊枃鏈紝浣嗘病鏈夊彂鍏夋晥鏋滐細
澶勭悊composition鐩稿叧鐨勯氱煡
褰揇WM鐨刢omposition鐘舵佹墦寮鎴栧叧闂椂錛岀郴緇熶細鍚戞墍鏈夐《灞傜獥鍙e箍鎾竴涓猈M_DWMCOMPOSITIONCHANGED娑堟伅錛涘鏋渃omposition涓烘墦寮錛岄渶瑕佸啀嬈¤皟鐢―wmExtendFrameIntoClientArea()浠ュ憡涔婦WM錛屾垜浠獥鍙g殑鍝竴閮ㄥ垎搴斾負姣涚幓鐠冩晥鏋滐細
LRESULT CMainFrame::OnCompositionChanged(...) { 銆if ( IsCompositionEnabled() ) 銆{ MARGINS mar = {0}; mar.cyBottomHeight = 100; DwmExtendFrameIntoClientArea ( m_hWnd, &mar ); 銆} 銆return 0; } |
鍦ㄥ璇濇紼嬪簭涓簲鐢ㄦ瘺鐜葷拑鏁堟灉
鍦ㄥ璇濇紼嬪簭涓坊鍔犳瘺鐜葷拑鏁堟灉鐨勮繃紼嬶紝涓庝笂闈㈡鏋剁獥鍙g殑渚嬪瓙闈炲父鐩鎬技錛屼絾闇瑕佸浠g爜浣滀竴浜涜交寰殑鏀瑰姩銆傚湪紺轟緥瀵硅瘽妗嗙▼搴忎腑涓洪《灞傜獥鍙f坊鍔犱簡姣涚幓鐠冩晥鏋滐紝涓嬮潰錛岀浉瀵瑰墠涓渚嬪瓙浣滀簡淇敼鎴栨坊鍔犵殑浠g爜錛屽皢浠ラ粦浣撳瓧鏍囧嚭銆?strong>
璁劇疆瀵硅瘽妗?/strong>
濡備箣鍓嶄竴鏍鳳紝瑕佸憡涔婥ThemeImpl鎴戜滑瑕佷嬌鐢ㄥ摢涓獥鍙g被涓婚錛屽茍璋冪敤DwmExtendFrameIntoClientArea()涓虹獥鍙h竟妗嗘坊鍔犳瘺鐜葷拑鏁堟灉銆?/p>
CMainDlg::CMainDlg() { 銆SetThemeClassList ( L"globals" ); } BOOL CMainDlg::OnInitDialog ( HWND hwndFocus, LPARAM lParam ) { 銆//鍒犻櫎浜嗗悜瀵肩敓鎴愮殑鏌愪簺鍒濆鍖栦唬鐮?br> 銆//涓洪《灞傜獥鍙f坊鍔犳瘺鐜葷拑鏁堟灉 銆if ( IsCompositionEnabled() ) 銆{ MARGINS mar = {0}; mar.cyTopHeight = 150; DwmExtendFrameIntoClientArea ( m_hWnd, &mar ); 銆} |
//鍐沖畾浣跨敤鍝竴縐嶅瓧浣?br> LOGFONT lf = {0}; OpenThemeData(); if ( !IsThemeNull() ) 銆GetThemeSysFont ( TMT_MSGBOXFONT, &lf ); else { 銆NONCLIENTMETRICS ncm = { sizeof(NONCLIENTMETRICS) }; 銆SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS),&ncm, false ); 銆lf = ncm.lfMessageFont; } lf.lfHeight *= 3; m_font.CreateFontIndirect ( &lf ); |
//璁劇疆闈欐佹枃鏈帶浠剁殑owner-draw m_wndTimeLabel.Attach ( GetDlgItem(IDC_CLOCK) ); m_wndTimeLabel.ModifyStyle ( SS_TYPEMASK, SS_OWNERDRAW ); |
//鍏朵粬鍒濆鍖栦唬鐮?br> EnableThemeDialogTexture ( ETDT_ENABLE ); //璁劇疆璁℃椂鍣ㄧ殑鏃墮棿闂撮殧涓?縐掞紝浠ュ湪姣忎釜縐掗挓鍐呴兘鑳芥洿鏂版椂閽?br> SetTimer ( 1, 1000 ); return TRUE; } |
鎵撳紑姣涚幓鐠冩晥鏋?/strong>
濡傚墠闈竴鏍鳳紝鎴戜滑闇瑕佺敤榛戣壊鐢誨埛鏉ュ~鍏呮瘺鐜葷拑鍖哄煙錛屼互渚胯惀閫犱竴縐嶉忚鏁堟灉銆傚洜涓哄唴緗殑瀵硅瘽妗嗙獥鍙e鐞嗚繃紼嬩細鍝嶅簲WM_ERASEBKGND娑堟伅錛屾潵澶勭悊璇稿闈炵煩褰㈡垨鍗婇忔槑鎺т歡錛屾墍浠ワ紝鎴戜滑闇瑕佸湪OnPaint()鑰屼笉鏄疧nEraseBkgnd()涓仛緇樺浘銆?/p>
void CMainDlg::OnPaint ( HDC hdc ) { 銆CPaintDC dc(m_hWnd); 銆CRect rcGlassArea; 銆if ( IsCompositionEnabled() ) 銆{ GetClientRect ( rcGlassArea ); rcGlassArea.bottom = 150; dc.FillSolidRect(rcGlassArea, RGB(0,0,0)); 銆} } |
緇樺埗鏂囨湰
鍦∣nTimer()涓紝鑾峰彇褰撳墠鏃墮棿錛屽茍浠ユ璁劇疆闈欐佹帶浠剁殑鏂囨湰錛?/p>
void CMainDlg::OnTimer ( UINT uID, TIMERPROC pProc ) { 銆//鑾峰彇褰撳墠鏃墮棿 銆TCHAR szTime[64]; 銆GetTimeFormat ( LOCALE_USER_DEFAULT, 0, NULL, NULL,szTime, _countof(szTime) ); 銆m_wndTimeLabel.SetWindowText ( szTime ) } |
SetWindowText()鍑芥暟浼氫嬌闈欐佹帶浠墮噸緇橈紝瀵艱嚧OnDrawItem()鍑芥暟鐨勮皟鐢ㄣ侽nDrawItem()鍑芥暟涓殑浠g爜涓庡墠闈㈡鏋剁獥鍙d緥瀛愪腑鐨勭被浼鹼紝鍦ㄦ涓嶅啀璧樿堪錛屼互涓嬫槸紼嬪簭澶栬錛?/p>
鍦ㄦ瘺鐜葷拑鏁堟灉涓婄粯鍒跺浘褰?/strong>
鍏堝墠宸叉彁鍒幫紝鍦ㄦ瘺鐜葷拑鍖哄煙涓繘琛岀粯鍥鵑渶瑕佺敤鍒板彲璇嗗埆alpha鐨凙PI錛屽GDI+鍑芥暟銆備笅闈㈢殑渚嬪瓙鐢ㄥ埌GDI+涓殑Image綾誨湪瀵硅瘽妗嗙殑宸︿笂瑙掔粯鍒朵簡涓涓狶ogo錛屽鍥劇ず錛?/p>
榪欎釜Logo鏄粠涓巈xe鏂囦歡鍦ㄥ悓涓鐩綍鐨刴ylogo.png鏂囦歡涓鍙栫殑錛岃娉ㄦ剰錛屽洜涓轟嬌鐢ㄤ簡GDI+緇樺埗Logo錛屾墍浠ogo鍛ㄥ洿鐨勯忔槑搴﹀凡琚繚鐣欙紝騫朵笖鐪嬩笂鍘繪樉紺哄緱寰堟紜?/p>
浣挎暣涓獥鍙f瘺鐜葷拑鍖?/strong>
鎴戜滑榪樺彲浠ヨ鏁翠釜紿楀彛鐪嬩笂鍘婚兘鍍忓潡姣涚幓鐠冿紝浠ヤ笅鏈変竴孌電畝鐭唬鐮侊紝鍙渶鎶奙ARGINS緇撴瀯鐨勭涓涓垚鍛樿涓?-1灝辮浜嗭細
MARGINS mar = {-1}; DwmExtendFrameIntoClientArea ( m_hWnd, &mar ); |
濡傛灉鍦ㄦ垜浠殑瀵硅瘽妗嗙▼搴忎腑鍔犲叆榪欐浠g爜錛岄偅涔堢▼搴忔渶緇堝皢鐪嬩笂鍘誨儚榪欐牱錛?/p>
鐣欐剰瑙傚療錛?涓寜閽笂鐨勬枃鏈鑹叉樉紺轟笉姝g‘錛屽茍涓旀瘡涓寜閽鍥撮兘鏈変竴涓笉閫忔槑鐨勭煩褰€傞氬父鏉ヨ錛岄忔槑鎬т笌瀛愮獥鍙d笉浼氶厤鍚堝緱闈炲父濂斤紝濡傛灉鎯寵涓涓叏涓烘瘺鐜葷拑鏁堟灉鐨勫璇濇錛岄偅涔堟帶浠墮儴鍒嗗氨闇瑕佷互涓涓笉閫忔槑鐨勮儗鏅潵緇樺埗錛屽"Windows Mobility Center"紼嬪簭錛?/p>
緇撹
鍦ㄧ▼搴忎腑娣誨姞姣涚幓鐠冩晥鏋滃彲浣跨▼搴忓湪瑙嗚涓婃樉寰楅潪甯鎬笌浼椾笉鍚岋紝鑰屼笖鑳芥彁渚涗竴涓瘮閫氱敤鎺т歡涓姸鎬佹爮鏇村ソ鐨勭姸鎬佹樉紺哄尯鍩燂紝鏈枃涓昏鏄搗鍒頒竴涓姏鐮栧紩鐜夌殑浣滅敤錛屼篃鏈夊姪浜庡ぇ瀹跺湪浣跨敤鏈湴C++娣誨姞姣涚幓鐠冩晥鏋滄椂錛屽DWM API鏈変竴涓垵姝ョ殑浜嗚В銆?/p>