锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
---- 鏂規硶涓錛氳皟鐢?/span>CWinApp綾葷殑鎴愬憳鍑芥暟SetDialogBkColor鏉ュ疄鐜般?/span>
---- 鍏朵腑鍑芥暟鐨勭涓涓弬鏁版寚瀹氫簡鑳屾櫙棰滆壊錛岀浜屼釜鍙傛暟鎸囧畾浜?span style="COLOR: red">鏂囨湰棰滆壊銆?/span>
涓嬮潰鐨勪緥瀛愭槸灝嗗簲鐢ㄧ▼搴忓璇濇璁劇疆涓鴻摑鑹茶儗鏅拰綰㈣壊鏂囨湰錛屾楠ゅ涓嬶細
---- 鈶?/span> 鏂板緩涓涓熀浜?/span>Dialog鐨?/span>MFC AppWizard搴旂敤紼嬪簭ExampleDlg銆?/span>
---- 鈶?/span> 鍦?/span>CExampleDlgApp ::InitInstance()涓坊鍔犲涓嬩唬鐮侊細
BOOL CExampleDlgApp: : InitInstance ( )
{
…
CExampleDlgDlg dlg;
m_pMainWnd = &dlg;
//鍏堜簬DoModal()璋冪敤錛屽皢瀵硅瘽妗嗚緗負钃濊壊鑳屾櫙銆佺孩鑹叉枃鏈?/span>
SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));
int nResponse = dlg.DoModal();
…
}
---- 緙栬瘧騫惰繍琛岋紝姝ゆ椂瀵硅瘽妗嗙殑鑳屾櫙鑹插拰鏂囨湰鑹插凡鍙戠敓浜嗘敼鍙樸傚煎緱娉ㄦ剰鐨勬槸錛氬湪璋冪敤DoModal()涔嬪墠蹇呴』鍏堣皟鐢?/span>SetDialogBkColor錛屼笖姝ゆ柟娉曟槸灝嗘敼鍙樺簲鐢ㄧ▼搴忎腑鎵鏈夌殑瀵硅瘽妗嗛鑹詫紝騫朵笉鑳介拡瀵規煇涓涓寚瀹氱殑瀵硅瘽妗嗐?/span>
---- 鏂規硶浜岋細閲嶈澆OnPaint()錛屽嵆WM_PAINT娑堟伅銆傛湁鍏充唬鐮佸涓嬶紙浠ヤ笂渚嬪伐紼嬩負鍑嗭級錛?/span>
void CExampleDlgDlg::OnPaint()
{
if (IsIconic())
…
else
{
CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect,RGB(0,255,0)); //璁劇疆涓虹豢鑹茶儗鏅?/span>
CDialog::OnPaint();
}
---- 鏂規硶涓夛細閲嶈澆OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor)錛屽嵆WM_CTLCOLOR娑堟伅銆?/span>
鍏蜂綋姝ラ濡備笅錛堜互涓婁緥宸ョ▼涓哄噯錛夛細
---- 鈶犲湪CExampleDlgDlg鐨勫ご鏂囦歡涓紝娣誨姞涓CBrush鐨勬垚鍛樺彉閲忥細
class CExampleDlgDlg : public CDialog
{
...
protected:
CBrush m_brush;
...
} ;
---- 鈶″湪OnInitDialog()鍑芥暟涓坊鍔犲涓嬩唬鐮侊細
BOOL CExampleDlgDlg::OnInitDialog()
{
...
// TODO: Add extra initialization here
m_brush.CreateSolidBrush(RGB(0, 255, 0)); // 鐢熸垚涓緇胯壊鍒峰瓙
...
}
---- 鈶㈠埄鐢?/span>ClassWizard閲嶈澆OnCtlColor(…)錛屽嵆WM_CTLCOLOR娑堟伅錛?/span>
HBRUSH CExampleDlgDlg::OnCtlColor
(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
/*
** 榪欓噷涓嶅繀緙栧啓浠諱綍浠g爜錛?/span>
**涓嬭浠g爜瑕佹敞閲婃帀
** HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
*/
return m_brush; //榪斿姞緇胯壊鍒峰瓙
}
---- 鏂規硶鍥涳細榪樻槸閲嶈澆OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor)錛屽嵆WM_CTLCOLOR娑堟伅銆?/span>
鍏蜂綋姝ラ濡備笅錛堜互涓婁緥宸ョ▼涓哄噯錛夛細
---- 姝ラ鈶犮佲憽鍚屼笂鏂規硶涓変腑鐨勬楠も憼銆佲憽銆?/span>
---- 姝ラ鈶㈠埄鐢?/span>ClassWizard閲嶈澆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;
}
---- 緙栬瘧騫惰繍琛屽嵆鍙?/span>
---- 鍏充簬濡備綍鏀瑰彉瀵硅瘽妗嗚儗鏅鑹茬殑闂錛屽彲鑳借繕鏈夊緢澶氱涓嶅悓鏂規硶鍙互瀹炵幇錛岀瑪鑰呭湪榪欎粎涓懼嚭鍥涚甯歌鐨勬柟娉曘傚叾涓柟娉曚笁鐨勭紪紼嬩技涔庢湁鐐逛笉澶鑼冿紝鏂規硶鍥涘垯瑕佹瘮鏂規硶涓夋緇熶簺錛岀瑪鑰呰繖鏍風殑瀵規瘮涓句緥鏄負浜嗘嫇瀹?/span>VC緙栫▼鐖卞ソ鑰呯壒鍒槸鍒濆鑰呯殑緙栫▼鎬濊礬錛?/span>
璧勬簮緗戠粶鏀墮泦 鎰熻阿鍘熷垱鑰?/span>
杞嚜http://blog.sina.com.cn/s/blog_5678943c0100d4po.html
鏈珷鍥炵瓟浜嗗涓嬪嚑涓棶棰橈細
鈼?浠涔堟槸澶氫換鍔℃搷浣滅郴緇燂紵澶氫換鍔℃搷浣滅郴緇熸湁鍝簺綾誨瀷錛熷畠浠湁浣曞尯鍒紵
鈼?涓轟粈涔堣浣跨敤澶氱嚎紼嬪憿錛熶負浠涔堜笉浣跨敤澶氳繘紼嬶紵綰跨▼銆佽繘紼嬶紝瀹冧滑鍒板簳鏄粈涔堟牱鐨勪笢涓滐紵
鈼?澶氱嚎紼嬫槸濡備綍瀹炵幇鐨勶紵綰跨▼鏄浣曞垏鎹㈢殑錛熸晥鐜囨庢牱錛?/span>
鈼?澶氱嚎紼嬭璁℃槸濡傛鐨勮浜猴紝闅鵑亾浠涔堜唬浠蜂篃涓嶇敤浠樺嚭錛熸庢牱鎵嶈兘寰堝ソ鍦拌繘琛屽綰跨▼璁捐鍛紵
鍚堜綔鍨?/span>[cooperative]澶氫換鍔″拰鎶㈠厛寮?/span>[preemptive]澶氫換鍔℃湁浣曚笉鍚岋紵
涓よ呯殑鏈澶у尯鍒槸璋佹潵鎶婃彙CPU鐨勫垎浜?/span>銆傚墠鑰呯敱紼嬪簭鍛樼殑“涓炬鑹ソ”鎵嶅彲鍋氬埌錛屽悗鑰呭垯鐢辨搷浣滅郴緇熷喅瀹氾紝鍙互寮鴻揩搴旂敤紼嬪簭鎶?/span>CPU鍒嗕韓緇欏埆浜恒?/span>
Microsoft Windows鐨勫墠涓変釜鐗堟湰錛?/span>1銆?/span>2銆?/span>3錛夊睘浜庡悎浣滃瀷澶氫換鍔℃搷浣滅郴緇燂紝Windows4.0錛堝嵆Windows錛?/span>95鍚庡潎灞炰簬寮哄厛寮忓浠誨姟鎿嶄綔緋葷粺銆?/span>
璁頒綇錛氫竴涓案榪滄湁鍙嶆槧鐨?/span>UI錛?/span>User Interface錛夋槸寰堥噸瑕佺殑銆?/span>
綰跨▼鍜岃繘紼嬫湁浣曚笉鍚岋紵
浠?/span>Win32鐨勮搴︾湅錛?span style="BACKGROUND: lime; mso-highlight: lime">榪涚▼鎷ユ湁鍐呭瓨鍜岃祫婧愩?/span>璧勬簮鍒欏寘鎷牳蹇冨璞★紙濡傛枃浠跺彞鏌勫拰綰跨▼錛夈佺敤鎴瘋祫婧愶紙濡傚璇濇鍜屽瓧絎︿覆錛夈?/span>GDI璧勬簮錛堝Device Context鍜?/span>brushes錛夈?/span>
榪涚▼鏈韓騫朵笉鑳藉鎵ц錛屽畠鍙槸鎻愪緵涓涓畨緗唴瀛樺拰綰跨▼鐨勫湴鏂廣?/span>錛堣繘紼嬪氨鏄竴澶у爢瀵硅薄鐨勬嫢鏈夋潈鐨勯泦鍚堛備篃灝辨槸璇達紝榪涚▼鍙互鎷ユ湁鍐呭瓨涓婁笅鏂囥佹枃浠跺彞鏌勩佺嚎紼嬪強涓澶т覆DLL妯″潡錛堣杞藉叆鍒拌繖涓榪涚▼鍦板潃絀洪棿涓級銆?/span>
榪涚▼鍜屽唴瀛樺茍娌℃湁鐪熸“鍋?/span>”浠涔堜簨鎯呫?span style="BACKGROUND: lime; mso-highlight: lime">涓鏃?/span>CPU寮濮嬫墽琛屼唬鐮侊紝浣犲氨鎷ユ湁浜嗕竴涓?/span>“綰跨▼”銆傚湪鍚屼竴鏃墮棿鍚屼竴榪涚▼錛屼綘鍙互鎷ユ湁涓澶ф妸綰跨▼錛屾墽琛屽悓涓孌典唬鐮?/span>銆?/span>
涓轟粈涔堜笉浣跨敤澶氫釜榪涚▼錛?/span>
杈冧箣榪涚▼錛岀嚎紼嬭交渚褲佷環寤夛紝鍚姩閫熷害蹇紝閫鍑烘瘮杈冨揩錛屽緋葷粺璧勬簮鐨勫啿鍑繪瘮杈冨皬銆?/span>
濡傛灉浣跨敤澶氳繘紼嬶紝鏈鍥伴毦鐨勯棶棰樻槸濡備綍鎶婄獥鍙e彞鏌勪氦緇欏彟涓涓繘紼嬨傚湪Win32涓紝鍙ユ焺鍙湪鍏惰癁鐢熷湴錛堣繘紼嬩腑錛夋墠鏈夋剰涔夈傝繖鏄竴縐嶅畨鍏ㄨ鎴掞紝閬垮厤鏌愪釜榪涚▼鏈夋剰鏃犳剰鍦板嵄鍙婂埌鍙︿竴涓繘紼嬬殑璧勬簮銆?/span>
涓轟簡鍒嗕韓紿楀彛鍙ユ焺錛屼綘蹇呴』鏄庢槑鐧界櫧鍦頒駭鐢熻鍙ユ焺鐨勪竴涓壇鏈紝騫朵笖鍙互琚叾浠栬繘紼嬩嬌鐢ㄣ傚湪涓涓綰跨▼紼嬪簭涓紝鎵鏈夌嚎紼嬮兘鍙互浣跨敤榪欎釜紿楀彛鐨勫彞鏌?/span>錛屽洜涓哄彞鏌勫拰綰跨▼鐢熸椿鍦ㄥ悓涓涓繘紼嬩腑銆?/span>
濡傛灉涓や釜綰跨▼鍒嗗睘涓嶅悓鐨勮繘紼嬶紝閭e畠浠氬父娌℃湁鍔炴硶鍏變韓浠諱綍鍐呭瓨銆備笉鍚?span style="BACKGROUND: lime; mso-highlight: lime">榪涚▼闂村鏋滆閫氳錛屽敮鏈変緷璧栫壒鍒殑璁捐錛屼嬌涔嬫嫢鏈夊叡浜唴瀛橈紙shared memory錛夈?/span>
濡傛灉涓ょ嚎紼嬪睘浜庡悓涓榪涚▼錛屽畠浠皢鍏變韓鎵鏈夌殑鍐呭瓨錛堝寘鎷叏灞鍙橀噺銆侀潤鎬佸彉閲?/span>錛夈?/span>
Context Switching鍙?/span>Context Switch鏁堢巼
瑕佸垏鎹笉鍚岀殑綰跨▼錛屾搷浣滅郴緇熷簲鍏堝垏鎹㈣綰跨▼鎵闅跺睘涔嬭繘紼嬬殑鍐呭瓨錛岀劧鍚庢仮澶嶈綰跨▼瀛樻斁鍦?/span>CONTEXT緇撴瀯涓殑瀵勫瓨鍣ㄥ箋傛榪囩▼縐頒負context switch銆?/span>
娉細CONTEXT緇撴瀯涓繚瀛樹簡璇ョ嚎紼嬩笂嬈¤鎵撴柇鏃剁嚎紼嬪綋鏃剁殑鐘舵侊紝涔熷氨鏄?/span>CPU鍐呮墍鏈夊瘎瀛樺櫒鐨勫唴瀹廣?/span>
褰撶劧錛屽ぉ涓嬫病鏈夊厤璐圭殑鍗堥錛岀嚎紼嬪垏鎹㈡椂閮借緙寸偣鏁堢巼紼庨噾銆?/span>
瀵逛簬鍗?/span>CPU鑰岃█錛屾姠鍏堝紡澶氫換鍔′嬌鐢佃剳鐪嬭搗鏉ュ彲浠ュ悓鏃跺鐞嗗涓換鍔°備絾寰涓婄湅錛屼換涓鏃跺埢錛?/span>CPU鍙兘鍋氫竴浠朵簨銆?/span>
澶?/span>CPU鐨勫ソ澶勬槸錛?/span>CPU瓚婂錛屽氨鏈夎秺澶氱嚎紼嬪彲浠ュ悓鏃舵墽琛岋紝涓嶉渶瑕?/span>context switch錛屼粠鑰屾彁楂樹簡緋葷粺鏁堢巼銆?/span>
绔炰簤鏉′歡錛?/span>Race Conditions錛夊拰鍘熷瓙鎿嶄綔錛?/span>Atomic Operations錛?/span>
娉ㄦ剰鍦ㄥ浠誨姟鎿嶄綔緋葷粺涓紝涓鏉?/span>C鎸囦護涓瀹氬彲浠ュ畨鍏ㄦ墽琛屽畬姣?/span>錛岃屼笉鍦ㄤ箮context switch鏄惁鍙戠敓銆?/span>
濂芥秷鎭笌鍧忔秷鎭?/span>
浣跨敤綰跨▼騫墮潪娌℃湁浠d環銆?span style="BACKGROUND: lime; mso-highlight: lime">閲囩敤澶氱嚎紼嬭璁″線寰浼氬姞澶х▼搴忚璁$殑澶嶆潅鎬э紝蹇呴』鍋氬埌灝忓績綺懼績瀹夋帓錛屾墠鑳藉疄鐜伴鏈熺洰鏍囥?/span>
鎴愬姛鐨勭璇鏄皬蹇冨湴瑙勫垝錛氳皝瑕佷粈涔堬紵浣曟椂瑕侊紵鎬庝箞瑕侊紵
浠誨姟姒傚康錛?/span>task錛?/span>
浠誨姟鏄敱杞歡瀹屾垚鐨勪竴涓椿鍔紝鏄竴緋誨垪杈懼埌鏌愮鍏卞悓鐩殑鐨勬搷浣?/span>銆備竴涓換鍔℃棦鍙互鐢變竴涓繘紼嬪疄鐜幫紝涔熷彲浠ヤ綔涓轟竴涓嚎紼嬫潵瀹炵幇銆?/span>
榪涚▼姒傚康 錛?/span>process錛?/span>
銆銆榪涚▼鏄〃紺鴻祫婧愬垎閰嶇殑鍩烘湰鍗曚綅錛?/strong>鍙堟槸璋冨害榪愯鐨勫熀鏈崟浣嶃備緥濡傦紝鐢ㄦ埛榪愯鑷繁鐨勭▼搴忥紝緋葷粺灝卞垱寤轟竴涓繘紼嬶紝騫朵負瀹冨垎閰嶈祫婧愶紝鍖呮嫭鍚勭琛ㄦ牸銆佸唴瀛樼┖闂淬佺鐩樼┖闂淬?/span>I錛?/span>O璁懼絳夈傜劧鍚庯紝鎶婅榪涚▼鏀句漢榪涚▼鐨勫氨緇槦鍒椼傝繘紼嬭皟搴︾▼搴忛変腑瀹冿紝涓哄畠鍒嗛厤CPU浠ュ強鍏跺畠鏈夊叧璧勬簮錛岃榪涚▼鎵嶇湡姝h繍琛屻傛墍浠ワ紝榪涚▼鏄郴緇熶腑鐨勫茍鍙戞墽琛岀殑鍗曚綅銆?/span>
銆鍦?/span>Mac銆?/span>Windows NT絳夐噰鐢ㄥ井鍐呮牳緇撴瀯鐨勬搷浣滅郴緇熶腑錛岃繘紼嬬殑鍔熻兘鍙戠敓浜嗗彉鍖栵細瀹冨彧鏄祫婧愬垎閰嶇殑鍗曚綅錛岃屼笉鍐嶆槸璋冨害榪愯鐨勫崟浣嶃傚湪寰唴鏍哥郴緇熶腑錛岀湡姝h皟搴﹁繍琛岀殑鍩烘湰鍗曚綅鏄嚎紼嬨傚洜姝わ紝瀹炵幇騫跺彂鍔熻兘鐨勫崟浣嶆槸綰跨▼銆?/span>
綰跨▼姒傚康錛?/span>tread錛?/span>
銆銆綰跨▼鏄繘紼嬩腑鎵ц榪愮畻鐨勬渶灝忓崟浣嶏紝浜﹀嵆鎵ц澶勭悊鏈鴻皟搴︾殑鍩烘湰鍗曚綅銆傚鏋滄妸榪涚▼鐞嗚В涓哄湪閫昏緫涓婃搷浣滅郴緇熸墍瀹屾垚鐨勪換鍔★紝閭d箞綰跨▼琛ㄧず瀹屾垚璇ヤ換鍔$殑璁稿鍙兘鐨勫瓙浠誨姟涔嬩竴銆備緥濡傦紝鍋囪鐢ㄦ埛鍚姩浜嗕竴涓獥鍙d腑鐨勬暟鎹簱搴旂敤紼嬪簭錛屾搷浣滅郴緇熷氨灝嗗鏁版嵁搴撶殑璋冪敤琛ㄧず涓轟竴涓繘紼嬨傚亣璁劇敤鎴瘋浠庢暟鎹簱涓駭鐢熶竴浠藉伐璧勫崟鎶ヨ〃錛屽茍浼犲埌涓涓枃浠朵腑錛岃繖鏄竴涓瓙浠誨姟錛涘湪浜х敓宸ヨ祫鍗曟姤琛ㄧ殑榪囩▼涓紝鐢ㄦ埛鍙堝彲浠ヨ緭浜烘暟鎹簱鏌ヨ璇鋒眰錛岃繖鍙堟槸涓涓瓙浠誨姟銆傝繖鏍鳳紝鎿嶄綔緋葷粺鍒欐妸姣忎竴涓姹傗曗曞伐璧勫崟鎶ヨ〃鍜屾柊杈撲漢鐨勬暟鎹煡璇㈣〃紺轟負鏁版嵁搴撹繘紼嬩腑鐨勭嫭绔嬬殑綰跨▼銆傜嚎紼嬪彲浠ュ湪澶勭悊鍣ㄤ笂鐙珛璋冨害鎵ц錛岃繖鏍鳳紝鍦ㄥ澶勭悊鍣ㄧ幆澧冧笅灝卞厑璁稿嚑涓嚎紼嬪悇鑷湪鍗曠嫭澶勭悊鍣ㄤ笂榪涜銆?span style="COLOR: red">鎿嶄綔緋葷粺鎻愪緵綰跨▼灝辨槸涓轟簡鏂逛究鑰屾湁鏁堝湴瀹炵幇榪欑騫跺彂鎬?/span>
榪涚▼鍜岀嚎紼嬬殑鍏崇郴
錛?/span>1錛変竴涓嚎紼嬪彧鑳藉睘浜庝竴涓繘紼嬶紝鑰屼竴涓繘紼嬪彲浠ユ湁澶氫釜綰跨▼錛屼絾鑷沖皯鏈変竴涓嚎紼嬨?/span>
錛?/span>2錛夎祫婧愬垎閰嶇粰榪涚▼錛屽悓涓榪涚▼鐨勬墍鏈夌嚎紼嬪叡浜榪涚▼鐨勬墍鏈夎祫婧愩?/span>
錛?/span>3錛夊鐞嗘満鍒嗙粰綰跨▼錛屽嵆鐪熸鍦ㄥ鐞嗘満涓婅繍琛岀殑鏄嚎紼嬨?/span>
錛?/span>4錛夌嚎紼嬪湪鎵ц榪囩▼涓紝闇瑕佸崗浣滃悓姝ャ備笉鍚岃繘紼嬬殑綰跨▼闂磋鍒╃敤娑堟伅閫氫俊鐨勫姙娉曞疄鐜板悓姝ャ?/span>
寮曞叆綰跨▼鐨勫ソ澶?/span>
錛?/span>1錛夋槗浜庤皟搴︺?/span>
錛?/span>2錛夋彁楂樺茍鍙戞с傞氳繃綰跨▼鍙柟渚挎湁鏁堝湴瀹炵幇騫跺彂鎬с傝繘紼嬪彲鍒涘緩澶氫釜綰跨▼鏉ユ墽琛屽悓涓紼嬪簭鐨勪笉鍚岄儴鍒嗐?/span>
錛?/span>3錛夊紑閿灝戙傚垱寤虹嚎紼嬫瘮鍒涘緩榪涚▼瑕佸揩錛屾墍闇寮閿寰堝皯銆傘?/span>
錛?/span>4錛夊埄浜庡厖鍒嗗彂鎸ュ澶勭悊鍣ㄧ殑鍔熻兘銆傞氳繃鍒涘緩澶氱嚎紼嬭繘紼嬶紙鍗充竴涓繘紼嬪彲鍏鋒湁涓や釜鎴栨洿澶氫釜綰跨▼錛夛紝姣忎釜綰跨▼鍦ㄤ竴涓鐞嗗櫒涓婅繍琛岋紝浠庤屽疄鐜板簲鐢ㄧ▼搴忕殑騫跺彂鎬э紝浣挎瘡涓鐞嗗櫒閮藉緱鍒板厖鍒嗚繍琛屻?/span>
澶氱嚎紼嬫妧鏈?/span>
澶氱嚎紼嬪簲鐢ㄧ▼搴忓皢紼嬪簭鍒掑垎涓哄涓嫭绔嬬殑浠誨姟錛屾瘡涓換鍔$敱涓涓嚎紼嬪鐞嗐傚綰跨▼澶勭悊鍙互鍚屾椂榪愯澶氫釜綰跨▼銆?/span>
澶氱嚎紼嬫妧鏈殑浼樼偣
(1)澶氱嚎紼嬫妧鏈嬌紼嬪簭鐨勫搷搴旈熷害鏇村揩 ,鍥犱負鐢ㄦ埛鐣岄潰鍙互鍦ㄨ繘琛屽叾瀹冨伐浣滅殑鍚屾椂涓鐩村浜庢椿鍔ㄧ姸鎬?/span>;
(2)褰撳墠娌℃湁榪涜澶勭悊鐨勪換鍔℃椂鍙互灝嗗鐞嗗櫒鏃墮棿璁╃粰鍏跺畠浠誨姟;
(3)鍗犵敤澶ч噺澶勭悊鏃墮棿鐨勪換鍔″彲浠ュ畾鏈熷皢澶勭悊鍣ㄦ椂闂磋緇欏叾瀹冧換鍔?/span>;
(4)鍙互闅忔椂鍋滄浠誨姟;
(5)鍙互鍒嗗埆璁劇疆鍚勪釜浠誨姟鐨勪紭鍏堢駭浠ヤ紭鍖栨ц兘銆?/span>
鏄惁闇瑕佸垱寤哄涓嚎紼嬪彇鍐充簬鍚勭鍥犵礌銆傚湪浠ヤ笅鎯呭喌涓?/span>,鏈閫傚悎閲囩敤澶氱嚎紼嬪鐞?/span>:
(1)鑰楁椂鎴栧ぇ閲忓崰鐢ㄥ鐞嗗櫒鐨勪換鍔¢樆濉炵敤鎴風晫闈㈡搷浣?/span>;
(2)鍚勪釜浠誨姟蹇呴』絳夊緟澶栭儴璧勬簮 (濡傝繙紼嬫枃浠舵垨 Internet榪炴帴)銆?/span>
澶氱嚎紼嬫妧鏈殑緙虹偣
1)絳夊欎嬌鐢ㄥ叡浜祫婧愭椂閫犳垚紼嬪簭鐨勮繍琛岄熷害鍙樻參銆傝繖浜涘叡浜祫婧愪富瑕佹槸鐙崰鎬х殑璧勬簮 ,濡傛墦鍗版満絳夈?/span>
(2)瀵圭嚎紼嬭繘琛岀鐞嗚姹傞澶栫殑 CPU寮閿銆傜嚎紼嬬殑浣跨敤浼氱粰緋葷粺甯︽潵涓婁笅鏂囧垏鎹㈢殑棰濆璐熸媴銆傚綋榪欑璐熸媴瓚呰繃涓瀹氱▼搴︽椂,澶氱嚎紼嬬殑鐗圭偣涓昏琛ㄧ幇鍦ㄥ叾緙虹偣涓?/span>,姣斿鐢ㄧ嫭绔嬬殑綰跨▼鏉ユ洿鏂版暟緇勫唴姣忎釜鍏冪礌銆?/span>
(3)綰跨▼鐨勬閿併傚嵆杈冮暱鏃墮棿鐨勭瓑寰呮垨璧勬簮绔炰簤浠ュ強姝婚攣絳夊綰跨▼鐥囩姸銆?/span>
(4)瀵瑰叕鏈夊彉閲忕殑鍚屾椂璇繪垨鍐欍傚綋澶氫釜綰跨▼闇瑕佸鍏湁鍙橀噺榪涜鍐欐搷浣滄椂,鍚庝竴涓嚎紼嬪線寰浼氫慨鏀規帀鍓嶄竴涓嚎紼嬪瓨鏀劇殑鏁版嵁,浠庤屼嬌鍓嶄竴涓嚎紼嬬殑鍙傛暟琚慨鏀?/span>;鍙﹀ ,褰撳叕鐢ㄥ彉閲忕殑璇誨啓鎿嶄綔鏄潪鍘熷瓙鎬ф椂,鍦ㄤ笉鍚岀殑鏈哄櫒涓?/span>,涓柇鏃墮棿鐨勪笉紜畾鎬?/span>,浼氬鑷存暟鎹湪涓涓嚎紼嬪唴鐨勬搷浣滀駭鐢熼敊璇?/span>,浠庤屼駭鐢熻帿鍚嶅叾濡欑殑閿欒,鑰岃繖縐嶉敊璇槸紼嬪簭鍛樻棤娉曢鐭ョ殑銆?/span>
涓轟粈涔堜笉浣跨敤澶氳繘紼嬶紵
杈冧箣榪涚▼錛岀嚎紼嬭交渚褲佷環寤夛紝鍚姩閫熷害蹇紝閫鍑烘瘮杈冨揩錛屽緋葷粺璧勬簮鐨勫啿鍑繪瘮杈冨皬銆?/span>
濡傛灉浣跨敤澶氳繘紼嬶紝鏈鍥伴毦鐨勯棶棰樻槸濡備綍鎶婄獥鍙e彞鏌勪氦緇欏彟涓涓繘紼嬨傚湪Win32涓紝鍙ユ焺鍙湪鍏惰癁鐢熷湴錛堣繘紼嬩腑錛夋墠鏈夋剰涔夈傝繖鏄竴縐嶅畨鍏ㄨ鎴掞紝閬垮厤鏌愪釜榪涚▼鏈夋剰鏃犳剰鍦板嵄鍙婂埌鍙︿竴涓繘紼嬬殑璧勬簮銆?/span>
涓轟簡鍒嗕韓紿楀彛鍙ユ焺錛屼綘蹇呴』鏄庢槑鐧界櫧鍦頒駭鐢熻鍙ユ焺鐨勪竴涓壇鏈紝騫朵笖鍙互琚叾浠栬繘紼嬩嬌鐢ㄣ傚湪涓涓綰跨▼紼嬪簭涓紝鎵鏈夌嚎紼嬮兘鍙互浣跨敤榪欎釜紿楀彛鐨勫彞鏌勶紝鍥犱負鍙ユ焺鍜岀嚎紼嬬敓媧誨湪鍚屼竴涓繘紼嬩腑銆?/span>
濡傛灉涓や釜綰跨▼鍒嗗睘涓嶅悓鐨勮繘紼嬶紝閭e畠浠氬父娌℃湁鍔炴硶鍏變韓浠諱綍鍐呭瓨銆?span style="COLOR: red">涓嶅悓榪涚▼闂村鏋滆閫氳錛屽敮鏈変緷璧栫壒鍒殑璁捐錛屼嬌涔嬫嫢鏈夊叡浜唴瀛橈紙shared memory錛夈?/span>
濡傛灉涓ょ嚎紼嬪睘浜庡悓涓榪涚▼錛屽畠浠皢鍏變韓鎵鏈夌殑鍐呭瓨錛堝寘鎷叏灞鍙橀噺銆侀潤鎬佸彉閲忥級錛屽緢瀹規槗灝卞疄鐜頒簡綰跨▼涔嬮棿鐨勯氳銆?/span>
Note錛氫富瑕佹槸璧勬簮鍏變韓闂
zhangtaolmq
VC涔犻1
1.2 涓嬪垪瀵逛簬WinMain鍑芥暟鐨勬弿榪頒腑錛岄敊璇殑鏄紙 C 錛夈?/span>
A錛?/span>WinMain鍑芥暟鐨勫悕縐版槸鍥哄畾鐨?/span>
B錛?/span>WinMain鍑芥暟鏄?/span>Windows紼嬪簭鐨勫叆鍙g偣
C錛?/span>WinMain鍑芥暟涓嶈兘鏈夊弬鏁?/span>
D錛夌獥鍙e嚱鏁頒笌WinMain鐨勫叧鑱旀槸閫氳繃紿楀彛綾葷殑娉ㄥ唽瀹炵幇鐨?/span>
1.3 浠ヤ笅鍥涗釜鐗規т腑鍝竴涓笉灞炰簬闈㈠悜瀵硅薄鐨勪笁澶х壒鎬э紙 A錛夈?/span>
A錛夊皝瑁呮?/span> B錛夊鎬佹?/span> C錛夋娊璞℃?/span> D錛夌戶鎵挎?/span>
1.4 涓嬪垪鍏抽敭瀛椾腑鍝竴涓笉鏄敤浜庣被鐨勮闂帶鍒剁殑錛?/span> B 錛夈?/span>
A錛?/span>public B錛?/span>friend C錛?/span>private D錛?/span>protected
1.5 涓嬮潰鍥涗釜MFC綾諱腑鍝竴涓槸綆$悊MFC搴旂敤紼嬪簭鐨勶紙 A錛夈?/span>
A錛?/span>CWinApp B錛?/span>CMainFrame C錛?/span>CDocument D錛?/span>CView
1.6 涓嬪垪綾諱腑涓嶅睘浜?/span>MFC妗嗘灦鍩烘湰綾葷殑鏄紙D 錛夈?/span>
A錛?/span>CWinApp B錛?/span>CFrameWnd C錛?/span>CView D錛?/span>CObject
1.7 浼犵粺鐨勮蔣浠跺紑鍙戜富瑕侀噰鐢?/span> 榪囩▼ 椹卞姩鐨勬柟娉曪紝鑰?/span>Windows紼嬪簭鐨勫紑鍙戜嬌鐢ㄦ秷鎭?/span> 椹卞姩妯″瀷錛岃妯″瀷闈?u>浜嬩歡鏈哄埗鏉ュ疄鐜板叾鍔熻兘銆?/span>
1.8 涓繪鏋剁被鏄簲鐢ㄧ▼搴忎腑璐熻矗鎺у埗鑿滃崟銆佸伐鍏鋒爮鍜岀姸鎬佹爮絳夌晫闈㈠厓绱犵殑鏈涓昏鐨勭被銆?/span>
涔犻2
2.1 Windows 搴旂敤紼嬪簭鐨勬秷鎭潵婧愪富瑕佸寘鎷?/span> 杈撳叆娑堟伅銆佹帶鍒舵秷鎭拰緋葷粺娑堟伅銆佺敤鎴鋒秷鎭?/span>
2.2 SendMessage 鍚?/span>CWnd瀵硅薄鍙戦佷竴涓秷鎭紝鐩村埌榪欐潯娑堟伅琚鐞嗕箣鍚庢墠榪斿洖
PostMessage 灝嗕竴鏉℃秷鎭斁鍏ュ簲鐢ㄧ▼搴忕殑娑堟伅闃熷垪錛岀劧鍚庝笉絳夌獥鍙e鐞嗚繖鏉℃秷鎭洿鎺ヨ繑鍥?/span>
2.3 CCmdUI綾葷殑涓昏鍔熻兘鏄富瑕佺敤鏉?u>鏇存柊鍛戒護鐢ㄦ埛鎺ュ彛鐨勭姸鎬?/span>銆傚瀛愯彍鍗曘傚伐鍏鋒爮涓婄殑鎸夐挳絳?/span> 銆?/span>
2.4 浠g爜ON_UPDATE_COMMAND_UI錛?/span>ID_TEST, OnUpdateTest錛夌殑鍔熻兘鏄細灝嗗ID_TEST鐨勬洿鏂板懡浠ゆ帴鍙f秷鎭殑澶勭悊鏄犲皠鍒?/span>OnUpdateTest鍑芥暟涓娿?/span>
2.5 CString綾葷殑鍔熻兘鏄鐞嗗瓧絎︿覆錛屽叾Format鍑芥暟鐨勫姛鑳芥槸鏍煎紡鍖栧瓧絎︿覆 銆?/span>
2.6 CTime綾葷殑鍔熻兘鏄?/span> 澶勭悊鏃ユ湡鏃墮棿錛屽叾Format鍑芥暟鐨勫姛鑳芥槸灝嗘椂闂村璞℃牸寮忓寲涓哄瓧絎︿覆
2.7 MessageBox鍑芥暟鐨勭涓涓弬鏁拌〃紺?/span> 娑堟伅鏂囧瓧錛岀浜屼釜鍙傛暟琛ㄧず 鏍囬鏂囧瓧錛岀涓変釜鍙傛暟琛ㄧず 鍥炬爣涓庢寜閽粍鍚?/span> 銆?/span>
2.8 鍦?/span>windows涓紝鎸変笅涓涓瓧絎﹂敭錛屼細渚濇瑙﹀彂WM_KEYDOWN WM_CHAR銆佸拰WM_KEYUP涓変釜娑堟伅銆?/span>
2.9 褰?/span>Windows紿楀彛鍐呴儴闇瑕侀噸鏂扮粯鍒舵椂錛屼細寰楀埌涓涓?/span> WM_PAINT 娑堟伅錛屽綋閲婃斁榧犳爣鍙抽敭鏃訛紝浼氬緱鍒頒竴涓?/span> WM_RBUTTONUP 娑堟伅銆?/span>
涔犻涓?/span>
3.1 Visual C++鎻愪緵鐨勮祫婧愮紪杈戝櫒涓嶈兘緙栬緫涓嬪垪鍝釜璧勬簮錛?/span>C 錛夈?/span>
A錛夎彍鍗?/span> B錛夊伐鍏鋒爮 C錛夌姸鎬佹爮 D錛変綅鍥?/span>
3.2 MFC搴旂敤紼嬪簭妗嗘灦涓虹姸鎬佹爮瀹氫箟鐨勯潤鎬佹暟緇?/span>indicators鏀懼湪鍝釜鏂囦歡涓紙 A 錛夈?/span>
A錛?/span>MainFrm.cpp B錛?/span>MainFrm.h C錛?/span>stdafx.cpp D錛?/span>stdafx.h
3.3 deletemenu鐢ㄦ潵鍒犻櫎鏌愪釜鑿滃崟欏癸紝濡傛灉琚垹闄ょ殑鑿滃崟欏規湁鐩稿叧鐨勫脊鍑鴻彍鍗曪紝鍒欒寮瑰嚭鑿滃崟鐨勫彞鏌勪篃瑕佽鍒犻櫎騫墮噴鏀懼唴瀛樸?/span>appendmenu鐢ㄦ潵榪藉姞鏌愪釜鑿滃崟欏?/span>錛?/span> trackpopupmenu 鐢ㄦ潵鍦ㄤ竴涓?/span>POINT緇撴瀯鎵鎸囧畾鐨勪綅緗樉紺轟竴涓笂涓嬫枃鑿滃崟銆?/span>
3.4宸ュ叿鏍忎笂鐨勬寜閽兘瑙﹀彂鐨勬秷鎭?/span> command鍜?/span> update_command_ui銆?/span>
3.5 鐘舵佹爮涓婄殑紿楁牸鍙互鍒嗕負淇℃伅琛岀獥鏍煎拰 鎸囩ず鍣ㄧ獥鏍?/span>涓ょ被銆?/span>
3.6 getsubmenu 鍙互寰楀埌鎸囧悜鏌愬垪鑿滃崟鐨勬寚閽?/span>銆?/span>
3.7 涓嬪垪鍑芥暟涓紝鍙互瀹炵幇鐢誨渾鍔熻兘鐨勬槸錛?/span>B 錛夈?/span>
A錛?/span>Rectangle B錛?/span>Ellipse C錛?/span>Circle D錛?/span>Line
3.8 CDC綾諱負鐢ㄦ埛鎻愪緵浜嗕笅鍒楀洓涓枃鏈緭鍑哄嚱鏁幫紝鍏朵腑錛岃兘浣胯緭鍑虹殑鏂囨湰鍛堢幇涓涓鍒楀垪琛ㄦ牸寮忕殑鏄紙C 錛夈?/span>
A錛?/span>TextOut B錛?/span>ExtTextOut C錛?/span>TabbedTextOut D錛?/span>DrawText
3.9涓嬪垪綾諱腑鍝竴涓笉鏄?/span>GDI瀵硅薄綾伙紙B 錛夈?/span>
A錛?/span>CPen B錛?/span>CWnd C錛?/span>Cbrush D錛?/span>CRgn
涔犻鍥?/span>
4.1涓嬮潰鍝釜涓嶆槸CDC綾葷殑媧劇敓綾伙紙 A 錛夈?/span>
A錛?/span>GDI綾?/span> B錛?/span>CPaintDC綾?/span> C錛?/span>CClientDC綾?/span> D錛?/span>CWindowDC綾?/span>
4.2 CDC綾諱腑瀹炵幇緇樺埗鐭╁艦鍔熻兘鐨勫嚱鏁版槸 Rectangle錛屽疄鐜扮粯鍒舵き鍦嗗姛鑳界殑鍑芥暟鏄?/span> Ellipse錛?/span>鏀瑰彉鏂囨湰棰滆壊鐨勫嚱鏁版槸 SetTextColo鏀瑰彉鏂囨湰鑳屾櫙棰滆壊鐨勫嚱鏁版槸 SetBkcolor鍦ㄦ寚瀹氫綅緗樉紺哄瓧絎︿覆鐨勫嚱鏁版槸 Textout 銆?/span>
4.3 MFC緇樺浘瑕佺礌涓昏鍒嗕負涓ゅぇ綾伙紝鍗?/span> 璁懼鍦烘櫙 鍜屽熀鏈粯鍥懼伐鍏?/span> 銆?/span>
4.4 Windows寮曞叆鍥懼艦璁懼鎺ュ彛鐨勭洰鐨勬槸灞忚斀搴曞眰紜歡鐨勭粯鍥劇粏鑺傦紝浣跨紪紼嬫洿鍔犲鏄?/span> 銆?/span>
4.5 Windows鐢?/span> COLORREF 綾誨瀷鐨勬暟鎹瓨鏀鵑鑹詫紝瀹冮噰鐢?/span>3涓弬鏁拌〃紺虹孩銆佺豢銆佽摑涓夊厓鍩烘湰鑹茬殑鍒嗛噺鍊鹼紝榪?/span>3涓肩殑鍙栧艱寖鍥翠負 0锝?/span>255 銆?/span>
4.6 鍒涘緩鐢葷瑪鍚庯紝蹇呴』璋冪敤CDC綾葷殑鎴愬憳鍑芥暟 SelectObject灝嗘柊鐢葷瑪閫夎繘褰撳墠鐨勭粯鍥劇幆澧冦?/span>
4.7 MFC涓殑CDialog綾誨皝瑁呬簡瀵硅瘽妗嗙殑鏄劇ず銆佸叧闂瓑甯哥敤鍔熻兘錛屽叾涓紝鐢ㄦ潵鏄劇ず妯℃佸璇濇鐨勬槸鍑芥暟錛?/span> C 錛夈?/span>
A錛?/span>CreateWindow B錛?/span>ShowWindow C錛?/span>DoModal D錛?/span>UpdateWindow
4.8 瀵硅瘽妗嗗垱寤哄悗錛岃繕娌℃樉紺哄墠灝變細瑙﹀彂錛?/span> B 錛夋秷鎭?/span>
A錛?/span>WM_PAINT B錛?/span>WM_INITDIALOG C錛?/span>WM_CREATE D錛?/span>WM_SIZE
4.9 閫氱敤瀵硅瘽妗嗕腑錛屽睘浜庨潪妯℃佸璇濇鐨勬槸錛?/span>D錛夈?/span>
A錛夋枃浠跺璇濇 B錛夐鑹插璇濇 C錛夋墦鍗板璇濇 D錛夋煡鎵懼璇濇
涔犻浜?/span>
5.1 瑕佹墦寮鏂囦歡錛屽簲璇ヤ嬌鐢ㄥ摢涓氱敤瀵硅瘽妗嗭紙 A 錛夈?/span>
A錛?/span>CFileDialog B錛?/span>CColorDialog C錛?/span>CPrintDialog D錛?/span>CFontDialog
5.2 閫氬父灝嗗璇濇鐨勫垵濮嬪寲宸ヤ綔鏀懼湪涓嬪垪鍝釜鍑芥暟涓繘琛岋紙 C 錛夈?/span>
A錛?/span>OnOK B錛?/span>OnCancel C錛?/span>OnInitDialog D錛?/span>DoModal
5.3鎵鏈夐氱敤瀵硅瘽妗嗛兘鏄敱鍏叡鍩?u>綾?/span>CCommonDialog媧劇敓鍑烘潵鐨勶紝 CColorDialog瀹炵幇浜嗘爣鍑嗙殑棰滆壊瀵硅瘽妗嗐?/span>
5.4 MFC涓紝涓庡睘鎬у璇濇鐩稿叧鐨勪袱涓被鏄?/span> CPropertyPage 鍜?/span>CPropertySheet
5.5涓嬪垪鎺т歡涓笉灞炰簬鎸夐挳鐨勬槸錛?/span> B 錛夈?/span>
A錛変笅鍘嬫寜閽?/span> B錛夊垪琛ㄦ C錛夊崟閫夋 D錛夊閫夋
5.6 濡傛灉鍦ㄨ緭鍏ユ椂閲囩敤閫夋嫨鐨勬柟娉曡繘琛岋紝浠ヤ笅鍝釜鎺т歡涓嶈兘瀹炵幇錛?/span> D 錛夈?/span>
A錛夊垪琛ㄦ鎺т歡 B錛夊崟閫夋寜閽?/span> C錛夊閫夋 D錛夌紪杈戞
5.7 涓嬮潰瀵?/span>UpdateData鍑芥暟鐨勬弿榪頒腑閿欒鐨勬槸錛?/span> D 錛夈?/span>
A錛?/span>CWnd::UpdateData鍑芥暟瀹炵幇瀵規帶浠朵腑鏁板肩殑杈撳叆鍜岃鍙?/span>
B錛?/span>UpdateData鍙湁涓涓負TRUE鎴?/span>FALSE鐨勫弬鏁?/span>
C錛夊綋璋冪敤UpdateData錛?/span>FALSE錛夋椂錛屾暟鎹敱鎺т歡鍏寵仈鐨勫彉閲忓悜鎺т歡浼犺緭
D錛夊綋璋冪敤UpdateData錛?/span>TRUE錛夋椂錛屾暟鎹敱鎺т歡鍏寵仈鐨勫彉閲忓悜鎺т歡浼犺緭
5.8 鏈変袱縐嶆柟娉曞彲浠ュ垱寤洪潤鎬佹枃鏈帶浠訛紝涓縐嶆槸浣跨敤璧勬簮緙栬緫鍣ㄦ坊鍔?/span>錛屽彟涓縐嶆槸 浣跨敤create鍑芥暟鍔ㄦ佸垱寤恒?/span>
5.9 浣跨敤婊氬姩鏉℃帶浠朵竴鑸鐢ㄥ埌鎺т歡鎵鍦ㄥ璇濇綾葷殑WM_HSCROLL鍜?/span> WM_VSCROLL 娑堟伅銆?/span>
涔犻鍏?/span>
6.1 鍒ゆ柇涓緇勫崟閫夋寜閽腑鍝竴涓閫変腑浜嗭紝瑕佸簲鐢?/span>GetCheckedRadioButton 鍑芥暟銆?/span>
6.2 GetScrollpos鍑芥暟鍙互寰楀埌婊氬姩鏉$殑婊戝潡浣嶇疆錛?/span> SetScrollpos鍑芥暟鍙互璁劇疆婊氬姩鏉$殑婊戝潡浣嶇疆錛?/span> Getpos鍙互寰楀埌婊戝姩鏉$殑褰撳墠浣嶇疆錛?/span> Setpos 鍑芥暟鍙互璁劇疆婊戝姩鏉$殑褰撳墠浣嶇疆銆?/span>
6.3 CListBox綾諱腑鐨?/span> InsertString 鍑芥暟鍙互涓哄垪琛ㄦ鎻掑叆涓涓柊鐨勫瓧絎︿覆錛?/span> ResetContent 鍑芥暟鍙互娓呯┖鎵鏈夊垪琛ㄩ」鍐呭銆?/span>
6.4褰撶▼搴忛渶瑕佷笌鐣岄潰浜ゆ崲鏁版嵁鏃訛紝搴旇璋冪敤 UpdataData 鍑芥暟銆?/span>
6.5 GetDocument 鏄鍥劇被鐨勬垚鍛樺嚱鏁幫紝璋冪敤瀹冨彲浠ュ緱鍒版寚鍚戜笌涔嬪叧鑱旂殑鏂囨。瀵硅薄鐨勬寚閽堬紝鏂囨。鐨勪覆琛屽寲鍦?/span>Serialize 鍑芥暟涓繘琛屻?/span>
6.6 鍦ㄧ▼搴忕殑浠諱綍涓涓被涓闂簲鐢ㄧ▼搴忕被鐨勫嚱鏁頒負 AfxGetApp 錛屽湪紼嬪簭鐨勪換浣曚竴涓被涓闂鏋剁獥鍙g被鐨勫嚱鏁頒負AfxGetMainWnd() 銆?/span>
6.7鍩轟簬鍗曟枃妗?/span>/瑙嗗浘緇撴瀯鐨勬鏋剁▼搴忎腑鍖呭惈鐨勭被鏈?/span> CWinApp 銆?/span> CFrameWnd 銆?/span> CDocument銆?/span>CDocTemplate鍜?/span> Cview
6.8 ODBC浣撶郴緇撴瀯涓笉鍖呮嫭涓嬪垪鍝釜緇勪歡錛?/span> C 錛夈?/span>
A錛?/span>ODBC綆$悊鍣?/span> B錛夋暟鎹簮 C錛夐┍鍔ㄧ▼搴忕鐞嗗櫒 D錛夋暟鎹簱綆$悊緋葷粺DBMS
6.9 璁板綍闆嗗彲浠ュ垎涓?/span> Dynaset(鍔ㄦ侀泦) 鍜?/span> Snapshot錛堝揩鐓э級涓ょ銆?/span>
涔犻涓?/span>
7.1 MFC鐨?/span>ODBC綾諱富瑕佸寘鎷?/span>5涓被錛屽垎鍒槸CDatabase銆?/span>CRecordset 銆?/span> CRecordView 銆?/span> CDBException鍜?/span> CFieldExchange 銆?/span>
7.2鍙互鍒╃敤CRecordset綾葷殑 AddNew鍑芥暟娣誨姞涓鏉℃柊璁板綍錛屽埄鐢?/span>CRecordset綾葷殑 MoveFirst鍑芥暟灝嗚褰曟寚閽堢Щ鍔ㄥ埌絎竴鏉¤褰曚笂錛屽埄鐢?/span>CRecordset綾葷殑Update 鍑芥暟瀹炵幇鏁版嵁搴撹褰曠殑淇濆瓨銆?/span>
7.3涓嬪垪鍑芥暟涓紝鑳戒負鐘舵佹爮絎簩涓俊鎭牸璁懼畾鏂囧瓧鐨勬槸錛?/span> A 錛?/span>
a)SetPaneText b)SetWindowText c)SetPaneInfo d)SetText
綆絳旈錛?/span>
1. 瀹氫箟鍜屼嬌鐢ㄦ秷鎭槧灝勮〃鐨勬楠?/span> 錛?/span>
鈶?/span> 鍦ㄥご鏂囦歡鐨勭被澹版槑涓坊鍔?/span>DECLARE_MESSAGE_MAP瀹?/span>澹版槑娑堟伅鏄犲皠;
鈶?/span> 鍦ㄧ被鐨勫畾涔夋枃浠?/span>(.cpp)瀹氫箟娑堟伅鏄犲皠琛紝鏂規硶鏄湪 鏂囦歡鐨勫紑濮嬪娣誨姞BEIGN_MESSAGE_MAP鍜?/span>END_MESSAGE_MAP 榪欎竴瀵瑰畯錛屽湪瀹冧滑涔嬮棿鏀劇疆娑堟伅鏄犲皠瀹忥紝瀹氫箟騫跺垵濮嬪寲娑堟伅鏄犲皠琛?/span>錛屽湪娑堟伅涓庡鐞嗘秷鎭殑鍑芥暟涔嬮棿寤虹珛鑱旂郴錛?/span>
鈶?/span> 鍦ㄧ被鐨勫畾涔夋枃浠?/span>(.cpp)涓坊鍔?/span>娑堟伅澶勭悊鍑芥暟銆?/span>
2.浠涔堟槸娑堟伅鏄犲皠錛?/span>
鎵璋撴秷鎭槧灝勶紝綆鍗曞湴璁詫紝灝辨槸璁╃▼搴忓憳鎸囧畾瑕佹煇涓?/span>MFC綾伙紙鏈夋秷鎭鐞嗚兘鍔涚殑綾伙級澶勭悊鏌愪釜娑堟伅銆?/span>MFC鎻愪緵浜嗗伐鍏?/span>ClassWizard鏉ュ府鍔╁疄鐜版秷鎭槧灝勶紝鍦ㄥ鐞嗘秷鎭殑綾諱腑娣誨姞涓浜涙湁鍏?span>娑堟伅鏄犲皠鐨勫唴瀹瑰拰澶勭悊娑堟伅鐨勬垚鍛樺嚱鏁?/span>銆傜▼搴忓憳灝嗗畬鎴愭秷鎭鐞嗗嚱鏁幫紝瀹炵幇鎵甯屾湜鐨勬秷鎭鐞嗚兘鍔涖?/span>
濡傛灉媧劇敓綾昏瑕嗙洊鍩虹被鐨勬秷鎭鐞嗗嚱鏁幫紝灝辯敤ClassWizard鍦ㄦ淳鐢熺被涓坊鍔犱竴涓秷鎭槧灝勬潯鐩紝鐢ㄥ悓鏍風殑鍘熷瀷瀹氫箟涓涓嚱鏁幫紝鐒跺悗瀹炵幇璇ュ嚱鏁般傝繖涓嚱鏁拌鐩栨淳鐢熺被鐨勪換浣曞熀綾葷殑鍚屽悕澶勭悊鍑芥暟銆?/span>
3.鍒涘緩涓涓獥鍙g殑姝ラ錛?/span>
鍒涘緩涓涓畬鏁寸殑紿楀彛闇瑕佺粡榪囦笅闈㈠洓涓搷浣滄楠?/span>
璁捐涓涓獥鍙g被錛?/span>
娉ㄥ唽紿楀彛綾伙紱
鍒涘緩紿楀彛錛?/span>
鏄劇ず鍙婃洿鏂扮獥鍙c?/span>
4.浠涔堟槸妯℃佸璇濇錛熶粈涔堟槸闈炴ā鎬佸璇濇錛?/span>
鎵璋?#8220;妯℃佸璇濇”鏄寚瀵硅瘽妗嗚寮瑰嚭鍚庣敤鎴峰繀欏誨湪瀵硅瘽妗嗕腑浣滃嚭鐩稿簲鐨勬搷浣滐紱鍦ㄩ鍑哄璇濇涔嬪墠錛屼細闃繪鍏朵粬搴旂敤紼嬪簭鐨勮繍琛岋紙鍖呮嫭瀹冩墍鍦ㄧ殑搴旂敤紼嬪簭錛?/span>
鎵璋?#8220;闈炴ā鎬佸璇濇”鏄寚褰撳璇濇琚脊鍑哄悗錛屽皢涓鐩翠繚鐣欏湪灞忓箷涓婏紝浣嗕笉褰卞搷鍏朵粬搴旂敤紼嬪簭鐨勮繍琛岋紝鐢ㄦ埛鍙互緇х畫鍦ㄥ璇濇鎵鍦ㄧ殑搴旂敤紼嬪簭涓繘琛屽叾浠栨搷浣滐紱褰撻渶瑕佷嬌鐢ㄥ璇濇鏃訛紝鍙渶鍍忔縺媧諱竴鑸獥鍙d竴鏍峰崟鍑誨璇濇鎵鍦ㄧ殑鍖哄煙鍗沖彲銆備緥濡傚湪Microsoft Word涓殑“鏌ユ壘”鍜?#8220;鏇挎崲”瀵硅瘽妗嗐?/span>
5.鏂囨。/瑙嗗浘緇撴瀯鐨勫伐浣滄満鍒?/span>
l 瑙嗗浘閫氳繃GetDocument鎴愬憳鍑芥暟鑾峰緱鎸囧悜鐩稿叧鑱旂殑鏂囨。瀵硅薄鐨勬寚閽?/span>
l 閫氳繃璇ユ寚閽堣皟鐢ㄦ枃妗g被鐨勬垚鍛樺嚱鏁版潵浠庢枃妗d腑璇誨彇鏁版嵁
l 瑙嗗浘鎶婃暟鎹樉紺轟簬璁$畻鏈哄睆騫曚笂
l 鐢ㄦ埛閫氳繃涓庤鍥劇殑浜や簰鏉ユ煡鐪嬫暟鎹茍瀵規暟鎹繘琛屼慨鏀?/span>
l 瑙嗗浘閫氳繃鐩稿叧鑱旂殑鏂囨。綾葷殑鎴愬憳鍑芥暟灝嗙粡榪囦慨鏀圭殑鏁版嵁浼犻掔粰鏂囨。瀵硅薄
l 鏂囨。瀵硅薄鑾峰緱淇敼榪囩殑鏁版嵁涔嬪悗錛屽鍏惰繘琛屽繀瑕佺殑淇敼錛屾渶鍚庝繚瀛樺埌姘鎬箙浠嬭川(濡傜鐩樻枃浠?/span>)涓?/span>
6.浠?/span>CDocument綾繪淳鐢熸柊鐨勬枃妗g被鐨勪竴鑸繃紼嬪涓嬶細
涓烘瘡涓涓枃妗g被鍨嬩粠CDocument綾繪淳鐢熶竴涓浉搴旂殑鏂囨。綾匯備負鏂囨。綾繪坊鍔犳垚鍛樺彉閲忥紝榪欎簺鍙橀噺涓昏鐢ㄦ潵淇濆瓨鏂囨。鐨勬暟鎹紝騫朵嬌鍏跺畠鐨勫璞?/span>(濡傝鍥懼璞?/span>)鍙互璁塊棶榪欎簺鎴愬憳鍙橀噺錛屼粠鑰屽疄鐜版枃妗e拰瑙嗗浘鐨勭浉浜掓惌閰嶄嬌鐢ㄣ傞噸杞?/span>Serialize鎴愬憳鍑芥暟錛屽疄鐜版枃妗f暟鎹殑涓茶鍖栥?/span>
7. 涓茶鍖栫殑濂藉
浣跨敤涓茶鍖栫殑濂藉錛氭槸涓嶉渶瑕侀噸杞芥枃浠舵墦寮銆佹枃浠朵繚瀛樹箣綾葷殑鏂規硶錛?/span>MFC妗嗘灦浼氳嚜鍔ㄥ畬鎴愯繖浜涗換鍔★紝騫惰嚜鍔ㄨ皟鐢ㄦ枃妗g被鐨?/span>Serialize鏂規硶鏉ュ畬鎴愪覆琛屽寲榪囩▼銆?/span>
濡傛灉鏂囨。鐨勬娊璞℃暟鎹彧鏈変竴涓瓧絎︿覆錛岄偅涔堜綘鍙渶瑕佸湪Serialize涓坊鍔犵浉鏄犺鍙ュ氨鍙互瀹屾垚涓茶鍖栬繃紼嬨?/span>
8銆佺畝榪板湪MFC Windows搴旂敤紼嬪簭涓嬌鐢?/span>CBrush瀵硅薄鐨勫熀鏈楠ゃ?/span>
l 鍒涘緩鐢誨埛錛堝彲璋冪敤鐢誨埛鍒涘緩鍑芥暟CreateSolidBrush銆?/span>CreateHatchBrush錛?/span>
l 灝嗙敾鍒烽夊叆璁懼鐜錛堣皟鐢?/span>SelectObject錛?/span>
l 浣跨敤璇ュ埛瀛愯繘琛岀粯鐢?/span>
l 鍒犻櫎鐢誨埛
9銆佺畝榪版枃妗?/span>/瑙嗗浘緇撴瀯涓寘鍚殑涓昏鐨勭被鍙婂悇涓被涔嬮棿鐨勭浉浜掑叧緋匯?/span>
鍖呮嫭 CWinApp銆?/span> CDocument 銆?/span>CView銆?/span> CDocTemplate 銆?/span> CFrameWnd 綾?/span>
涓涓?/span> App鍙互鍖呭惈澶氫釜鏂囨。妯$増錛?/span> CDocTemplate 錛夛紝浣嗘槸 MFC AppWizard 錛堟棤璁烘槸 SDI 榪樻槸 MDI 錛夐兘鍙槸榛樿鐢熸垚涓涓備絾鏄湪瀹為檯寮鍙戜腑涓涓枃妗fā鐗堜笉澶燂紝闇瑕佽嚜宸辨墜宸ユ坊鍔犮傝繖涓粨鏋勬槸閫氳繃 MFC 涓?/span> CWinApp 鐨勬垚鍛樺彉閲?/span> CDocManager * m_pDocManager 瀹炵幇鐨勩?/span>
CDocTemplate 鎷ユ湁 3 涓垚鍛樺彉閲忥紝鍒嗗埆淇濆瓨鐫 Document 銆?/span> View 銆?/span> Frame 鐨?/span> CRuntimeClass 鎸囬拡錛屽彟澶栨寔鏈夋垚鍛樺彉閲?/span> m_nIDResource 錛岀敤鏉ユ寚瀹氳繖涓?/span> Document 鏄劇ず鏃跺欓噰鐢ㄧ殑鑿滃崟璧勬簮銆?/span>
涓涓枃妗e彲浠ユ湁澶氫釜瑙嗗浘錛岀敱 Document 涓垚鍛樺彉閲?/span> CPtrList m_ViewList 緇存姢銆?/span>
CFrameWnd 鎷ユ湁涓涓垚鍛樺彉閲?/span> CView* m_pActiveView 鎸囧悜褰撳墠媧誨姩鐨?/span> View銆?/span>
CView 涓嫢鏈変竴涓垚鍛樺彉閲?/span> CDocument* m_pDocument 鎸囧悜璇ヨ鍥劇浉鍏崇殑 Document銆?/span>
10銆佸啓鍑烘寜閽?/span>Show鍜?/span>Show the Age鍝嶅簲鍗曞嚮娑堟伅鐨勫嚱鏁?/span>OnEnable錛堬級銆?/span>OnShow錛堬級鍜?/span>OnShowage錛堬級銆傚嚱鏁?/span>OnShow錛堬級浣跨紪杈戞IDC_EDIT1鍜?/span>IDC_EDIT2澶勪簬鏄劇ず鐘舵侊紝鍑芥暟OnShowage錛堬級瑕佽兘澶熷垽鏂嚭鍗曢夋寜閽?/span>IDC_RADIO1銆?/span>IDC_RADIO2鍜?/span>IDC_RADIO3鍝釜琚変腑錛屽茍灝嗚閫変腑鍗曢夋寜閽殑鏍囬娣誨姞鍒扮粍鍚堟IDC_COMBO1涓紝璁句負緇勫悎妗嗙殑榛樿閫夐」銆?/span>
CMyDialog::OnEnable錛堬級
{
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);
}
CMyDialog::OnShow錛堬級
{
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
}
CMyDialog::Onshowage()
{
CString strText;
int i=-1;
i=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);
if(i==IDC_RADIO1)
strText=">20";
else if(i==IDC_RADIO2)
strText="15-20";
else if(i==IDC_RADIO3)
strText="<15";
GetDlgItem(IDC_COMBO1)->SetWindowText(strText);
}
2銆佷笅闈㈠乏鍥句負鑿滃崟緇撴瀯錛屽彸鍥句負榪愯緇撴灉錛屽啓鍑哄脊鍑鴻彍鍗曠殑浠g爜銆?/span>
void CPopupmenuView::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menuPopup ;
if(menuPopup.LoadMenu(IDR_MAINFRAME))
menuPopup.GetSubMenu (4)->TrackPopupMenu (TPM_LEFTALIGN | TPM_RIGHTBUTTON , point.x , point.y , this);
}