锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鏈枃浠?/span>VC6.0瀵硅瘽妗嗗簲鐢ㄧ▼搴忎負渚嬶紝褰撻紶鏍囧湪鎸夐挳涓婄Щ鍔ㄣ佹寜涓嬫垨鑰呭脊璧鋒椂鏄劇ず鎸夐挳鍔熻兘鎻愮ず鏂囨湰錛屾湰鏂囧皢鍦ㄦ寜閽笂鏄劇ず鍔熻兘鎻愮ず鏂囨湰錛?font face="Times New Roman">“IT鐭ラ亾緗?/font>”銆?/font> return CDialog::PreTranslateMessage(pMsg); GDI+鏄疻indows XP涓殑涓涓瓙緋葷粺錛屽畠涓昏璐熻矗鍦ㄦ樉紺哄睆騫曞拰鎵撳嵃璁懼杈撳嚭鏈夊叧淇℃伅錛屽畠鏄竴緇勯氳繃C++綾誨疄鐜扮殑搴旂敤紼嬪簭緙栫▼鎺ュ彛銆傞【鍚嶆濅箟錛孏DI+鏄互鍓嶇増鏈珿DI鐨勭戶鎵胯咃紝鍑轟簬鍏煎鎬ц冭檻錛學indows XP浠嶇劧鏀寔浠ュ墠鐗堟湰鐨凣DI錛屼絾鏄湪寮鍙戞柊搴旂敤紼嬪簭鐨勬椂鍊欙紝寮鍙戜漢鍛樹負浜嗘弧瓚沖浘褰㈣緭鍑洪渶瑕佸簲璇ヤ嬌鐢℅DI+錛屽洜涓篏DI+瀵逛互鍓嶇殑Windows鐗堟湰涓璆DI榪涜浜嗕紭鍖栵紝騫舵坊鍔犱簡璁稿鏂扮殑鍔熻兘銆?/p> 閬楁喚鐨勬槸錛孷C6.0騫朵笉鑳界洿鎺ヤ嬌鐢℅DI+錛屼笅闈粙緇嶄竴縐嶅緢鏂逛究鐨勫湪VC6.0涓嬌鐢℅DI+鐨勬柟娉曘傛楠ゅ涓嬶細 1.灝咷DI+.rar灝嗗叾涓殑Includes鍜孡ib涓殑鏂囦歡鎷峰埌vc鐩綍涓嬬殑Includes鍜孡ib鏂囦歡澶逛腑錛?/p> GDI+ for VC6.0 SDK涓嬭澆鍦板潃錛?/p> http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip 2.鍦ㄤ綘灝嗚浣跨敤GDI+鐨勫伐紼嬩腑錛屽畬鎴愬垵濮嬪寲宸ヤ綔錛?/p> 灝嗕互涓嬩唬鐮佸姞鍏tdAfx.h澶存枃浠朵腑錛?/p> //鍔犲叆鐨勫ご鏂囦歡 #ifndef ULONG_PTR //gdi+鐢ㄥ埌鐨勪袱涓彉閲?br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "> GdiplusStartupInput m_gdiplusStartupInput; 4鍦ㄧ▼搴忛鍑洪儴鍒嗗墠鍔犲叆 //鍗歌澆gdi+ 5鍦≒roject->stting->Link->Object/libary涓姞鍏diplus.lib 榪欐牱浣犵殑宸ョ▼灝卞彲浠ヤ嬌鐢℅DI+浜嗭紝娌′粈涔堟妧鏈惈閲忓惂! 鍙﹀涓縐嶅氨鏄敤
鍦?font face="Times New Roman">CXXXDlg.h鏂囦歡涓畾涔夛細
public:
CToolTipCtrl m_openToolTip;
鍦?font face="Times New Roman">CXXXDlg.cpp鐨?/font>OnInitDialog()涓垵濮嬪寲錛?nbsp;
m_openToolTip.Create(this);
m_openToolTip.AddTool( GetDlgItem(IDC_BOTTON), "IT鐭ラ亾緗?/font>" );
m_openToolTip.SetDelayTime(200);
m_openToolTip.SetTipTextColor( #0000ff );
m_openToolTip.SetTipBkColor( #ffffff);
m_openToolTip.Activate(TRUE);
閲嶈澆鍑芥暟PreTranslateMessage
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MOUSEMOVE:
m_openToolTip.RelayEvent(pMsg);
}
}
]]>
GetClientRect() 寰楀埌鐨勬槸鍦ㄥ鎴峰尯鍧愭爣緋諱笅鐨凴ECT錛堝嵆浠ユ墍鍦ㄧ獥鍙e乏涓婅涓哄師鐐癸紝鍘繪帀浜嗘爣棰樻爮璁$畻錛屼粎浠呮槸涓ぇ灝忥紝榪斿洖鍊肩殑宸︿笂瑙掓案榪滀負0錛?錛?
ScreenToClient() 灝辨槸鎶婂睆騫曞潗鏍囩郴涓嬬殑RECT鍧愭爣杞崲涓哄鎴峰尯鍧愭爣緋諱笅鐨凴ECT鍧愭爣銆?br>
void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );
void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );
鍙傛暟
x鎸囧畾浜咰Wnd鐨勫乏杈圭殑鏂頒綅緗?
y鎸囧畾浜咰Wnd鐨勯《閮ㄧ殑鏂頒綅緗?
nWidth鎸囧畾浜咰Wnd鐨勬柊瀹藉害銆?
nHeight鎸囧畾浜咰Wnd鐨勬柊楂樺害銆?
bRepaint鎸囧畾浜嗘槸鍚﹁閲嶇敾CWnd銆傚鏋滀負TRUE錛屽垯CWnd璞¢氬父閭f牱鍦∣nPaint娑堟伅澶勭悊鍑芥暟涓帴鏀跺埌涓鏉M_PAINT娑堟伅銆傚鏋?
榪欎釜鍙傛暟涓篎ALSE錛屽垯涓嶄細鍙戠敓浠諱綍綾誨瀷鐨勯噸鐢繪搷浣溿傝繖搴旂敤浜庡鎴峰尯銆侀潪瀹㈡埛鍖猴紙鍖呮嫭鏍囬鏉″拰婊氬姩鏉★級鍜岀敱浜嶤Wnd縐誨姩鑰岄湶鍑虹殑鐖剁獥鍙g殑浠諱綍閮ㄥ垎銆傚綋
榪欎釜鍙傛暟涓篎ALSE鐨勬椂鍊欙紝搴旂敤紼嬪簭蹇呴』鏄庣‘鍦頒嬌CWnd鍜岀埗紿楀彛涓繀欏婚噸鐢葷殑閮ㄥ垎鏃犳晥鎴栭噸鐢匯俵pRectCRect瀵硅薄鎴朢ECT緇撴瀯錛屾寚瀹氫簡鏂扮殑
澶у皬鍜屼綅緗傝鏄庤繖涓嚱鏁版敼鍙樼獥鍙g殑浣嶇疆鍜屽ぇ灝忋傚浜庨《灞傜殑CWnd瀵硅薄錛寈鍜寉鍙傛暟鏄浉瀵逛簬灞忓箷鐨勫乏涓婅鐨勩傚浜庡瓙瀵硅薄錛屽畠浠槸鐩稿浜庣埗紿楀彛瀹㈡埛鍖虹殑宸?
涓婅鐨勩?
MoveWindow鍑芥暟鍙戦佷竴鏉M_GETMINMAXINFO娑堟伅銆傚鐞嗚繖涓秷鎭椂錛孋Wnd寰楀埌涓涓敼鍙樻渶澶у拰鏈灝忕殑紿楀彛緙虹渷鍊肩殑鏈轟細銆傚鏋滀紶閫?
緇橫oveWindow鎴愬憳鍑芥暟鐨勫弬鏁拌秴榪囦簡榪欎簺鍊鹼紝鍒欏湪WM_GETMINMAXINFO澶勭悊鍑芥暟涓彲浠ョ敤鏈灝忔垨鏈澶у兼潵浠f浛榪欎簺鍊箋?
CWnd::SetWindowPosBOOL SetWindowPos( const CWnd*
pWndInsertAfter, int x, int y, int cx, int cy,UINT
nFlags );
榪斿洖鍊煎鏋滃嚱鏁版垚鍔燂紝鍒欒繑鍥為潪闆跺鹼紱鍚﹀垯榪斿洖0銆?
鍙傛暟pWndInsertAfter鏍囪瘑浜嗗湪Z杞存搴忎笂浣嶄簬榪欎釜CWnd瀵硅薄涔嬪墠鐨凜Wnd瀵硅薄銆傝繖涓弬鏁板彲浠ユ槸鎸囧悜CWnd瀵硅薄鐨勬寚閽堬紝涔熷彲浠ユ槸鎸囧悜涓?
鍒楀肩殑鎸囬拡錛歭 wndBottom
灝嗙獥鍙f斁鍦╖杞存搴忕殑搴曢儴銆傚鏋滆繖涓狢Wnd鏄竴涓《灞傜獥鍙o紝鍒欑獥鍙e皢澶卞幓瀹冪殑欏跺眰鐘舵侊紱緋葷粺灝嗚繖涓獥鍙f斁鍦ㄥ叾瀹冩墍鏈夌獥鍙g殑搴曢儴銆俵 wndTop
灝嗙獥鍙f斁鍦╖杞存搴忕殑欏墮儴銆俵 wndTopMost
灝嗙獥鍙f斁鍦ㄦ墍鏈夐潪欏跺眰紿楀彛鐨勪笂闈€傝繖涓獥鍙e皢淇濇寔瀹冪殑欏跺眰浣嶇疆錛屽嵆浣垮畠澶卞幓浜嗘椿鍔ㄧ姸鎬併倃ndNoTopMost
灝嗙獥鍙i噸鏂板畾浣嶅埌鎵鏈夐潪欏跺眰紿楀彛鐨勯《閮紙榪欐剰鍛崇潃鍦ㄦ墍鏈夌殑欏跺眰紿楀彛涔嬩笅錛夈傝繖涓爣蹇楀閭d簺宸茬粡鏄潪欏跺眰紿楀彛鐨勭獥鍙f病鏈変綔鐢ㄣ傛湁鍏寵繖涓嚱鏁頒互鍙婅繖浜涘弬鏁扮殑浣?
鐢ㄨ鍒欏弬瑙佽鏄庨儴鍒嗐倄鎸囧畾浜嗙獥鍙e乏杈圭殑鏂頒綅緗倅鎸囧畾浜嗙獥鍙i《閮ㄧ殑鏂頒綅緗俢x鎸囧畾浜嗙獥鍙g殑鏂板搴︺俢y鎸囧畾浜嗙獥鍙g殑鏂伴珮搴︺俷Flags鎸囧畾浜嗗ぇ灝忓拰
浣嶇疆閫夐」銆傝繖涓弬鏁板彲浠ユ槸涓嬪垪鍊肩殑緇勫悎錛歭 SWP_DRAWFRAME 鍥寸粫紿楀彛鐢誨嚭杈規錛堝湪鍒涘緩紿楀彛鐨勬椂鍊欏畾涔夛級銆俵
SWP_FRAMECHANGED
鍚戠獥鍙e彂閫佷竴鏉M_NCCALCSIZE娑堟伅錛屽嵆浣跨獥鍙g殑澶у皬涓嶄細鏀瑰彉銆傚鏋滄病鏈夋寚瀹氳繖涓爣蹇楋紝鍒欎粎褰撶獥鍙g殑澶у皬鍙戠敓鍙樺寲鏃舵墠鍙戦?
WM_NCCALCSIZE娑堟伅銆俵 SWP_HIDEWINDOW 闅愯棌紿楀彛銆係WP_NOACTIVATE
涓嶆縺媧葷獥鍙c傚鏋滄病鏈夎緗繖涓爣蹇楋紝鍒欑獥鍙e皢琚縺媧誨茍縐誨姩鍒伴《灞傛垨闈為《灞傜獥鍙g粍錛堜緷璧栦簬pWndInsertAfter鍙傛暟鐨勮緗級鐨勯《閮ㄣ俵
SWP_NOCOPYBITS
搴熷純榪欎釜瀹㈡埛鍖虹殑鍐呭銆傚鏋滄病鏈夋寚瀹氳繖涓弬鏁幫紝鍒欏鎴峰尯鐨勬湁鏁堝唴瀹瑰皢琚繚瀛橈紝騫跺湪紿楀彛鐨勫ぇ灝忔垨浣嶇疆鏀瑰彉浠ュ悗琚嫹璐濆洖瀹㈡埛鍖恒俵
SWP_NOMOVE 淇濇寔褰撳墠鐨勪綅緗紙蹇界暐x鍜寉鍙傛暟錛夈俵 SWP_NOOWNERZORDER
涓嶆敼鍙樻嫢鏈夎呯獥鍙e湪Z杞存搴忎笂鐨勪綅緗俵 SWP_NOREDRAW
涓嶉噸鐢誨彉鍖栥傚鏋滆緗簡榪欎釜鏍囧織錛屽垯涓嶅彂鐢熶換浣曠綾葷殑鍙樺寲銆傝繖閫傜敤浜庡鎴峰尯銆侀潪瀹㈡埛鍖猴紙鍖呮嫭鏍囬鍜屾粴鍔ㄦ潯錛変互鍙婅縐誨姩紿楀彛瑕嗙洊鐨勭埗紿楀彛鐨勪換浣曢儴鍒嗐傚綋榪欎釜
鏍囧織琚緗殑鏃跺欙紝搴旂敤紼嬪簭蹇呴』鏄庣‘鍦版棤鏁堟垨閲嶇敾瑕侀噸鐢葷殑紿楀彛鍜岀埗紿楀彛鐨勪換浣曢儴鍒嗐俵 SWP_NOREPOSITION
涓嶴WP_NOOWNERZORDER鐩稿悓銆俵 SWP_NOSENDCHANGING
闃叉紿楀彛鎺ユ敹WM_WINDOWPOSCHANGING娑堟伅銆俵 SWP_NOSIZE 淇濇寔褰撳墠鐨勫ぇ灝忥紙蹇界暐cx鍜宑y鍙傛暟錛夈俵
SWP_NOZORDER 淇濇寔褰撳墠鐨勬搴忥紙蹇界暐pWndInsertAfter錛夈俵 SWP_SHOWWINDOW
鏄劇ず紿楀彛銆?
璋冪敤榪欎釜鎴愬憳鍑芥暟浠ユ敼鍙樺瓙紿楀彛銆佸脊鍑虹獥鍙e拰欏跺眰紿楀彛鐨勫ぇ灝忋佷綅緗拰Z杞存搴忋傜獥鍙e湪灞忓箷涓婃寜鐓у畠浠殑Z杞存搴忔帓搴忋傚湪Z杞存搴忎笂澶勪簬欏剁鐨勭獥鍙e皢紼嬪簭鍦ㄦ墍
鏈夊叾瀹冪獥鍙g殑欏墮儴銆傚瓙紿楀彛鐨勬墍鏈夊潗鏍囬兘鏄鎴峰潗鏍囷紙鐩稿浜庣埗紿楀彛瀹㈡埛鍖虹殑宸︿笂瑙掞級銆傜獥鍙e彲浠ヨ縐誨姩鍒癦杞存搴忕殑欏墮儴錛屾棦鍙互閫氳繃灝?
pWndInsertAfter鍙傛暟璁句負&wndTopMost錛屽茍紜繚娌℃湁璁劇疆SWP_NOZORDER鏍囧織錛屼篃鍙互閫氳繃璁劇疆紿楀彛鐨刏杞存搴忎嬌
瀹冧綅浜庢墍鏈夌幇瀛樼殑欏跺眰紿楀彛涓婃柟銆傚綋涓涓潪欏跺眰紿楀彛琚涓洪《灞傜獥鍙f椂錛屽畠鎷ユ湁鐨勭獥鍙d篃琚涓洪《灞傜殑銆傚畠鐨勬嫢鏈夎呬笉鍙戠敓鍙樺寲銆傚鏋滈《灞傜獥鍙h閲嶆柊瀹氫綅鍒癦杞存
搴忕殑搴曢儴錛?amp;wndBottom錛夋垨浠諱綍闈為《灞傜獥鍙d箣鍚庯紝鍒欏畠灝嗕笉鍐嶆槸欏跺眰紿楀彛銆傚綋欏跺眰紿楀彛琚彉涓洪潪欏跺眰紿楀彛鏃訛紝瀹冩墍鏈夌殑鎷ユ湁鑰呭拰瀹冩嫢鏈夌殑鎵鏈夌獥
鍙i兘琚彉涓洪潪欏跺眰紿楀彛銆傚鏋滄棦娌℃湁鎸囧畾SWP_NOACTIVE鏍囧織涔熸病鏈夋寚瀹歋WP_NOZORDER鏍囧織錛堣繖鎰忓懗鐫搴旂敤紼嬪簭瑕佹眰紿楀彛琚悓鏃舵縺媧誨茍鏀懼叆
鎸囧畾鐨刏杞存搴忥級錛屽垯pWndInsertAfter鍙傛暟涓寚瀹氱殑鍊煎皢鍙湪涓嬪垪鐜涓嬮傜敤錛歭
鍦╬WndInsertAfter鍙傛暟涓棦娌℃湁鎸囧畾&wndTopMost涔熸病鏈夋寚瀹?amp;wndNoTopMost銆?
榪欎釜紿楀彛涓嶆槸媧誨姩紿楀彛銆傚簲鐢ㄧ▼搴忎笉鑳芥縺媧諱竴涓潪媧誨姩紿楀彛浣嗗悓鏃跺張涓嶆妸瀹冨甫鍒癦杞存搴忕殑欏墮儴銆傚簲鐢ㄧ▼搴忓彲浠ユ病鏈変換浣曢檺鍒跺湴鏀瑰彉媧誨姩紿楀彛鐨刏杞存搴忋傞潪欏跺眰紿?
鍙e彲鑳芥嫢鏈変竴涓《灞傜獥鍙o紝浣嗘槸鍙嶄箣鍒欎笉鎴愮珛銆備換浣曡欏跺眰紿楀彛鎷ユ湁鐨勭獥鍙o紙渚嬪瀵硅瘽妗嗭級閮藉皢鑷繁鍙樹負欏跺眰紿楀彛錛屼互紜繚鎵鏈夎鎷ユ湁鐨勭獥鍙d綅浜庡畠浠殑鎷ユ湁鑰呬笂
鏂廣傚湪Windows
3.1鎴栨洿鏂扮殑鐗堟湰涓紝鍙互灝嗙獥鍙gЩ鍔ㄥ埌Z杞存搴忕殑欏墮儴錛屽茍閫氳繃璁劇疆瀹冧滑鐨刉S_EX_TOPMOST椋庢牸鑰屽皢涔嬮攣瀹氬湪閭i噷銆傝繖縐嶉《灞傜獥鍙e嵆浣垮湪澶卞幓媧誨姩
鐘舵佷互鍚庝篃浼氫繚鎸侀《灞備綅緗備緥濡傦紝閫夋嫨WinHelp鐨凙lways On
Top鍛戒護浼氫嬌甯姪紿楀彛鍙樹負欏跺眰錛屽茍涓斿湪浣犺繑鍥炲簲鐢ㄧ▼搴忎箣鍚庡畠榪樹繚鎸佸彲瑙併傝鍒涘緩涓涓《灞傜獥鍙o紝搴斿湪璋冪敤SetWindowPos鐨勬椂鍊欏皢
pWndInsertAfter鍙傛暟璁句負&wndTopMost錛屾垨鑰呭湪鍒涘緩紿楀彛鐨勬椂鍊欒緗甒S_EX_TOPMOST椋庢牸銆傚鏋淶杞存搴忎腑鍖呭惈
浜嗕換浣曞叿鏈塛S_EX_TOPMOST椋庢牸鐨勭獥鍙o紝鍒欑敤&wndTopMost縐誨姩鐨勭獥鍙e皢琚斁鍒版墍鏈夐潪欏跺眰紿楀彛鐨勯《閮紝浣嗘槸浣嶄簬浠諱綍欏跺眰紿楀彛鐨?
涓嬮潰銆傚綋搴旂敤紼嬪簭嬋媧諱竴涓笉鍏鋒湁WS_EX_TOPMOST椋庢牸鐨勯潪媧誨姩紿楀彛鏃訛紝璇ョ獥鍙e皢琚Щ鍔ㄥ埌鎵鏈夐潪欏跺眰紿楀彛鐨勪笂鏂癸紝浣嗘槸浣嶄簬鎵鏈夐《灞傜獥鍙g殑涓嬫柟銆傚
鏋滃湪璋冪敤SetWindowPos鐨勬椂鍊檖WndInsertAfter鍙傛暟琚涓?amp;wndBottom錛屽茍涓擟Wnd鏄竴涓《灞傜獥鍙o紝鍒欒紿楀彛
澶卞幓欏跺眰鐘舵侊紙WS_EX_BOTTOM椋庢牸琚竻闄わ級錛屽茍涓旂郴緇熷皢紿楀彛鏀懼湪Z杞存搴忕殑搴曢儴銆?nbsp;
]]>
#include <comdef.h>//鍒濆鍖栦竴涓媍om鍙?/p>
#define ULONG_PTR unsigned long*
#include "GdiPlus.h"
using namespace Gdiplus;
#endif
//緇撴潫
3.鍦ㄧ▼搴忓垵濮嬪寲閮ㄥ垎鍔犲叆
ULONG_PTR m_pGdiToken;
//瑁呰澆gdi+
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
GdiplusShutdown(m_pGdiToken);
]]>
---- 鏂規硶涓錛氳皟鐢–WinApp綾葷殑鎴愬憳鍑芥暟SetDialogBkColor鏉ュ疄鐜般?br>---- 鍏朵腑鍑芥暟鐨勭涓涓弬鏁版寚瀹氫簡鑳屾櫙棰滆壊錛岀浜屼釜鍙傛暟鎸囧畾浜嗘枃鏈鑹層備笅闈㈢殑渚嬪瓙鏄皢搴旂敤紼嬪簭瀵硅瘽 妗嗚緗負钃濊壊鑳屾櫙鍜岀孩鑹叉枃鏈紝姝ラ濡備笅錛?br>---- 鈶?鏂板緩涓涓熀浜嶥ialog鐨凪FC AppWizard搴旂敤紼嬪簭ExampleDlg銆?br>---- 鈶?鍦–ExampleDlgApp ::InitInstance()涓坊鍔犲涓嬩唬鐮侊細
BOOL CExampleDlgApp: : InitInstance ( )
{
…
CExampleDlgDlg dlg;
m_pMainWnd = &dlg;
//鍏堜簬DoModal()璋冪敤錛屽皢瀵硅瘽妗嗚緗負钃濊壊鑳屾櫙銆佺孩鑹叉枃鏈?br> SetDialogBkColor(#0000ff,#ff0000);
int nResponse = dlg.DoModal();
…
}
---- 緙栬瘧騫惰繍琛岋紝姝ゆ椂瀵硅瘽妗嗙殑鑳屾櫙鑹插拰鏂囨湰鑹插凡鍙戠敓浜嗘敼鍙樸傚煎緱娉ㄦ剰鐨勬槸錛氬湪璋冪敤DoModal()涔嬪墠蹇呴』 鍏堣皟鐢⊿etDialogBkColor錛屼笖姝ゆ柟娉曟槸灝嗘敼鍙樺簲鐢ㄧ▼搴忎腑鎵鏈夌殑瀵硅瘽妗嗛鑹詫紝騫朵笉鑳介拡瀵規煇涓涓寚瀹氱殑瀵?璇濇銆?br>---- 鏂規硶浜岋細閲嶈澆OnPaint()錛屽嵆WM_PAINT娑堟伅銆傛湁鍏充唬鐮佸涓嬶紙浠ヤ笂渚嬪伐紼嬩負鍑嗭級錛?br>void CExampleDlgDlg::OnPaint()
{
if (IsIconic())
…
else
{
CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect,#00ff00); //璁劇疆涓虹豢鑹茶儗鏅?br> CDialog::OnPaint();
}
---- 鏂規硶涓夛細閲嶈澆OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor)錛屽嵆WM_CTLCOLOR娑堟伅銆傚叿浣?姝ラ濡備笅錛堜互涓婁緥宸ョ▼涓哄噯錛夛細
---- 鈶犲湪CExampleDlgDlg鐨勫ご鏂囦歡涓紝娣誨姞涓CBrush鐨勬垚鍛樺彉閲忥細
class CExampleDlgDlg : public CDialog
{
...
protected:
CBrush m_brush;
...
};
---- 鈶″湪OnInitDialog()鍑芥暟涓坊鍔犲涓嬩唬鐮侊細
BOOL CExampleDlgDlg::OnInitDialog()
{
...
// TODO: Add extra initialization here
m_brush.CreateSolidBrush(#00ff00); // 鐢熸垚涓緇胯壊鍒峰瓙
...
}
---- 鈶㈠埄鐢–lassWizard閲嶈澆OnCtlColor(…)錛屽嵆WM_CTLCOLOR娑堟伅錛?br>HBRUSH CExampleDlgDlg::OnCtlColor
(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
/*
** 榪欓噷涓嶅繀緙栧啓浠諱綍浠g爜錛?br>**涓嬭浠g爜瑕佹敞閲婃帀
** HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
*/
return m_brush; //榪斿姞緇胯壊鍒峰瓙
}
---- 鏂規硶鍥涳細榪樻槸閲嶈澆OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor)錛屽嵆WM_CTLCOLOR娑堟伅銆?鍏蜂綋姝ラ濡備笅錛堜互涓婁緥宸ョ▼涓哄噯錛夛細
---- 姝ラ鈶犮佲憽鍚屼笂鏂規硶涓変腑鐨勬楠も憼銆佲憽銆?br>---- 姝ラ鈶㈠埄鐢–lassWizard閲嶈澆OnCtlColor(…)錛堝嵆WM_CTLCOLOR娑堟伅錛夋椂鍒欐湁浜涗笉鍚岋細
HBRUSH CExampleDlgDlg::OnCtlColor
(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
//鍦ㄨ繖鍔犱竴鏉℃槸鍚︿負瀵硅瘽妗嗙殑鍒ゆ柇璇彞
if(nCtlColor ==CTLCOLOR_DLG)
return m_brush; //榪斿姞緇胯壊鍒峰瓙
return hbr;
}
---- 緙栬瘧騫惰繍琛屽嵆鍙?br>----
鍏充簬濡備綍鏀瑰彉瀵硅瘽妗嗚儗鏅鑹茬殑闂錛屽彲鑳借繕鏈夊緢澶氱涓嶅悓鏂規硶鍙互瀹炵幇錛岀瑪鑰呭湪榪欎粎涓懼嚭鍥涚甯歌
鐨勬柟娉曘傚叾涓柟娉曚笁鐨勭紪紼嬩技涔庢湁鐐逛笉澶鑼冿紝鏂規硶鍥涘垯瑕佹瘮鏂規硶涓夋緇熶簺錛岀瑪鑰呰繖鏍風殑瀵規瘮涓句緥鏄負浜?
鎷撳VC緙栫▼鐖卞ソ鑰呯壒鍒槸鍒濆鑰呯殑緙栫▼鎬濊礬錛岃鑰呭彲浠ユ牴鎹疄闄呮儏鍐甸夌敤鍏朵腑鐨勪竴縐嶃傚鏋滃啀緇撳悎銆婅蔣浠?
鎶ャ?000騫寸5鏈熶腑鏀瑰彉瀵硅瘽妗嗕笂鐨勬帶浠墮鑹詫紝鐩鎬俊浼氫嬌鎮ㄧ殑MFC搴旂敤紼嬪簭"澧炶壊"涓嶅皯銆?
{
//鍙互鑳屾櫙鍥撅紝鐢誨埛絳?br> //return CScrollView::OnEraseBkgnd(pDC);
}
]]>
Step2: 娣誨姞瑕佽嚜緇樼殑鎸夐挳錛屼負姣忎釜鎸夐挳娣誨姞涓涓綅鍥?span lang=EN-US>
Step3: 娣誨姞WM_DRAWITEM 娑堟伅鐨勫搷搴斿嚱鏁?span lang=EN-US>OnDrawItem瀹炵幇鍏蜂綋鐨勮嚜緇橈紝璇︾粏瀹炵幇鏂瑰紡鍙傝冨嚱鏁板疄鐜頒唬鐮?span lang=EN-US>
Step4: 鏈ず渚嬫槸鏍規嵁ODS_FOCUS鐘舵佽繘琛屽畾鍒躲傝繕鍙互榪涜鍏朵粬鐘舵佺殑緇樺埗銆傛帶浠惰嚜緇樺彧闇瑕佽浣忎竴鐐?span lang=EN-US>:闅忔椂璁塊棶MEASUREITEMSTRUCT鏁版嵁緇撴瀯鐨勬暟鎹垚鍛樻槸榪涜鑷粯鐨勫叧
鍦ㄥ垵濮嬪寲CBitmap瀵硅薄鏃?/span>,甯哥敤Cbitmap::LoadBitmap,鍗沖涓嬩袱縐?/span>:
BOOL LoadBitmap(LPCTSTR lpszRecourceName);
BOOL LoadBitmap(UINT nIDResource);
MSDN涓殑璇存槑涓?/span>:
" 榪斿洖鍊艱皟鐢ㄦ垚鍔熸椂榪斿洖闈為浂鍊鹼紝鍚﹀垯涓恒?span lang=EN-US>
lpszResourceName鎸囧悜涓涓寘鍚簡浣嶅浘璧勬簮鍚嶅瓧鐨勫瓧絎︿覆錛堣瀛楃涓蹭互null緇撳熬錛夈?span lang=EN-US>NIDResource鎸囧畾浣嶅浘璧勬簮涓祫婧愮殑ID鍙楓傝鏄庢湰鍑芥暟浠庡簲鐢ㄧ殑鍙墽琛屾枃浠朵腑鍔犺澆鐢?span lang=EN-US>lpszResourceName鎸囧畾鍚嶅瓧鎴栬呯敱nIDResource鎸囧畾鐨?span lang=EN-US>ID鍙鋒爣蹇楃殑浣嶅浘璧勬簮銆傚姞杞界殑浣嶅浘琚檮鍦?span lang=EN-US>Cbitmap瀵硅薄涓娿傚鏋滅敱lpszResourceName鎸囧畾鍚嶅瓧鐨勫璞′笉瀛樺湪錛屾垨鑰呮病鏈夎凍澶熺殑鍐呭瓨鍔犺澆浣嶅浘錛屽嚱鏁板皢榪斿洖銆傚彲浠ヨ皟鐢ㄥ嚱鏁?span lang=EN-US>CgdiObject::DeleteObject鍒犻櫎鐢?span lang=EN-US>LoadBitmap鍔犺澆鐨勪綅鍥撅紝鍚﹀垯Cbitmap鐨勬瀽鏋勫嚱鏁板皢鍒犻櫎璇ヤ綅鍥懼璞°傝鍛?/span> 鍦ㄥ垹闄や綅鍥懼璞′箣鍓嶏紝瑕佷繚璇佸畠娌℃湁琚夊埌璁懼涓婁笅鏂囦腑銆傚湪Windows3.1浠ュ強浠ュ悗鐨勭増鏈腑錛屽鍔犱簡濡備笅鐨勪綅鍥撅細OBM_UPARROWIORM_DNARROWIOBM_RGARROWIOBM_LFARROWI ......"
鍒氬紑濮嬬敤鐨勬椂鍊?/span>,鎴戠洿鎺ユ妸鍥懼儚璺緞鍚嶇粰浜?/span> lpszRecourceName,鍙繪槸涓嶆垚鍔?/span>.浠旂粏媯鏌ヤ簡紼嬪簭,涔熸病鍙戠幇閿欒.鍙負浠涔堝憿?...CSDN涓鏌ユ墠鍙戠幇闂鍑哄湪 lpszRecourceName涓?/span>. lpszRecourceName鎸夊瓧闈㈡剰鎬濆ソ鍍忔槸"鎸囧悜璧勬簮鐨勫悕縐板瓧絎︿覆",鍙疄闄呭憿?鍗翠笉鏄竴鑸悊瑙g殑紓佺洏涓婄殑璧勬簮鏂囦歡鍚?/span>,鑰屾槸VC宸ョ▼鍐呴儴宸插鍏ョ殑璧勬簮鍚?/span>,鎵浠ユ妸澶栭儴鏂囦歡鐨勫悕縐拌祴緇欏畠褰撶劧涓嶆垚鍔熶簡.闂鎬庝箞瑙e喅鍛?/span>?---鐢?span lang=EN-US>API鍑芥暟HBITMAP LoadImage("鏂囦歡鍚?span lang=EN-US>");涓嶈繃鏀瑰嚱鏁拌繑鍥炵殑鏄寚鍚?span lang=EN-US>Load鍥劇墖鐨勫彞鏌?/span>,鎵浠ラ渶瑕佺敤鍒?span lang=EN-US>CBitmap鐨?span lang=EN-US>Attach鏂規硶:
//鐩存帴浠庡閮ㄦ枃浠跺姞杞藉浘鐗?span lang=EN-US>
HBITMAP bitmap;
bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),strFileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
m_backBitmap.DeleteObject();
if(!m_backBitmap.Attach(bitmap))
{
MessageBox("瀵煎叆鑳屾櫙鍥懼け璐?span lang=EN-US>!","鎻愮ず",MB_OK);
return;
}
****************************************
void CitemView::getBitMap( CDC *pDC )
{
CDC MemDC;
HBITMAP hBmp;
BITMAP bm;
CBitmap Bitmap;
CPoint point( 10, 10);
CString cStr;
//hBmp = (HBITMAP)::LoadImage(NULL,"BG.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),"BG.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
Bitmap.DeleteObject();
Bitmap.Attach( hBmp );
Bitmap.GetObject(sizeof(BITMAP),&bm);
MemDC.CreateCompatibleDC(pDC);
MemDC.SelectObject(&Bitmap);
pDC->BitBlt(point.x, point.y, bm.bmWidth, bm.bmHeight, &MemDC, 0, 0, SRCCOPY);
MemDC.DeleteDC();
}
***************************************************
璇烽棶LoadBitmap( LPCTSTR lpszResourceName )涓?span lang=EN-US>lpszResourceName 鏄寚鍝釜鍚嶅瓧
BOOL LoadBitmap(LPCTSTR lpszResourceName);
BOOL LoadBitmap(UINT nIDResource);
nIDResource 鏄寚璧勬簮ID
浣?span lang=EN-US>lpszResourceName鏄寚浠涔堝憿
姣斿錛氭垜鍒涘緩浜嗕竴涓?span lang=EN-US>BITMAP璧勬簮IDB_BITMAP1 ; lpszResourceName鏄寚浠涔堝憿錛屾槸紜洏涓婄殑bitmap1.bmp鍚楋紝濡傛灉鏄紝浠ヤ笅浠g爜涓轟粈涔堟槸閿欑殑銆?span lang=EN-US>
CBitmap bmp;
bmp.LoadBitmap("d:\\..\\res\\bitmpa1.bmp");
CDC memdc;
BITMAP bmstru;
bmp.GetBitmap(&bmstru);
memdc.CreateCompatibleDC(pDC);
memdc.SelectObject(&bmp);
pDC->BitBlt(0,0,bmstru.bmWidth,bmstru.bmHeight,&memdc,0,0,SRCCOPY);
鐢?span lang=EN-US>Notepad鎵撳紑*.rc鏂囦歡錛屾壘鍒扮被浼間笅闈竴琛岋細
IDB_BITMAP BITMAP "res\\background.bmp"
鏀規垚錛?/span>
Bitmap1 BITMAP "res\background.bmp"
鎴栬咃紝鍦?span lang=EN-US>VC涓療鐪嬩綅鍥捐祫婧愮殑灞炴э紝灝嗗叾ID鏍忓唴鏀逛負"Bitmap"錛堟敞鎰忥紝涓瀹氳鍔犲紩鍙鳳級銆?/span>
鐒跺悗璋冪敤錛?/span>
bmp.LoadBitmap("Bitmap1");
淇濊瘉鎴愬姛銆?/span>
璧勬簮鍙互鐢ㄤ竴涓暣鏁版潵鏍囩ず錛屼篃鍙互鐢ㄤ竴涓瓧絎︿覆鏍囩ず銆備絾鏃犺濡備綍錛岃繖浜?span lang=EN-US>ID閮戒笉鏄寚浣嶅浘鏂囦歡鍚嶃備笉瑕佸皢瀹冧滑娣鋒穯銆?span lang=EN-US>