锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
An add-on for this website failed to run. Check the security settings in Internet options for potential conflicts.
鍙浣犲皣 IE 鏇存柊鎴?IE8錛屽啀浣跨敤 Visual Studio 2005 鎴?Visual Studio 2008 鎵撻枊 Class Wizard錛岀櫥鐧葷櫥鍑籌紒涓婂湒鐨勯尟瑾ょ暙闈㈠氨鏈冨嚭鐝句簡錛?/p>
鎿?Visual C++ Team Blog 鎵榪幫紝浠ヤ笅鍥涘?Wizard 閮藉彈鍒板獎闊匡細
鐝懼湪鍞竴鐨勬柟娉曟槸淇敼 Registry 錛?/p>
淇敼瀹屾垚寰岋紝涓嶇敤閲嶆柊闁嬫錛屽叧闂璙isual Studio鍚庡啀鎵撳紑鑳藉绔嬪埢鎭㈠姝e父! 錒濆鏋滄槸 Visual Studio 2005錛屽墖蹇呴渶瀹夎 SP1錛孷isual C++ Team Blog 鏈夎┏榪板晱欏屾垚鍥狅紝鏈夎垐瓚g殑鏈嬪弸鍙互鍘葷湅鐪嬨傦篂
鐝懼湪 Visual C++ Team 濂藉儚閭勫湪璺?IE 鏂歸潰閫茶婧濋?.. 鐪嬬湅鏄?IE 鎺ㄥ嚭淇妾旈倓鏄湪 VS 鎺ㄥ嚭銆?/p>
Visual C++ Team Blog: http://blogs.msdn.com/vcblog/archive/2009/03/28/some-vs2005-and-vs2008-wizards-pop-up-script-error.aspx
1銆佸ご鏂囦歡鏄?span lang="EN-US">C鏍煎紡錛屼絾鏄嚱鏁板疄鐜版槸C++鐨勩?span lang="EN-US">
瑙e喅鍔炴硶錛氬湪.h鏂囦歡涓坊鍔?/span>
#if __cplusplus extern "C" { #endif /* 浠g爜琛?span lang="EN-US"> */
#if __cplusplus
}
#endif
2銆佸ご鏂囦歡鐨勫嚱鏁板0鏄庡弬鏁扮被鍨嬩笌cpp鏂囦歡涓殑鍑芥暟瀹氫箟涓嶄竴鑷?span lang="EN-US">
璋冩暣涓轟竴鑷村嵆鍙?span lang="EN-US">
鏍規嵁涓婇潰鐨勫垎鏋愶紝瀵逛簬闇瑕佸疄鐜板己綾昏仛錛屼綆鑰﹀悎鐨勭▼搴忚岃█錛屽叾鏈緇堢洰鐨勪笌綾誨皝瑁呯殑鐩殑鍩烘湰涓鑷淬傚湪鑰冭檻濡備綍瀹炵幇鏃訛紝鍙互鍊熺敤OOP鐨勬柟娉曘?/p>
鍏蜂綋褰掔撼濡備笅錛?/p>
1銆佸疄鐜版暟鎹殑灝佽
浣跨敤struct灝嗕竴緇勮涓虹殑鍏辯敤瀵硅薄鎵撳寘銆?/p>
2銆佸皢妯″潡鐙珛鍖栦負鏂囦歡
鈶?nbsp; 褰㈠紡涓?/p>
闇瑕佷緵澶栭儴浣跨敤鐨凙PI鎺ュ彛鏀懼湪.h涓紝妯″潡鍐呴儴鍑芥暟鏀懼湪.c鏂囦歡涓?/p>
鈶?nbsp; 瀹炵幇涓?/p>
鏂囦歡涓殑鍑芥暟鐨勬搷浣滃璞″彧鑳芥槸榪欎釜struct涓殑鎴愬憳銆備笉瑕佽鏂囦歡澶栫殑鍏ㄥ眬鍙橀噺鏉ュ喅瀹氭ā鍧楄涓虹殑鎵ц璺緞銆傝繖鏍風殑鐩殑鍦ㄤ簬妯″潡鐨勮涓哄彧鑳界敱妯″潡鑷韓鐨勭姸鎬佸喅瀹氥?/p>
3銆佸璞?妯″潡)鐨勭姸鎬佹帶鍒?/strong>
妯″潡鐨勭姸鎬佷篃搴旇浣跨敤涓撻棬鐨勬搷浣滃嚱鏁拌繘琛屽皝瑁呫?/p>
鐩殑鏄槻姝㈠叏灞鍙橀噺婊ョ敤錛屼嬌淇敼鐘舵佺殑琛屼負瀹規槗琚洃瑙嗕笌鎺у埗銆?/p>
瀹為檯緙栫▼涓紝浣跨敤鍏ㄥ眬鍙橀噺鏂瑰紡鐨勭姸鎬佹帶鍒跺満鍚堬紝鐘舵佺殑鍙樻洿緇忓父琚仐婕忋傚己鍒朵嬌鐢ㄥ嚱鏁板鐘舵佺殑榪涘叆涓庨鍑鴻繘琛屾爣璇嗭紝闃叉閬楀繕銆?/p>
4銆佽涓烘帶鍒?/strong>
灝嗘墽琛岀殑鏌愪竴琛屼負鐨勫垽鏂潯浠惰繘琛屽皝瑁呫?nbsp;
鍦ㄥ鏉傜郴緇熶腑錛屼竴涓涓虹殑鎵ц騫朵笉鏄兘澶熺敱鍗曚竴鐨凟vent灝辮兘瑙﹀彂銆傝屾槸闇瑕佽澶氱姸鎬佹潯浠剁殑鎴愮珛銆傝繖縐嶆儏鍐典笅錛岄渶瑕佹妸琛屼負鐨勬墽琛屽喅絳栨彁鐐間負鍐崇瓥鍑芥暟綈囷紝闆嗕腑綆$悊銆?/p>
鍚勪釜鐘舵佷綔涓鴻緭鍏ワ紝鎺у埗鍑芥暟鏄搷搴斿嚱鏁幫紝杈撳嚭鐨勬槸鍝嶅簲琛屼負銆?nbsp;
綆鑰岃█涔嬪氨鏄璇歌憶浜繖涓笓瀹跺幓鍒ゆ柇銆愬ぉ鏃躲戙併愬湴鍒┿戙併愪漢鍜屻戣繖浜涙潯浠舵槸涓嶆槸閮藉叿澶囦簡錛屾槸涓嶆槸鍙互鎿嶅浼欎簡銆傚鏋滆繕娌℃湁錛岄偅涓瓟鏄庡厔灝辮鍐崇瓥鏄笉鏄紲炲紕楝間竴涓嬶紝鍊熺偣涓滈鎴栨槸鍙戞尌鑷韓鎵嶈兘閫犲嚭鏈ㄧ墰嫻侀┈鏉ュ府甯繖銆?/p>
濂藉錛?/p>
鈶?nbsp; 鍑忓皯浠g爜鍐椾綑銆?/p>
闇瑕佹坊鍔犲彉鏇寸殑鍦哄悎錛屽彧闇瑕佹洿鏀硅繖涓涓喅絳栫被鍗沖彲銆?/p>
鈶?nbsp; 闆嗕腑浼樺娍鍏靛姏姝肩伃鏁屼漢鐨勬湁鐢熷姏閲忋?/p>
鎬葷粨錛?/strong>
涓婇潰鐨勬柟娉曠殑鏍規湰鐩殑鍦ㄤ簬錛氶檺鍒惰涓猴紝灝嗗叾鍥哄畾鍦ㄤ竴緇勬暟鎹殑闆嗗悎涓娿傚噺灝戣﹀悎鎬с?/p>
涓婇潰鐨勬柟娉曞彧鏄粠紼嬪簭緇撴瀯涓婃帶鍒跺疄鐜版柟寮忥紝閬垮厤鍑洪敊鐨勫彲鑳姐備笉鍙兘瑙e喅鎵鏈夐棶棰樸備絾涓昏鐨勮В鍐蟲柟鍚戞槸錛岄噰鐢∣OP鐨勬濇兂錛岄檺鍒惰涓猴紝閬垮厤鍏ㄥ眬鍙橀噺婊″ぉ椋炪?/p>
CWindowDC
:聽聽聽璁懼鐜鐨勬槧灝勫尯鍩熶負鏁翠釜紿楀彛錛堝寘鎷爣棰樻爮銆佺姸鎬佹爮銆佺獥鍙h竟妗嗙瓑錛夈傚師鐐癸紙
0
錛?/span>
0
錛夊湪鏁翠釜紿楀彛鐨勫乏涓婅銆?/span>
CPaintDC:聽聽
聽聽聽聽褰撻渶瑕侀噸鍐?/span>
OnPaint
鍑芥暟鐨勬椂鍊欙紝灝遍渶瑕佷嬌鐢?/span>
CPaintDC
綾匯?/span>
瑙嗗浘紿楀彛娌℃湁闈炲鎴峰尯鍩?/span>.
鍦ㄥ凡緇忓垎閰嶇殑鍔ㄦ佸唴瀛樼┖闂翠笂浣跨敤
new
鍒涘緩鏂扮殑瀵硅薄銆傝繖縐嶅艦寮忕殑
new
琛ㄨ揪寮忓氨鏄?/span>
placement new expression
銆?/span>
2.聽聽聽聽聽聽聽聽聽
浣跨敤鏍煎紡
new(place_address) type_specifier
鈶?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽聽聽聽
place_address
錛屽凡緇忓紑杈熺┖闂寸殑鎸囬拡
鈶?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽聽聽聽
type_specifier
錛屾柊鍒嗛厤瀵硅薄鐨勭被鍨?/span>
3.聽聽聽聽聽聽聽聽聽
瀹炰緥
int *pBuff聽 = new int[1000];
long *pb聽聽 = new(pBuff) long;聽聽聽聽 //
鍗沖皢
pBuff
鍐呯殑涓鍧楀ぇ灝忎負
sizeof(long)
鐨勫唴瀛樺尯鍩熺殑
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //
浣跨敤鏉冪粰
pb
鎸囧悜鐨勫璞°?/span>
4.聽聽聽聽聽聽聽聽聽
浣跨敤娉ㄦ剰
鈶?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽聽聽聽
闇瑕?/span>
#include<new>
鈶?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽聽聽聽
涓嶉渶瑕?/span>
delete pb
錛?/span>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //
鍥犱負騫舵病鏈変負
pb
寮杈熶竴鍧楀唴瀛樸?/span>
pb
鎸囧悜鐨勫璞″彧鏈変嬌鐢ㄦ潈
濡傛灉浣跨敤
delete []pBuff;聽聽聽聽聽聽聽聽聽聽聽聽聽 //
鎰忓懗鐫鍏跺唴瀛樼┖闂翠笂鐨勬墍鏈夊璞¢兘琚?/span>
kill
銆?/span>
涓涓敱
C++
緙栬瘧鐨勭▼搴忓崰鐢ㄧ殑鍐呭瓨鍒嗕負浠ヤ笅鍑犱釜閮ㄥ垎
1
銆佹爤鍖猴紙
stack
錛?br />聽聽聽
鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁
錛?/font>
瀛樻斁鍑芥暟鐨勫弬鏁板鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾鎿嶄綔鏂瑰紡綾諱技浜?/span>
鏁版嵁緇撴瀯
涓殑鏍堛?br />
2
銆佸爢鍖猴紙
heap
錛?/span>
聽聽聽鐢辯▼搴忓憳鍒嗛厤閲婃斁錛?/span>
鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鐢?/span>
OS
鍥炴敹
銆傚瓨鏀劇殑鏄姩鎬佸垎閰嶇殑鏁版嵁瀵硅薄銆?/font>
娉ㄦ剰瀹冧笌鏁版嵁緇撴瀯涓殑鍫嗘槸涓ゅ洖浜嬶紝鍒嗛厤鏂瑰紡鍊掓槸綾諱技浜庨摼琛ㄣ?/span>
3
銆佸叏灞鍖猴紙闈欐佸尯錛夛紙
static
錛?/span>
聽聽聽鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忕殑瀛樺偍鏄斁鍦ㄤ竴鍧楃殑錛屽垵濮嬪寲鐨勫叏灞鍙橀噺鍜岄潤鎬佸彉閲忓湪涓鍧楀尯鍩燂紝
鏈垵濮嬪寲鐨勫叏灞鍙橀噺鍜屾湭鍒濆鍖栫殑闈欐佸彉閲忓湪鐩擱偦鐨勫彟涓鍧楀尯鍩熴?/span>
紼嬪簭緇撴潫鍚庣敱緋葷粺閲婃斁
4
銆佹枃瀛楀父閲忓尯
聽
聽聽聽
甯擱噺瀛楃涓插氨鏄斁鍦ㄨ繖閲岀殑銆?/span>
紼嬪簭緇撴潫鍚庣敱緋葷粺閲婃斁
5
銆佺▼搴忎唬鐮佸尯
聽聽聽瀛樻斁鍑芥暟浣撶殑浜岃繘鍒朵唬鐮併?/span>
1 銆佷笌鏁版嵁瀵硅薄鐩稿叧鐨勫兼湁涓ょ錛?/span>
n聽聽聽聽聽聽聽聽 鏁版嵁鍊?/span>
鍗沖瓨鍌ㄥ湪鏌愪釜鍐呭瓨鍦板潃涓殑鏁版嵁鏈韓銆?/span>
n聽聽聽聽聽聽聽聽 鍦板潃鍊?/span>
鍗寵鏁版嵁瀵硅薄鐨勫瓨鍌ㄤ綅緗?/span>
2 銆?/span> lvalue 涓?/span> rvalue
n聽聽聽聽聽聽聽聽 lvalue 閫氬父鎸囩殑鏄彲浠ュ鍧騫朵笖鍙互瀵硅鍦板潃鍐呭瀛樺偍鐨勫璞¤繘琛屽啓鎿嶄綔 (writeable) 銆傚彲浠ョ湅浣?/span> location value 銆?/span>
n聽聽聽聽聽聽聽聽 rvalue 閫氬父鎸囩殑鏄偅浜涜兘澶熸彁渚涙暟鎹肩殑鏁版嵁錛屽嵆浠庢煇涓?/span> mem 涓鍑虹殑 value 銆傚彲浠ヨ涓烘槸 read value 銆?/span>
3 銆佹枃瀛楀父閲忥紙 literate const 錛変笌鍙橀噺錛?/span> variable 錛?/span>
n聽聽聽聽聽聽聽聽 鏂囧瓧甯擱噺
鍗抽氬父鎸囩殑鏁板瓧錛?/span> 1 錛?/span> 200 錛屻傘傘傦級銆傝鏁版嵁瀵硅薄鍒嗛厤鍦ㄥ父閲忓唴瀛樺尯鍩燂紝涓嶅彲浠ュ鍧錛屼篃灝辨槸涓嶅彲浠ラ氳繃鎿嶄綔瀹冪殑鍦板潃鍊兼潵鍙樻洿鐨勬暟鎹璞°傚洜姝や笉鑳戒綔涓?/span> lvalue 鍑虹幇錛屽彧鑳芥槸 rvalue
n聽聽聽聽聽聽聽聽 鍙橀噺
鍙互瀵誨潃銆傞氳繃鍙橀噺鍚嶅氨鍙互鏀瑰彉璇ユ暟鎹湴鍧鐨勫唴瀹廣傛墍浠ュ彲浠ユ垚涓?/span> lvalue 銆?/span> rvalue
鎬葷粨錛?/span>
u聽聽聽聽聽聽 lvalue 錛氬彲浠ラ氳繃鏁版嵁瀵硅薄鑷韓鍦板潃鏉ユ敼鍙樻暟鎹璞″肩殑鏁版嵁瀵硅薄錛岃姹傝瀵硅薄鍙互瀵誨潃銆?/span>
u聽聽聽聽聽聽 rvalue 錛氳兘澶熸彁渚涙暟鎹璞℃湰韜暟鍊肩殑鏁版嵁瀵硅薄錛岃瀵硅薄涓嶄竴瀹氬彲浠ュ鍧
u聽聽聽聽聽聽 鐢辨搷浣滅鍐沖畾闇瑕佷粈涔堢被鍨嬬殑鏁版嵁鍊肩被鍨?/span>
娉ㄦ剰錛?/span>
lvalue 涓殑 鈥檒鈥?/span> 涓嶆槸 left 鐨勬剰鎬濓紝鏃笉鏄寚鍦ㄦ搷浣滅宸﹁竟銆傚悓鏍?/span> 鈥檙鈥?/span> 涓嶆槸 right
聽聽聽聽聽聽 渚嬪錛?/span>
x++;
聽聽聽聽聽聽 ++x;
聽聽聽聽聽聽 涓や釜琛ㄨ揪寮忓潎瑕佹眰 x 鏄?/span> lvalue 銆?/span>
浣跨敤涓句緥錛?/span>
鈶?聽聽聽聽 0=1 錛?/span> 聽聽聽聽聽聽聽聽聽聽聽 //error, 0 涓嶆槸 lvalue
鈶?聽聽聽聽 x+0.1*y=z;聽聽聽聽 //error, 鍦ㄨ祴鍊艱繍綆楃宸﹁竟鐨勫簲璇ヤ負 lvalue
鈶?聽聽聽聽 const int size=4;
size=10;聽聽聽聽聽聽聽聽 //error, 鏁版嵁瀵硅薄鍦板潃鍐呭涓嶅彲浠ユ敼鍙橈紝鍗充笉鏄?/span> writeable
2銆?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽
鍦?/span> OnInitialUpdate 涓坊鍔犲垵濮嬪寲鏃?/span> Scroll 鐨勭浉鍏沖睘鎬у?/span>
CSize sizeTotal(0,0);
SetScrollSizes(MM_TEXT,sizeTotal);
3銆?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽
鎵撳紑鏂囦歡 ( 鍥懼儚鍚?/span> ) 鏍規嵁鍥懼儚鐨勫ぇ灝忥紝璁劇疆婊氬姩灞炴у?/span>
ChangeScrollRange();聽聽 //
鑷畾涔夊嚱鏁?/span>
4銆?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽
鍦?/span> View 綾諱腑娣誨姞鎴愬憳鍙橀噺銆?/span>
浣滅敤鏄瓨鍌ㄥ浘鍍忔樉紺轟綅緗笌鍘熺偣鐨?/span>
offset
聽聽聽聽聽聽聽聽
int
聽聽聽聽聽聽聽聽聽聽聽聽聽
m_ImgVScrollPos
;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
//聽聽聽聽聽聽 VScroll distance
int
聽聽聽聽聽聽聽聽聽聽聽聽聽
m_ImgHScrollPos
;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
//聽聽聽聽聽聽 HScroll distance
5銆?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽
婊氬姩澶勭悊
娣誨姞鑷畾涔夊搷搴?/span>
WM_VSCROLL
銆?/span>
WM_HSCROLL
娑堟伅鐨勪簨浠跺嚱鏁幫細
OnVScroll
銆?/span>
OnHScroll
void
CSockIIView
::
OnVScroll
(
UINT
nSBCode
,
UINT
nPos
,
CScrollBar
*
pScrollBar
)
{
聽聽聽
// TODO: Add your message handler code here and/or call default
聽聽聽
SCROLLINFO
si
;
聽聽聽
GetScrollInfo
(
SB_VERT
,&
si
,
SIF_ALL
);
聽聽聽
m_ImgVScrollPos
=
si
.
nPos
;
聽聽聽
Invalidate
(
TRUE
);
聽聽聽
CScrollView
::
OnVScroll
(
nSBCode
,
nPos
,
pScrollBar
);
}
6銆?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽
鍥懼儚鏄劇ず
鏇存敼
OnPaint
鍑芥暟涓浘鍍忔樉紺虹殑浠g爜錛?/span>
dc
.
BitBlt
(
rc
.
left
,
rc
.
top
,
rc
.
Width
(),
rc
.
Height
(),
m_pMemDC
,
rc
.
left
,
rc
.
top
,
SRCCOPY
);
涓猴細
dc.BitBlt(rc.left,rc.top,rc.Width(),rc.Height(),m_pMemDC,(rc.left+m_ImgHScrollPos),(rc.top+m_ImgVScrollPos),SRCCOPY);
澶囨敞錛?/span>
脴聽聽聽聽聽聽聽聽
SetScrollSizes()聽 MFC
搴撳嚱鏁幫紝璁劇疆婊氬姩鏉″睘鎬с傚弬鏁板惈涔夊弬瑙?/span>
MSDN
銆?/span>
void SetScrollSizes(
聽聽 int nMapMode,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //
褰卞皠妯″紡銆?/span>
聽
聽 SIZE sizeTotal,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //
婊氬姩鑼冨洿錛屽嵆鎵鏈?/span>
page
鍔犺搗鏉ョ殑楂樺害鎴栧搴?/span>
聽聽 const SIZE& sizePage = sizeDefault,聽聽聽聽聽聽聽聽 //
姣忛〉鐨勫ぇ灝忋傛牴鎹ā寮忕殑涓嶅悓錛屽害閲忕殑灝哄害涓嶅悓
聽聽 const SIZE& sizeLine = sizeDefault 聽聽聽聽聽聽聽聽 //
姣忚鐨勫ぇ灝忋傛牴鎹ā寮忕殑涓嶅悓錛屽害閲忕殑灝哄害涓嶅悓
);
nMapMode
錛屼竴鑸嬌鐢?/span>
MM_TEXT
錛屼互鍍忕礌涓哄崟浣嶃傚弬瑙?/span>
MSDN
脴聽聽聽聽聽聽聽聽
BitBlt
錛?/span>
灝嗗唴瀛樹腑鐨勫浘鎷瘋礉鍒板睆騫曚笂榪涜鏄劇ず銆傚弬鏁板惈涔?/span>
鍙傝
MSDN
銆?/span>
BOOL BitBlt(
聽 HDC hdcDest,聽聽聽聽聽聽 // handle to destination DC
聽 int nXDest,聽 聽聽聽聽聽聽聽聽 // x-coord of destination upper-left corner
聽 int nYDest, 聽聽聽聽聽聽聽聽聽聽 // y-coord of destination upper-left corner
聽 int nWidth,聽 聽聽聽聽聽聽聽聽 // width of destination rectangle
聽 int nHeight,聽聽聽聽聽聽聽聽聽聽聽聽 // height of destination rectangle
聽 HDC hdcSrc,聽 聽聽聽聽 // handle to source DC
聽 int nXSrc,聽聽 聽聽聽聽聽聽聽聽 // x-coordinate of source upper-left corner
聽 int nYSrc,聽聽 聽聽聽聽聽聽聽聽 // y-coordinate of source upper-left corner
聽 DWORD dwRop聽 // raster operation code
);
濡傛湁鐤戦棶錛屾榪庣暀璦銆?/span>