锘??xml version="1.0" encoding="utf-8" standalone="yes"?> Debug 閫氬父縐頒負(fù)璋冭瘯鐗堟湰錛屽畠鍖呭惈璋冭瘯淇℃伅錛屽茍涓斾笉浣滀換浣曚紭鍖栵紝渚夸簬紼嬪簭鍛樿皟璇曠▼搴忋俁elease 縐頒負(fù)鍙戝竷鐗堟湰錛屽畠寰寰鏄繘琛屼簡(jiǎn)鍚勭浼樺寲錛屼嬌寰楃▼搴忓湪浠g爜澶у皬鍜岃繍琛岄熷害涓婇兘鏄渶浼樼殑錛屼互渚跨敤鎴峰緢濂藉湴浣跨敤銆?br> Debug 鍜?Release 鐨勭湡姝g瀵嗭紝鍦ㄤ簬涓緇勭紪璇戦夐」銆備笅闈㈠垪鍑轟簡(jiǎn)鍒嗗埆閽堝浜岃呯殑閫夐」錛堝綋鐒墮櫎姝や箣澶栬繕鏈夊叾浠栦竴浜涳紝濡?Fd /Fo錛屼絾鍖哄埆騫朵笉閲嶈錛岄氬父浠栦滑涔熶笉浼?xì)寮曡?Release 鐗堥敊璇紝鍦ㄦ涓嶈璁猴級(jí) 瀹為檯涓婏紝Debug 鍜?Release 騫舵病鏈夋湰璐ㄧ殑鐣岄檺錛屼粬浠彧鏄竴緇勭紪璇戦夐」鐨勯泦鍚堬紝緙栬瘧鍣ㄥ彧鏄寜鐓ч瀹氱殑閫夐」琛屽姩銆備簨瀹炰笂錛屾垜浠敋鑷沖彲浠ヤ慨鏀硅繖浜涢夐」錛屼粠鑰屽緱鍒頒紭鍖栬繃鐨勮皟璇曠増鏈垨鏄甫璺熻釜璇彞鐨勫彂甯冪増鏈?br> 鏈変簡(jiǎn)涓婇潰鐨勪粙緇嶏紝鎴戜滑鍐嶆潵閫愪釜瀵圭収榪欎簺閫夐」鐪嬬湅 Release 鐗堥敊璇槸鎬庢牱浜х敓鐨?br> 3. _DEBUG 涓?NDEBUG 錛氬綋瀹氫箟浜?_DEBUG 鏃訛紝assert() 鍑芥暟浼?xì)琚~栬瘧錛岃?NDEBUG 鏃朵笉琚紪璇戙傞櫎姝や箣澶栵紝VC++涓繕鏈変竴緋誨垪鏂█瀹忋傝繖鍖呮嫭錛?/p>
ANSI C 鏂█ void assert(int expression ); 鎵鏈夎繖浜涙柇璦閮藉彧鍦?Debug鐗堜腑鎵嶈緙栬瘧錛岃屽湪 Release 鐗堜腑琚拷鐣ャ傚敮涓鐨勪緥澶栨槸 VERIFY() 銆備簨瀹炰笂錛岃繖浜涘畯閮芥槸璋冪敤浜?assert() 鍑芥暟錛屽彧涓嶈繃闄勫姞浜?jiǎn)涓浜涗笌搴撴湁鍏崇殑璋冭瘯浠g爜銆傚鏋滀綘鍦ㄨ繖浜涘畯涓姞鍏ヤ簡(jiǎn)浠諱綍紼嬪簭浠g爜錛岃屼笉鍙槸甯冨皵琛ㄨ揪寮忥紙渚嬪璧嬪箋佽兘鏀瑰彉鍙橀噺鍊肩殑鍑芥暟璋冪敤 絳夛級(jí)錛岄偅涔?Release 鐗堥兘涓嶄細(xì)鎵ц榪欎簺鎿嶄綔錛屼粠鑰岄犳垚閿欒銆傚垵瀛﹁呭緢瀹規(guī)槗鐘繖綾婚敊璇紝鏌ユ壘鐨勬柟娉曚篃寰堢畝鍗曪紝鍥犱負(fù)榪欎簺瀹忛兘宸插湪涓婇潰鍒楀嚭錛屽彧瑕佸埄鐢?VC++ 鐨?Find in Files 鍔熻兘鍦ㄥ伐紼嬫墍鏈夋枃浠朵腑鎵懼埌鐢ㄨ繖浜涘畯鐨勫湴鏂瑰啀涓涓媯(gè)鏌ュ嵆鍙傚彟澶栵紝鏈変簺楂樻墜鍙兘榪樹(shù)細(xì)鍔犲叆 #ifdef _DEBUG 涔嬬被鐨勬潯浠剁紪璇戯紝涔熻娉ㄦ剰涓涓嬨?br> 欏轟究鍊煎緱涓鎻愮殑鏄?VERIFY() 瀹忥紝榪欎釜瀹忓厑璁鎬綘灝嗙▼搴忎唬鐮佹斁鍦ㄥ竷?yōu)當(dāng)琛ㄨ緫旨忛噷銆傝繖涓畯閫氬父鐢ㄦ潵媯(gè)鏌?Windows API 鐨勮繑鍥炲箋傛湁浜涗漢鍙兘涓鴻繖涓師鍥犺屾互鐢?VERIFY() 錛屼簨瀹炰笂榪欐槸鍗遍櫓鐨勶紝鍥犱負(fù) VERIFY() 榪濆弽浜?jiǎn)鏂a鐨勬濇兂錛屼笉鑳戒嬌紼嬪簭浠g爜鍜岃皟璇曚唬鐮佸畬鍏ㄥ垎紱伙紝鏈緇堝彲鑳戒細(xì)甯︽潵寰堝楹葷儲(chǔ)銆傚洜姝わ紝涓撳浠緩璁敖閲忓皯鐢ㄨ繖涓畯銆?/p>
4. /GZ 閫夐」錛氳繖涓夐」浼?xì)鍋氫互涓嫎q欎簺浜?/p>
(1) 鍒濆鍖栧唴瀛樺拰鍙橀噺銆傚寘鎷敤 0xCC 鍒濆鍖栨墍鏈夎嚜鍔ㄥ彉閲忥紝0xCD ( Cleared Data ) 鍒濆鍖栧爢涓垎閰嶇殑鍐呭瓨錛堝嵆鍔ㄦ佸垎閰嶇殑鍐呭瓨錛屼緥濡?new 錛夛紝0xDD ( Dead Data ) 濉厖宸茶閲婃斁鐨勫爢鍐呭瓨錛堜緥濡?delete 錛夛紝0xFD( deFencde Data ) 鍒濆鍖栧彈淇濇姢鐨勫唴瀛橈紙debug 鐗堝湪鍔ㄦ佸垎閰嶅唴瀛樼殑鍓嶅悗鍔犲叆淇濇姢鍐呭瓨?shù)互闃叉瓒婄晫璁块棶锛?jí)錛屽叾涓嫭鍙蜂腑鐨勮瘝鏄井杞緩璁殑鍔╄璇嶃傝繖鏍峰仛鐨勫ソ澶勬槸榪欎簺鍊奸兘寰堝ぇ錛屼綔涓烘寚閽堟槸涓嶅彲鑳界殑錛堣屼笖 32 浣嶇郴緇熶腑鎸囬拡寰堝皯鏄鏁板鹼紝鍦ㄦ湁浜涚郴緇熶腑濂囨暟鐨勬寚閽堜細(xì)浜х敓榪愯鏃墮敊璇級(jí)錛屼綔涓烘暟鍊間篃寰堝皯閬囧埌錛岃屼笖榪欎簺鍊間篃寰堝鏄撹鯨璁わ紝鍥犳榪欏緢鏈夊埄浜庡湪 Debug 鐗堜腑鍙戠幇 Release 鐗堟墠浼?xì)閬囧埌鐨勯敊璇傝鐗瑰埆娉ㄦ剰鐨勬槸錛屽緢澶氫漢璁や負(fù)緙栬瘧鍣ㄤ細(xì)鐢?0 鏉ュ垵濮嬪寲鍙橀噺錛岃繖鏄敊璇殑錛堣屼笖榪欐牱寰堜笉鍒╀簬鏌ユ壘閿欒錛夈?br> (2) 閫氳繃鍑芥暟鎸囬拡璋冪敤鍑芥暟鏃訛紝浼?xì)閫氳繃媯(gè)鏌ユ爤鎸囬拡楠岃瘉鍑芥暟璋冪敤鐨勫尮閰嶆с傦紙闃叉鍘熷艦涓嶅尮閰嶏級(jí) 涓夈佹庢牱“璋冭瘯” Release 鐗堢殑紼嬪簭 閬囧埌 Debug 鎴愬姛浣?Release 澶辮觸錛屾樉鐒舵槸涓浠跺緢娌撫鐨勪簨錛岃屼笖寰寰鏃犱粠涓嬫墜銆傚鏋滀綘鐪嬩簡(jiǎn)浠ヤ笂鐨勫垎鏋愶紝緇撳悎閿欒鐨勫叿浣撹〃鐜幫紝寰堝揩鎵懼嚭浜?jiǎn)閿欒锛屽浐鐒跺緢濂姐備絾濡傛灉涓鏃舵壘涓嶅嚭錛屼互涓嬬粰鍑轟簡(jiǎn)涓浜涘湪榪欑鎯呭喌涓嬬殑絳栫暐銆?br> 2. 鍦ㄧ紪紼嬭繃紼嬩腑灝辮鏃跺父娉ㄦ剰嫻嬭瘯 Release 鐗堟湰錛屼互鍏嶆渶鍚庝唬鐮佸お澶氾紝鏃墮棿鍙堝緢绱с?br>
瀵硅瘽妗嗚祫婧愮殑鍒涘緩
銆銆浣犻渶瑕佷嬌鐢?nbsp;brcc32.exe 緙栬瘧瀵硅瘽妗嗚祫婧愩傝繖鍦?nbsp;Delphi 甯姪鏂囨。涓病鏈夎緇嗚鏄庛備笅闈㈡垜浠紑濮嬪垱寤轟竴涓潪甯哥畝鍗曠殑瀵硅瘽妗嗚祫婧?nbsp;.RC 鏂囦歡銆?br>
First DIALOG 12, 10, 206, 86
STYLE WS_POPUP | WS_DLGFRAME | WS_CAPTION
CAPTION " A Dialog Form"
FONT 10, "MS Sans Serif"
{
LTEXT "Simple Dialog" 200, 8, 6, 196, 8
PUSHBUTTON "OK" IDOK, 48, 71, 32, 12
}
銆銆榪欐槸 C 璇█浠g爜錛屼笉鏄?nbsp;Pascal 浠g爜銆傜涓涓?#8220;First”鏄祫婧愬悕瀛楋紝灝卞儚涓嬮潰涓琛岀殑“MyIcon”銆?br>
MyIcon ICON Floppy.ico
瀵逛簬 .RC 鏂囦歡鍐呯殑鍥炬爣錛孌IALOG 鏄竴縐嶈祫婧愶紝12銆?0銆?06銆?6 鏄璇濇鐨勬爣鍑嗙殑涓娿佸乏銆佸銆侀珮鍙傛暟錛堝崟浣嶄笉鏄儚绱狅紝瀵硅瘽妗嗗崟浣嶅弬
瑙?nbsp;Win32 API 甯姪鐨?#8220;GetDialogBaseUnits”錛夈備笂鍜屽乏涓庡畠鐨勭埗紿椾綋鐨勪笂鍜屽乏鐩稿叧錛屼互鐖剁獥浣撲負(fù)鍙傝冨師鐐廣傛帴涓嬮噷鏉?
鏄細(xì)STYLE WS_POPUP | WS_DLGFRAME | WS_CAPTION 錛岃繖浜涜緗簡(jiǎn)瀵硅瘽妗嗙獥浣撶殑鍒涘緩椋庢牸錛?nbsp;C 璇█涓?
鐨?nbsp;| 鍜?nbsp;Pascal 璇█涓殑 or 涓鏍鳳級(jí)銆傝繕鏈変竴浜涘叾浠栫殑瀵硅瘽妗嗛鏍鹼細(xì)
DS_LOCALEDIT -鎸囧畾緙栬緫妗嗘帶浠跺湪瀵硅瘽妗嗕笂
浣跨敤紼嬪簭鏁版嵁妯″潡鐨勫唴瀛樸傞粯璁ゆ儏鍐典笅錛屽璇濇涓婄殑緙栬緫妗嗘帶浠舵槸浣跨敤搴旂敤紼嬪簭鏁版嵁妯″潡涔嬪鐨勫唴瀛樼殑銆傚鏋滄病鏈変嬌鐢ㄨ繖涓爣蹇楋紝閭d箞涓嶈鍚戠紪杈戞鍙?
閫?nbsp;EM_GETHANDLE 鍜?nbsp;EM_SETHANDLE 娑堟伅錛屽洜涓烘帶浠舵病鏈夊瓨鍌ㄥ湪紼嬪簭鐨勬暟鎹ā鍧椼?br>
DS_MODALFRAME -鍒涘緩涓涓ā寮忓璇濇錛屽璇濇鍙互閫氳繃鎸囧畾 WS_CAPTION 鍜?nbsp;WS_SYSMENU 緇撳悎鏍囬鏍忓拰緋葷粺鑿滃崟銆?br>
DS_NOIDLEMSG -紱佹 Windows 鎴栧叾瀹冪▼搴忓湪瀵硅瘽妗嗘樉紺烘椂鍚戝畠鐨?nbsp;owner 紿椾綋鍙戦?nbsp;WM_ENTERIDLE 娑堟伅銆?br>
DS_SYSMODAL -鍒涘緩涓涓郴緇熺殑妯″紡瀵硅瘽妗嗐?br>
濡傛灉浣犱嬌鐢ㄤ簡(jiǎn) WS_CAPTION 椋庢牸錛岄偅涔?#8220;CAPTION " A Dialog Form"”榪欒灝嗗湪瀵硅瘽妗嗘爣棰樹(shù)笂鏀句笂榪欎釜瀛楃
涓詫紝“FONT 10, "MS Sans Serif"”灝嗕細(xì)璁劇疆瀵硅瘽妗嗗唴鎵鏈夋帶浠跺瓧浣撳拰灝哄銆倇 鍜?nbsp;} 瀵瑰簲 Pascal 涓?
鐨?nbsp;begin 鍜?nbsp;end 錛屽湪 { } 涔嬮棿浣犲彲浠ユ斁緗笇鏈涘嚭鐜板湪瀵硅瘽妗嗕笂鐨勬帶浠訛紝PUSHBUTTON 鏄竴涓寜閽紝鍙傛暟璺?
鍦?nbsp;PUSHBUTTON 涔嬪悗錛屽艦寮忓錛?br>PUSHBUTTON "Text on Control" IDNUMBER, Left, Top, Width, Height
鍚庨潰鐨勫弬鏁頒負(fù)瀵硅瘽妗嗗崟浣嶈屼笉鏄儚绱犮傝繖閲屽垱寤虹殑瀵硅瘽妗?nbsp;206 鍗曚綅瀹姐?6 鍗曚綅楂樸佸乏渚ц窛鐖剁獥浣?nbsp;12 鍗曚綅銆侀《閮ㄨ窛鐖剁獥浣?nbsp;10 鍗曚綅錛屽璇濇
涓婃湁闈?rùn)鎬佹枃鏈鍜屾寜閽袱涓帶浠躲?br>
鍏朵粬瀵硅瘽妗嗘帶浠?br>銆銆瀵硅瘽妗嗘帶浠剁殑璇硶褰㈠紡涓猴細(xì)
controlName text, IDnumber, Left, Top, Width, Height, style, extended-style
DEFPUSHBUTTON "Cancel" IDCANCEL, 8, 67, 32, 12
LTEXT "Static Text Left aligned" 201, 5, 21, 196, 24
CTEXT "Static Text Centered" 202, 18, 12, 170, 8
ICON "Icon" -1, 1,1,0,0
EDITTEXT 300, 9, 47, 180, 50, ES_MULTILINE, WS_EX_CLIENTEDGE
CHECKBOX "Check Box", 100, 10, 60, 69, 8
AUTOCHECKBOX "Auto CheckBox", 101, 140, 60, 61, 8
RADIOBUTTON "radio", 400, 8, 32, 64, 8
AUTORADIOBUTTON "needs WS_GROUP", 401, 8, 42, 64, 8, WS_GROUP
GROUPBOX "GroupBox", -1, 4,22,150,42
銆銆
浣犲彲浠ラ氳繃鏀劇疆鎺т歡綾誨瀷鍚嶅瓧鍙傛暟鍒涘緩澶ч儴鍒?nbsp;Windows 鎺т歡錛屽弬瑙佷笅鏂囩殑“鍦ㄥ璇濇涓寘鍚父瑙勬帶浠?#8221;閮ㄥ垎銆?br>
銆銆浣跨敤 DialogBox(hInstance, lpTemplate, hWndParent, lpDialogFunc);
鍙?
瑙佺▼搴忎唬鐮佺殑“procedure DoDialog”錛屼綘浼?xì)鍙戠幇瀹冭畡〗璇濇鋴社敤鐨勪竴浜涘彉閲忥紝鐒跺悗璋冪敤 DialogBox( )銆?
lpTemplate 涓鴻祫婧愬悕縐扮殑 PChar 綾誨瀷錛岀埗紿椾綋涓?nbsp;hForm1 錛宭pDialogFunc 璁劇疆涓哄璇濇鍑芥暟鐨勫湴鍧錛堝弬瑙佸府鍔╀腑
鐨?nbsp;DialogProc 閮ㄥ垎錛夈傝繖涓?nbsp;DialogProc 綾諱技浜?nbsp;WndProc 錛岀敤浜庤幏鍙栧璇濇娑堟伅錛屽弬瑙佷唬鐮佷腑
鐨?nbsp;DialogProc 銆?nbsp;WM_INITDIALOG 娑堟伅琚彂閫佸悗瀵硅瘽妗嗗氨琚垱寤轟簡(jiǎn)錛屽洜姝や綘鍙互鍦ㄨ繖閲岃緗帶浠躲傜敱浜庡璇濇鏄粠妯℃澘鍒涘緩鐨勶紝鎵浠?
鎺т歡鐨勫彞鏌勮繕?shù)笉鐭ラ亾锛寴q欐牱鍙互鐢?nbsp;ID 鍙風(fēng)爜璁塊棶瀹冧滑銆傞氳繃 GetDlgItem(hWnd,IDNUMBER) 鑾峰彇鎺т歡鐨勫彞鏌勶紝浣犲彲浠ヤ嬌鐢ㄥぇ閲忔帶浠?
鐨?nbsp;SendMessage 鎴栬呯姸鎬佸彉鍖栵紙Enable( ) 絳夛級(jí)銆傛湁鍑犱釜鐗瑰畾鐨勫璇濇鍑芥暟鏍規(guī)嵁 ID 緙栧彿鐩存帴浣跨敤
錛圫endDlgItemMessage銆?nbsp;CheckDlgButton銆?nbsp;SetDlgItemText銆?nbsp;GetDlgItemText錛夈?
鍦?nbsp;WM_COMMAND 娑堟伅涓紝LOWORD(wParam) 灝辨槸鎺т歡鐨?nbsp;ID 鍙風(fēng)爜銆?br>
鏈夊緟瀹屽杽……
瀵逛簬鏈枃鐨勫璇濇婕旂ず紼嬪簭錛屼嬌鐢ㄧ殑“Dlg1.rc”婧愭枃浠朵唬鐮佸涓嬶細(xì)
Z1 ICON Done2.ICO
Z2 ICON Flop.ICO
First DIALOG 12, 10, 206, 86
STYLE WS_POPUP | WS_DLGFRAME | WS_CAPTION | WS_SYSMENU
CAPTION " A Dialog Form"
FONT 10, "MS Sans Serif"
{
CTEXT "Dialogs are really NON Delphi" 200, 18, 1, 170, 10
ICON "Z1" -1, 1,1,0,0
ICON "Z2" -1, 189,1,0,0
CTEXT "Checkbox was Unchecked" 201, 18, 12, 170, 8
LTEXT " " 202, 5, 21, 196, 24
EDITTEXT 300, 14, 47, 100, 10
AUTOCHECKBOX "Show MessageBox", 100, 10, 60, 69, 8
AUTOCHECKBOX "Check me", 101, 140, 60, 61, 8
DEFPUSHBUTTON "OK" IDOK, 48, 71, 32, 12, WS_GROUP
PUSHBUTTON "set Edit Text" 401, 108, 71, 44, 12,
}
銆銆浣跨敤 brcc32.exe 緙栬瘧 Dlg1.rc 鏂囦歡錛屾垜涓嶇煡閬撲負(fù)浠涔堝彲浠ヤ笉浣跨敤“ #include <windows.h>”錛屼絾鏄‘瀹為氳繃緙栬瘧浜?jiǎn)锛堢敓鎴?nbsp;Dlg1.RES 鏂囦歡錛夈?br>
瀵硅瘽妗嗙▼搴?br>銆銆鏈▼搴忔紨紺轟簡(jiǎn)鍒涘緩涓庝嬌鐢?nbsp;Windows 瀵硅瘽妗嗙殑鏂規(guī)硶錛屼綘闇瑕佷嬌鐢ㄤ笂闈唬鐮佺紪璇戝緱鍒扮殑 Dlg1.RES 鏂囦歡銆?nbsp;
program Dialogs;
uses
Windows, Messages, smallUtils;
{$R *.RES}
{$R Dlg1.RES}
var
wClass: TWndClass;
hForm1, hExitBut, hDlgBut, hCheckCB, hEdit1,
hLabel1, Font1, hLabel2, hLabel3: THandle;
mainMsg: TMSG;
Rect1: TRect;
DlgText, DlgEditText: String;
DlgChk, Dlg2Chk: Boolean;
function DialogProc(hWnd,Msg,wParam,lParam:Longint):Boolean; stdcall;
{榪欓噷澶勭悊瀵硅瘽妗嗘秷鎭傛湁浜涙秷鎭 WndProc 娑堟伅錛圵M_COMMAND銆乄M_CLOSE錛夊垪
鍦ㄨ繖閲岋紝鏈変簺娑堟伅錛圵M_INITDIALOG錛夋病鏈夊垪鍑恒傚湪瀵硅瘽妗?nbsp;Proc 緇忓父浣跨敤
DlgItem ID 鑰屼笉鏄?nbsp;hWnd }
var
OKrect:TRect;
begin
Result := False;
case Msg of
WM_INITDIALOG: begin
{WM_INITDIALOG 鏄緗綘鐨?nbsp;Dlg Items 灞炴х殑鍦版柟錛屾湁浜涚壒瀹氱殑
DlgItem 鍑芥暟錛圫endDlgItemMessage銆丼etDlgItemText錛?br> 瀵規(guī)姣旇緝鏈夌敤銆倉(cāng)
DlgEditText := '';
SendMessage(hWnd, WM_SETICON, 1, LoadIcon(hInstance,'Z1'));
{瀵硅瘽妗嗛粯璁や嬌鐢ㄥ浘鏍囷紝浣犻渶瑕佽緗浘鏍噠
SendDlgItemMessage(hWnd,200,WM_SETFONT,Font1, 0);
{SendDlgItemMessage 浣跨敤 ID 緙栧彿浠f浛 hWnd}
CheckDlgButton(hWnd,100,BST_CHECKED);
if SendMessage(hCheckCB,BM_GETCHECK,0,0) = BST_CHECKED then
begin
{浣犲彲浠ヤ粠涓葷獥浣撹幏鍙栦俊鎭潵璁劇疆瀵硅瘽妗唥
SetWindowText(GetDlgItem(hWnd,201),'澶氶夋寜閽鍕鵑?);
{榪欓噷鍙互浣跨敤 SetWindowText錛屼絾鏄竴鏍峰彲浠ヤ嬌鐢?nbsp;SetDlgItemText銆?br> SetDlgItemText(hWnd,201,'媯(gè)鏌ユ琚嬀閫?);}
EnableWindow(GetDlgItem(hWnd,101),False);
{澶ч儴鍒嗘敼鍙樼獥鍙g殑鍑芥暟瀵逛簬瀵硅瘽妗嗕竴鏍鋒湁鏁坿
end;
{SetWindowText(GetDlgItem(hWnd,202),PChar(DlgText));}
SetDlgItemText(hWnd,202,PChar(DlgText));
SetDlgItemText(hWnd,300,PChar(GetWindowStr(hEdit1)));
GetWindowRect(GetDlgItem(hWnd,IDOK),OKrect);
SetCursorPos(OKrect.Left+10,OKrect.Top+10);
end;
WM_COMMAND: begin
{鍜?nbsp;MessageProc 鐨?nbsp;WM_COMMAND 娑堟伅涓嶄竴鏍鳳紝wParam 涓?nbsp;LParam
鏈変笉鍚岀殑鐢ㄩ斻倉(cāng)
if LOWORD(wParam) = IDOK then
begin
{瀵硅瘽妗嗗湪 LOWORD(wParam) 浣跨敤 DlgItem ID}
if (IsDlgButtonChecked(hWnd,101) = BST_CHECKED)
then Dlg2Chk := True;
if (IsDlgButtonChecked(hWnd,100) = BST_CHECKED) then
begin
MessageBox(hWnd,'瀵硅瘽妗嗕笂澶氶夋寜閽鍕鵑?,
'閫鍑哄璇濇',MB_OK or MB_ICONQUESTION);
DlgChk := True;
end;
DlgEditText := GetWindowStr(GetDlgItem(hWnd,300));
EndDialog(hWnd,1);
Result := True;
end
else if LOWORD(wParam) = 401
then SetDlgItemText(hWnd,300, '鏂扮殑緙栬緫妗嗘枃鏈?)
else if LOWORD(wParam) = 101
then MessageBox(hWnd,'瀵硅瘽妗嗕笂澶氶夋寜閽鍗曞嚮',
'鍗曞嚮瀹?,MB_OK or MB_ICONQUESTION);
end;
WM_CLOSE: begin
{鍜?nbsp;MessageProc 涓嶄竴鏍鳳紝浣犻渶瑕佷嬌鐢?nbsp;EndDialog 閫鍑轟竴涓璇濇}
EndDialog(hWnd,1);
Result := True;
end;
end;
end;
procedure DoDialog;
var
Dsize: TdriveSize;
begin
if hLabel3 <> 0 then
begin
DestroyWindow(hLabel3);
while PeekMessage(mainMsg, 0, 0, 0, PM_REMOVE)
do DispatchMessage(mainMsg);
hLabel3 := 0;
end;
Dsize := DiskSpace('C:\');
DlgText := 'C 鐩樻誨閲忎負(fù) '+Int2Str(Dsize.TotalS)+
' 瀛楄妭 - 鍙敤絀洪棿涓?nbsp; '+ Int2Str(Dsize.FreeS);
{DlgText 琚敤浜庡璇濇鐨勯潤(rùn)鎬佹爣絳炬帶浠訛紝浣犲簲璇ュ湪璋冪敤 DialogBox( ) 鍓嶈緗ソ瀵硅瘽妗?br> 闇瑕佺殑鎵鏈夌殑鍙橀噺銆倉(cāng)
DialogBox(hInstance, 'First', hForm1, @DialogProc);
{DialogBox 灝嗘牴鎹祫婧?nbsp;DIALOG 鐨?nbsp;'First' 鍒涘緩涓涓ā寮忓璇濇錛屽畠浠?nbsp;hForm1 浣滀負(fù)
鐖剁獥浣擄紝浠?nbsp;DialogProc 浣滀負(fù) WndProc (MessageProc)}
{鍙互浠庡璇濇鑾峰彇榪斿洖鍊紏
if DlgChk then
MessageBox(hForm1,'榪欓噷 DlgChk = True',
'瀵硅瘽妗嗚繑鍥炲?,MB_OK or MB_ICONQUESTION);
if Dlg2Chk then
begin
hLabel3 := CreateWindow('Static', '"Check me" 澶氶夋寜閽鍕鵑?,
WS_VISIBLE or WS_CHILD or SS_CENTER,6,200,370,29,hForm1,0,hInstance,nil);
SendMessage(hLabel3, WM_SETFONT, Font1,0);
end;
SetWindowText(hLabel2,@DlgEditText[1]);
DlgChk := False;
Dlg2Chk := False;
end;
function MessageProc(hWnd,Msg,wParam,lParam:Integer):Integer; stdcall;
begin
case Msg of
WM_COMMAND: if lParam = abs(hExitBut)
then PostMessage(hForm1,WM_CLOSE,0,0)
else if (LParam = abs(hDlgBut))
then DoDialog;
WM_DESTROY: PostQuitMessage(0);
end; // case 璇彞緇撴潫
Result := DefWindowProc(hWnd,Msg,wParam,lParam);
end;
begin // 涓葷▼搴忓紑濮?nbsp;//
DlgChk := False;
Dlg2Chk := False;
hLabel3 := 0;
Font1 := CreateFont(-16,0,0,0,FW_BOLD,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH or FF_SWISS,'Arial');
wClass.hInstance := hInstance;
with wClass do
begin
style := CS_PARENTDC or CS_BYTEALIGNWINDOW;
hIcon := LoadIcon(hInstance,'MAINICON');
lpfnWndProc := @MessageProc;
hbrBackground:= COLOR_BTNFACE+1;
lpszClassName:= 'Form Class';
hCursor := LoadCursor(0,IDC_ARROW);
end;
RegisterClass(wClass);
SetRect(Rect1,0,0,430,300);
if not AdjustWindowRect(Rect1,WS_CAPTION or WS_MINIMIZEBOX or WS_SYSMENU,False)
then SetRect(Rect1,0,0,438,328);
hForm1 := CreateWindow(wClass.lpszClassName, '瀵硅瘽妗嗘紨紺虹▼搴?,
WS_CAPTION or WS_MINIMIZEBOX or WS_SYSMENU or WS_VISIBLE,
(GetSystemMetrics(SM_CXSCREEN) div 2)-200,
(GetSystemMetrics(SM_CYSCREEN) div 2)-160,
Rect1.Right-Rect1.Left, Rect1.Bottom-Rect1.Top,
0, 0, hInstance, nil);
hLabel1 := CreateWindow('Static', '瀵硅瘽妗嗘紨紺?,
WS_VISIBLE or WS_CHILD or SS_CENTER,8,8,388,22,hForm1,0,hInstance,nil);
SendMessage(hLabel1,WM_SETFONT,Font1,0);
hLabel2 := CreateWindow('Static',
'鍦ㄤ笅闈㈣緭鍏ヤ綘鎯蟲(chóng)斁緗埌瀵硅瘽妗嗙殑鏂囧瓧'#10'瀵硅瘽妗嗙紪杈戞濡傛暟鐨勬枃瀛楀皢鍦ㄦ鏄劇ず',
WS_VISIBLE or WS_CHILD or SS_LEFT,10,38,290,28,hForm1,0,hInstance,nil);
SendMessage(hLabel2,WM_SETFONT,GetStockObject(ANSI_VAR_FONT),0);
hExitBut := CreateWindow('Button','閫 鍑?,
WS_VISIBLE or WS_CHILD or BS_PUSHBUTTON or BS_TEXT,
350,270,74,24, hForm1,0, hInstance,nil);
hEdit1 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','榪欓噷杈撳叆鐨勬枃瀛楀皢鏄劇ず鍦ㄥ璇濇涓?,
WS_VISIBLE or WS_CHILD or ES_LEFT or ES_AUTOHSCROLL,
16,78,410,21,hForm1,0,hInstance,nil);
SendMessage(hEdit1,WM_SETFONT,GetStockObject(ANSI_VAR_FONT),0);
hDlgBut := CreateWindow('Button','鏄劇ず瀵硅瘽妗?,
WS_VISIBLE or WS_CHILD or BS_PUSHBUTTON or BS_TEXT,
30,160,144,24, hForm1,0, hInstance,nil);
SendMessage(hDlgBut, WM_SETFONT, GetStockObject(ANSI_VAR_FONT),0);
hCheckCB := CreateWindow('Button','瀵硅瘽妗嗗閫夋嫻嬫寜閽?,
WS_CHILD or BS_AUTOCHECKBOX or WS_VISIBLE,
20,130,190,24, hForm1,0,hInstance,nil);
SendMessage(hCheckCB, WM_SETFONT, GetStockObject(ANSI_VAR_FONT),0);
while GetMessage(mainMsg,0,0,0) do
begin
TranslateMessage(mainMsg);
DispatchMessage(mainMsg);
end;
DeleteObject(Font1);
DlgText := '';
DlgEditText := '';
end.
鍦ㄥ璇濇涓寘鍚父瑙勬帶浠?br>銆銆涓轟簡(jiǎn)鍦ㄥ璇濇閲屽垱寤洪瀹氫箟鐨勬帶浠剁被錛屽彲浠ヤ嬌鐢ㄥ涓嬬殑涓鑸娉曪紝鍙傛暟涓猴細(xì)
ClassName text, IDnumber, x, y, width, height , style , extended-style
X 鍜?nbsp;width 鏄按騫蟲(chóng)柟鍚戝崟浣嶏紝鏄璇濇鍩烘湰瀹藉害鍗曚綅鐨?nbsp;1/4 錛孻 鍜?nbsp;height 鏄珫鐩存柟鍚戝崟浣嶏紝鏄璇濇鍩烘湰楂樺害鍗曚綅鐨?nbsp;1
/8 銆傚綋鍓嶅璇濇鍩烘湰鍗曚綅鏄綆楁満浠庡綋鍓嶇郴緇熷瓧浣撶殑楂樺害鍜屽搴﹀緱鍒扮殑錛孏etDialogBaseUnits( ) 鍑芥暟鍙互榪斿洖瀵硅瘽妗嗗熀鏈崟浣嶇殑瀵瑰簲
鍍忕礌鍊箋?br>
ControlName - 棰勫畾涔夌殑鎺т歡鐨勭被鍚嶏紝姣斿 BUTTON銆?nbsp;COMBOBOX銆?nbsp;EDIT銆?nbsp;LISTBOX銆?nbsp;SCROLLBAR銆?nbsp;STATIC 絳夈?br>
text - 鎸?
瀹氭帶浠朵笂鏄劇ず鐨勬枃鏈傛枃鏈綅緗湪鎺т歡鎸囧畾灝哄涔嬪唴鎴栬呮帴榪戞帶浠躲傝繖涓弬鏁版槸鏈夊弻寮曞彿錛?錛夋嫭璧鋒潵鐨?nbsp;0 鍒板涓瓧絎︺傚瓧絎︿覆鑷姩浠ラ浂緇撴潫騫跺湪璧勬簮鏂囦歡榪斿洖
緇撴灉涓漿鎹㈡垚 Unicode 瀛楃銆傞粯璁ゆ儏鍐典笅錛屽弻寮曞彿鎷搗鐨勫瓧絎︽槸 ANSI 瀛楃錛屼氦鎹㈢爜欏哄簭琚涓烘槸鎸変綅浜ゆ崲鐮侀『搴忋傚鏋滃瓧絎︿覆鍔犱笂 L 鍓嶇紑錛?
瀛楃涓茶璁や負(fù)鏄瀛楃緇勬垚錛屼氦鎹㈢爜欏哄簭琚涓烘槸涓や綅浜ゆ崲鐮侊紝榪欏氨鏄?nbsp;Unicode 瀛楃銆傚鏋滃弻寮曞彿鏈韓鍦ㄦ枃鏈唴錛岄偅涔堥渶瑕佽繛緇嬌鐢ㄥ弻寮曞彿涓ゆ銆?
And 絎﹀彿錛?amp;錛夋斁鍦ㄦ枃鏈腑琛ㄧず鍚庨潰璺熺潃鐨勫瓧絎︽槸鎺т歡鐨勫姪璁扮錛堝姞閫熷瓧絎︼級(jí)錛屽綋鎺т歡鏄劇ず鐨勬椂鍊欙紝& 涓嶄細(xì)鍑虹幇錛屽悗闈㈢殑瀛楃浼?xì)鑷姩鍔犱笂涓?
鍒掔嚎鏄劇ず錛岀敤鎴峰彲浠ラ氳繃鎸変笅涓嬪垝綰垮姪璁扮鏉ラ夋嫨榪欎釜鎺т歡銆備負(fù)浜?jiǎn)鍦ㄥ瓧绗︿覆涓娇鐢?nbsp;& 瀛楃錛屼綘闇瑕佽繛緇袱嬈′嬌鐢紙&&錛夈?br>
IDnumber - 鎸囧畾鎺т歡鏍囪瘑銆傝繖涓間負(fù) Word 綾誨瀷錛屼粙浜?nbsp;0 鍒?nbsp;65,535 涔嬮棿銆?br>
x - 緇欏嚭鎺т歡鍦ㄥ璇濇瀹㈡埛鍖哄煙宸﹁竟璺濓紝榪欎釜鍊間負(fù) Word 綾誨瀷錛屼粙浜?nbsp;0 鍒?nbsp;65,535 涔嬮棿銆傝繖涓潗鏍囪醬鍦ㄥ璇濇鐨勫鎴峰尯鍩熺殑宸﹁竟緙樹(shù)負(fù) 0 瀵硅瘽妗嗗崟浣嶃?br>
y - 緇欏嚭鎺т歡鍦ㄥ璇濇瀹㈡埛鍖哄煙涓婅竟璺濓紝榪欎釜鍊間負(fù) Word 綾誨瀷錛屼粙浜?nbsp;0 鍒?nbsp;65,535 涔嬮棿銆傝繖涓潗鏍囪醬鍦ㄥ璇濇鐨勫鎴峰尯鍩熺殑涓婅竟緙樹(shù)負(fù) 0 瀵硅瘽妗嗗崟浣嶃?br>
width - 鎸?
瀹氭帶浠跺搴︼紝榪欎釜鍊間負(fù) Word 綾誨瀷錛屼粙浜?nbsp;1 鍒?nbsp;65,535 涔嬮棿銆傚搴﹀崟浣嶄負(fù) 1/4 瀛楃銆?
Specifies the width of the control. This value must be a Word value in the range 1 through 65,535. The width is in 1/4-character units.
height - 鎸囧畾鎺т歡楂樺害錛岃繖涓間負(fù) Word 綾誨瀷錛屼粙浜?nbsp;1 鍒?nbsp;65,535 涔嬮棿銆傚搴﹀崟浣嶄負(fù) 1/8 瀛楃銆?nbsp;
style - 鎸囧畾鎺т歡鐨勯鏍箋傚埄鐢ㄩ昏緫鎴栨搷浣滐紙 | 錛夌粍鍚堝涓鏍箋?nbsp;
extended-style - 鎸囧畾鎵╁睍椋庢牸錛圵S_EX_xxx錛夈備綘蹇呴』緇欏畾涓縐嶉鏍間互渚夸嬌鐢ㄦ墿灞曢鏍?img src ="http://m.shnenglu.com/michaelgao/aggbug/63200.html" width = "1" height = "1" />
Debug 鐗堟湰錛?br> /MDd /MLd 鎴?/MTd 浣跨敤 Debug runtime library(璋冭瘯鐗堟湰鐨勮繍琛屾椂鍒誨嚱鏁板簱)
/Od 鍏抽棴浼樺寲寮鍏?br> /D "_DEBUG" 鐩稿綋浜?#define _DEBUG,鎵撳紑緙栬瘧璋冭瘯浠g爜寮鍏?涓昏閽堝
assert鍑芥暟)
/ZI 鍒涘緩 Edit and continue(緙栬緫緇х畫(huà))鏁版嵁搴擄紝榪欐牱鍦ㄨ皟璇曡繃
紼嬩腑濡傛灉淇敼浜?jiǎn)婧愪唬鐮佷笉闇閲嶆柊緙栬瘧
/GZ 鍙互甯姪鎹曡幏鍐呭瓨閿欒
/Gm 鎵撳紑鏈灝忓寲閲嶉摼鎺ュ紑鍏籌紝鍑忓皯閾炬帴鏃墮棿
Release 鐗堟湰錛?nbsp;
/MD /ML 鎴?/MT 浣跨敤鍙戝竷鐗堟湰鐨勮繍琛屾椂鍒誨嚱鏁板簱
/O1 鎴?/O2 浼樺寲寮鍏籌紝浣跨▼搴忔渶灝忔垨鏈蹇?br> /D "NDEBUG" 鍏抽棴鏉′歡緙栬瘧璋冭瘯浠g爜寮鍏?鍗充笉緙栬瘧assert鍑芥暟)
/GF 鍚堝茍閲嶅鐨勫瓧絎︿覆錛屽茍灝嗗瓧絎︿覆甯擱噺鏀懼埌鍙鍐呭瓨錛岄槻姝?br> 琚慨鏀?/p>
浜屻佸摢浜涙儏鍐典笅 Release 鐗堜細(xì)鍑洪敊
1. Runtime Library錛氶摼鎺ュ摢縐嶈繍琛屾椂鍒誨嚱鏁板簱閫氬父鍙紼嬪簭鐨勬ц兘浜х敓褰卞搷銆傝皟璇曠増鏈殑 Runtime Library 鍖呭惈浜?jiǎn)璋冭瘯淇℃伅锛岒q墮噰鐢ㄤ簡(jiǎn)涓浜涗繚鎶ゆ満鍒朵互甯姪鍙戠幇閿欒錛屽洜姝ゆц兘涓嶅鍙戝竷鐗堟湰銆傜紪璇戝櫒鎻愪緵鐨?Runtime Library 閫氬父寰堢ǔ瀹氾紝涓嶄細(xì)閫犳垚 Release 鐗堥敊璇紱鍊掓槸鐢變簬 Debug 鐨?Runtime Library 鍔犲己浜?jiǎn)瀵归敊璇殑妫嫻嬶紝濡傚爢鍐呭瓨鍒嗛厤錛屾湁鏃朵細(xì)鍑虹幇 Debug 鏈夐敊浣?Release 姝e父鐨勭幇璞°傚簲褰撴寚鍑虹殑鏄紝濡傛灉 Debug 鏈夐敊錛屽嵆浣?Release 姝e父錛岀▼搴忚偗瀹氭槸鏈?Bug 鐨勶紝鍙笉榪囧彲鑳芥槸 Release 鐗堢殑鏌愭榪愯娌℃湁琛ㄧ幇鍑烘潵鑰屽凡銆?br>
2. 浼樺寲錛氳繖鏄犳垚閿欒鐨勪富瑕佸師鍥狅紝鍥犱負(fù)鍏抽棴浼樺寲鏃舵簮紼嬪簭鍩烘湰涓婃槸鐩存帴緲昏瘧鐨勶紝鑰屾墦寮浼樺寲鍚庣紪璇戝櫒浼?xì)浣滃囖Z竴緋誨垪鍋囪銆傝繖綾婚敊璇富瑕佹湁浠ヤ笅鍑犵錛?br>
(1) 甯ф寚閽?Frame Pointer)鐪佺暐錛堢畝縐?FPO 錛夛細(xì)鍦ㄥ嚱鏁拌皟鐢ㄨ繃紼嬩腑錛屾墍鏈夎皟鐢ㄤ俊鎭紙榪斿洖鍦板潃銆佸弬鏁幫級(jí)浠ュ強(qiáng)鑷姩鍙橀噺閮芥槸鏀懼湪鏍堜腑鐨勩傝嫢鍑芥暟鐨勫0鏄庝笌瀹炵幇涓嶅悓錛堝弬鏁般佽繑鍥炲箋佽皟鐢ㄦ柟寮忥級(jí)錛屽氨浼?xì)漶旂敓閿欒鈥斺斺斺斾絾 Debug 鏂瑰紡涓嬶紝鏍堢殑璁塊棶閫氳繃 EBP 瀵勫瓨鍣ㄤ繚瀛樼殑鍦板潃瀹炵幇錛屽鏋滄病鏈夊彂鐢熸暟緇勮秺鐣屼箣綾葷殑閿欒錛堟垨鏄秺鐣?#8220;涓嶅”錛夛紝鍑芥暟閫氬父鑳芥甯告墽琛岋紱Release 鏂瑰紡涓嬶紝浼樺寲浼?xì)鐪佺?EBP 鏍堝熀鍧鎸囬拡錛岃繖鏍烽氳繃涓涓叏灞鎸囬拡璁塊棶鏍堝氨浼?xì)閫犳垚榪斿洖鍦板潃閿欒鏄▼搴忓穿婧冦侰++ 鐨勫己綾誨瀷鐗規(guī)ц兘媯(gè)鏌ュ嚭澶у鏁拌繖鏍風(fēng)殑閿欒錛屼絾濡傛灉鐢ㄤ簡(jiǎn)寮哄埗綾誨瀷杞崲錛屽氨涓嶈浜?jiǎn)銆備綘鍙互鍦?Release 鐗堟湰涓己鍒跺姞鍏?/Oy- 緙栬瘧閫夐」鏉ュ叧鎺夊撫鎸囬拡鐪佺暐錛屼互紜畾鏄惁姝ょ被閿欒銆傛綾婚敊璇氬父鏈夛細(xì)
鈼?MFC 娑堟伅鍝嶅簲鍑芥暟涔﹀啓閿欒銆傛紜殑搴斾負(fù)
afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam);
ON_MESSAGE 瀹忓寘鍚己鍒剁被鍨嬭漿鎹€傞槻姝㈣繖縐嶉敊璇殑鏂規(guī)硶涔嬩竴鏄噸瀹氫箟 ON_MESSAGE 瀹忥紝鎶婁笅鍒椾唬鐮佸姞鍒?stdafx.h 涓紙鍦?include "afxwin.h"涔嬪悗錛?鍑芥暟鍘熷艦閿欒鏃剁紪璇戜細(xì)鎶ラ敊
#undef ON_MESSAGE
#define ON_MESSAGE(message, memberFxn) \
{ message, 0, 0, 0, AfxSig_lwl, \
(AFX_PMSG)(AFX_PMSGW)(static_cast< LRESULT (AFX_MSG_CALL \
CWnd::*)(WPARAM, LPARAM) > (&memberFxn) },
(2) volatile 鍨嬪彉閲忥細(xì)volatile 鍛婅瘔緙栬瘧鍣ㄨ鍙橀噺鍙兘琚▼搴忎箣澶栫殑鏈煡鏂瑰紡淇敼錛堝緋葷粺銆佸叾浠栬繘紼嬪拰綰跨▼錛夈備紭鍖栫▼搴忎負(fù)浜?jiǎn)鋴山E嬪簭鎬ц兘鎻愰珮錛屽父鎶婁竴浜涘彉閲忔斁鍦ㄥ瘎瀛樺櫒涓紙綾諱技浜?register 鍏抽敭瀛楋級(jí)錛岃屽叾浠栬繘紼嬪彧鑳藉璇ュ彉閲忔墍鍦ㄧ殑鍐呭瓨榪涜淇敼錛岃屽瘎瀛樺櫒涓殑鍊兼病鍙樸傚鏋滀綘鐨勭▼搴忔槸澶氱嚎紼嬬殑錛屾垨鑰呬綘鍙戠幇鏌愪釜鍙橀噺鐨勫間笌棰勬湡鐨勪笉絎﹁屼綘紜俊宸叉紜殑璁劇疆浜?jiǎn)锛屽垯寰堝彲鑳介亣鍒皹q欐牱鐨勯棶棰樸傝繖縐嶉敊璇湁鏃朵細(xì)琛ㄧ幇涓虹▼搴忓湪鏈蹇紭鍖栧嚭閿欒屾渶灝忎紭鍖栨甯搞傛妸浣犺涓哄彲鐤戠殑鍙橀噺鍔犱笂 volatile 璇曡瘯銆?br>
(3) 鍙橀噺浼樺寲錛氫紭鍖栫▼搴忎細(xì)鏍規(guī)嵁鍙橀噺鐨勪嬌鐢ㄦ儏鍐典紭鍖栧彉閲忋備緥濡傦紝鍑芥暟涓湁涓涓湭琚嬌鐢ㄧ殑鍙橀噺錛屽湪 Debug 鐗堜腑瀹冩湁鍙兘鎺╃洊涓涓暟緇勮秺鐣岋紝鑰屽湪 Release 鐗堜腑錛岃繖涓彉閲忓緢鍙兘琚紭鍖栬皟錛屾鏃舵暟緇勮秺鐣屼細(xì)鐮村潖鏍堜腑鏈夌敤鐨勬暟鎹傚綋鐒?dòng)灱屽疄闄呯殑鎯呭喌浼?xì)姣旇繖澶嶆潅寰楀銆備笌姝ゆ湁鍏崇殑閿欒鏈夛細(xì)
鈼?闈炴硶璁塊棶錛屽寘鎷暟緇勮秺鐣屻佹寚閽堥敊璇瓑銆備緥濡?br> void fn(void)
{
int i;
i = 1;
int a[4];
{
int j;
j = 1;
}
a[-1] = 1;//褰撶劧閿欒涓嶄細(xì)榪欎箞鏄庢樉錛屼緥濡備笅鏍囨槸鍙橀噺
a[4] = 1;
}
j 铏界劧鍦ㄦ暟緇勮秺鐣屾椂宸插嚭浜?jiǎn)浣滅敤鍩熷Q屼絾鍏剁┖闂村茍鏈敹鍥烇紝鍥犺?i 鍜?j 灝變細(xì)鎺╃洊瓚婄晫銆傝?Release 鐗堢敱浜?i銆乯 騫舵湭鍏跺緢澶т綔鐢ㄥ彲鑳戒細(xì)琚紭鍖栨帀錛屼粠鑰屼嬌鏍堣鐮村潖銆?/p>
C Runtime Lib 鏂█ _ASSERT( booleanExpression );
_ASSERTE( booleanExpression );
MFC 鏂█ ASSERT( booleanExpression );
VERIFY( booleanExpression );
ASSERT_VALID( pObject );
ASSERT_KINDOF( classname, pobject );
ATL 鏂█ ATLASSERT( booleanExpression );
姝ゅ錛孴RACE() 瀹忕殑緙栬瘧涔熷彈 _DEBUG 鎺у埗銆?/p>
(3) 鍑芥暟榪斿洖鍓嶆鏌ユ爤鎸囬拡錛岀‘璁ゆ湭琚慨鏀廣傦紙闃叉瓚婄晫璁塊棶鍜屽師褰笉鍖歸厤錛屼笌絎簩欏瑰悎鍦ㄤ竴璧峰彲澶ц嚧妯℃嫙甯ф寚閽堢渷鐣?FPO 錛?br>
閫氬父 /GZ 閫夐」浼?xì)閫犳垚 Debug 鐗堝嚭閿欒?Release 鐗堟甯哥殑鐜拌薄錛屽洜涓?Release 鐗堜腑鏈垵濮嬪寲鐨勫彉閲忔槸闅忔満鐨勶紝榪欐湁鍙兘浣挎寚閽堟寚鍚戜竴涓湁鏁堝湴鍧鑰屾帺鐩栦簡(jiǎn)闈炴硶璁塊棶銆?br>
闄ゆ涔嬪錛?Gm /GF 絳夐夐」閫犳垚閿欒鐨勬儏鍐墊瘮杈冨皯錛岃屼笖浠栦滑鐨勬晥鏋滄樉鑰屾槗瑙侊紝姣旇緝瀹規(guī)槗鍙戠幇銆?/p>
1. 鍓嶉潰宸茬粡鎻愯繃錛孌ebug 鍜?Release 鍙槸涓緇勭紪璇戦夐」鐨勫樊鍒紝瀹為檯涓婂茍娌℃湁浠涔堝畾涔夎兘鍖哄垎浜岃呫傛垜浠彲浠ヤ慨鏀?Release 鐗堢殑緙栬瘧閫夐」鏉ョ緝?yōu)畯閿欒鑼冨洿銆傚涓婃墍榪幫紝鍙互鎶?Release 鐨勯夐」閫愪釜鏀逛負(fù)涓庝箣鐩稿鐨?Debug 閫夐」錛屽 /MD 鏀逛負(fù) /MDd銆?O1 鏀逛負(fù) /Od錛屾垨榪愯鏃墮棿浼樺寲鏀逛負(fù)紼嬪簭澶у皬浼樺寲銆傛敞鎰忥紝涓嬈″彧鏀逛竴涓夐」錛岀湅鏀瑰摢涓夐」鏃墮敊璇秷澶憋紝鍐嶅搴旇閫夐」鐩稿叧鐨勯敊璇紝閽堝鎬у湴鏌ユ壘銆傝繖浜涢夐」鍦?Project\Settings... 涓兘鍙互鐩存帴閫氳繃鍒楄〃閫夊彇錛岄氬父涓嶈鎵嬪姩淇敼銆傜敱浜庝互涓婄殑鍒嗘瀽宸茬浉褰撳叏闈紝榪欎釜鏂規(guī)硶鏄渶鏈夋晥鐨勩?/p>
3. 鍦?Debug 鐗堜腑浣跨敤 /W4 璀﹀憡綰у埆錛岃繖鏍峰彲浠ヤ粠緙栬瘧鍣ㄨ幏寰楁渶澶ч檺搴︾殑閿欒淇℃伅錛屾瘮濡?if( i =0 )灝變細(xì)寮曡搗 /W4 璀﹀憡銆備笉瑕佸拷鐣ヨ繖浜涜鍛婏紝閫氬父榪欐槸浣犵▼搴忎腑鐨?Bug 寮曡搗鐨勩備絾鏈夋椂 /W4 浼?xì)甯︽潵寰堝鍐椾綑淇℃伅锛屽?鏈嬌鐢ㄧ殑鍑芥暟鍙傛暟 璀﹀憡錛岃屽緢澶氭秷鎭鐞嗗嚱鏁伴兘浼?xì)蹇界暐鏌愪簺鍙傛暟銆傛垜浠彲浠ョ敤
#progma warning(disable: 4702) //紱佹
//...
#progma warning(default: 4702) //閲嶆柊鍏佽
鏉ユ殏鏃剁姝㈡煇涓鍛婏紝鎴栦嬌鐢?br> #progma warning(push, 3) //璁劇疆璀﹀憡綰у埆涓?/W3
//...
#progma warning(pop) //閲嶈涓?/W4
鏉ユ殏鏃舵敼鍙樿鍛婄駭鍒紝鏈夋椂浣犲彲浠ュ彧鍦ㄨ涓哄彲鐤戠殑閭d竴閮ㄥ垎浠g爜浣跨敤 /W4銆?/p>
4.浣犱篃鍙互鍍?Debug 涓鏍瘋皟璇曚綘鐨?Release 鐗堬紝鍙鍔犲叆璋冭瘯絎﹀彿銆傚湪 Project/Settings... 涓紝閫変腑 Settings for "Win32 Release"錛岄変腑 C/C++ 鏍囩錛孋ategory 閫?General錛孌ebug Info 閫?Program Database銆傚啀鍦?Link 鏍囩 Project options 鏈鍚庡姞涓?"/OPT:REF" (寮曞彿涓嶈杈?銆傝繖鏍瘋皟璇曞櫒灝辮兘浣跨敤 pdb 鏂囦歡涓殑璋冭瘯絎﹀彿銆備絾璋冭瘯鏃朵綘浼?xì)鍙戠幇鏂偣寰堥毦璁揪|紝鍙橀噺涔熷緢闅炬壘鍒扳斺旇繖浜涢兘琚紭鍖栬繃浜?jiǎn)銆備笉榪囦護(hù)浜哄簡(jiǎn)騫哥殑鏄紝Call Stack 紿楀彛浠嶇劧宸ヤ綔姝e父錛屽嵆浣垮撫鎸囬拡琚紭鍖栵紝鏍堜俊鎭紙鐗瑰埆鏄繑鍥炲湴鍧錛変粛鐒惰兘鎵懼埌銆傝繖瀵瑰畾浣嶉敊璇緢鏈夊府鍔┿?