浜嗚В濡備綍浣跨敤 windows API 鍑芥暟緙栫▼鍚庯紝瀵?/span> windows 搴旂敤紼嬪簭鐨勫ぇ浣撶粨鏋勬鏋舵湁鍒濇鐨勮璇嗐備絾鏄洿鎺ヤ嬌鐢?/span> windows API 榪涜緙栫▼紼嬪簭鍛橀渶瑕佽嚜宸辯紪鍐欏ぇ閲忎唬鐮併傚儚鎴戣繖縐嶄粠涓寮濮嬫帴瑙︾▼搴忓紑鍙戝氨鏄涔犵殑 OO 鐨勪漢鏉ヨ錛屽疄鍦ㄦ槸鏃犳硶蹇嶅彈銆備粠鐜板湪寮濮嬶紝鎴戞妸閲嶇偣杞埌 VC++ 鐨勫彟涓鏂歸潰錛屽埄鐢?/span> MFC 榪涜鍜屽悜瀵兼潵緙栧啓 windows 紼嬪簭銆?/span>
MFC 錛?/span> Microsoft Foundation Class 錛?/span> 鏄敤鏉ョ紪鍐?/span> windows 搴旂敤紼嬪簭鐨?/span> C++ 綾婚泦錛屽畠?yōu)畞瑁呬簡澶ч噺鐨?/span> windows API 鍑芥暟鍜?/span> windows 鎺т歡錛屽茍涓斾互灞傛緇撴瀯緇勭粐璧鋒潵銆備嬌紼嬪簭鍛樺湪寮鍙戞椂鑳芥柟渚跨殑榪涜浠g爜閲嶇敤錛屽姞蹇紑鍙戦熷害騫舵彁楂樹唬鐮佺殑鍙潬鎬с?/span>
搴旇娉ㄦ剰鐨勬槸 MFC 鏄?/span> 浣跨敤C++璇█瀹炵幇鐨勪竴涓?strong>綾誨簱錛屼絾騫墮潪鏄繘琛?/span>GUI紼嬪簭璁捐鐨勫敮涓鏍囧噯銆?/span>
鏈?/span> OO 鍩虹鎴栬呮槸瀛︿範榪?/span> JAVA 璇█鐞嗚В MFC 鐨勪綋緋葷粨鏋勪細姣旇緝杞繪澗銆傜洰鍓嶏紝 MFC 涓寘鍚簡澶х害 100 澶氫釜綾伙紝閫氳繃瀹氫箟綾誨璞″茍璋冪敤瀵硅薄鐨勬垚鍛樺嚱鏁版潵瀹炵幇鐩稿簲鐨勫姛鑳姐?/span>
涓嬮潰綆瑕佷粙緇嶄竴涓?/span> MFC 鐨勭被緇勭粐緇撴瀯錛?/span>
1.聽聽聽聽聽聽聽聽 鏍圭被 CObject
MFC 涓粷澶у鏁扮被鍜岃嚜瀹氫箟瀛愮被鐨勬牴綾伙紝瀹冩彁渚涗簡璁稿緙栫▼鎵闇瑕佺殑鍏叡鎿嶄綔濡傦細瀵硅薄寤虹珛鍜屽垹闄ゃ佷覆琛屽寲鏀寔銆佸璞¤瘖鏂佽繍琛屾椂淇℃伅浠ュ強闆嗗悎綾葷殑鍏煎絳?/span>
2.聽聽聽聽聽聽聽聽 鍛戒護鐩稿叧綾?/span> CCmdTarget
瀹冩槸 CObject 鐨勭洿鎺ュ瓙綾伙紝瀹冩槸 MFC 涓叿鏈夋秷鎭槧灝勫睘鎬х殑鍩虹被銆備竴鑸緢灝戦渶瑕佺▼搴忓憳鐩存帴浠?/span> CcmdTarget 鐩存帴媧劇敓鏂扮被銆?/span>
3.聽聽聽聽聽聽聽聽 綰跨▼鍩虹被 CWinThread
鎵鏈夌嚎紼嬬殑鍩虹被錛屽彲浠ョ洿鎺ヤ嬌鐢紝瀹冨皝瑁呬簡鎿嶄綔緋葷粺鐨勭嚎紼嬪寲鍔熻兘銆?/span>
4.聽聽聽聽聽聽聽聽 紿楀彛搴旂敤紼嬪簭綾?/span> CWinApp
姣忎釜搴旂敤紼嬪簭鏈変笖鍙湁涓涓簲鐢ㄧ▼搴忓璞★紝鍦ㄨ繍琛岀▼搴忎腑璇ュ璞′笌鍏跺畠瀵硅薄鐩鎬簰鍗忚皟錛岃瀵硅薄浠?/span> CwinApp 綾諱腑媧劇敓鑰屾潵銆傚畠?yōu)畞瑁呬簡鍒濆鍖栧Q岃繍琛岋紝緇堟搴旂敤紼嬪簭鐨勪唬鐮併?/span>
5.聽聽聽聽聽聽聽聽 鏂囨。 / 瑙嗙被 CDocument/CView
鏂囨。瀵硅薄鐢辨枃妗fā鏉垮璞″垱寤猴紝綆$悊搴旂敤紼嬪簭鐨勬暟鎹?/span> CDocument 鏀寔鏍囧噯鐨勬枃妗f搷浣滐紝榪欎簺鎿嶄綔鍖呮嫭鏂囨。鍒涘緩銆佷笅杞姐佷繚瀛樼瓑銆備竴涓簲鐢ㄧ▼搴忓彲浠ユ搷浣滃縐嶆枃妗g被鍨嬶紝姣忎竴縐嶆枃妗g被鍨嬮兘鏈夌壒瀹氱殑鏂囨。妯℃澘錛?/span> document template 錛夈?/span>
鐢ㄦ埛閫氳繃鏂囨。鍜岀浉鍏寵仈鐨勮鍥懼璞★紙 CView object 錛変笌鏂囨。榪涜浜や簰銆備竴涓鍥炬樉紺烘枃妗d腑鐨勪俊鎭紝騫舵妸鐢ㄦ埛鍦ㄦ鏋剁獥鍙e唴鐨勬搷浣滆漿鎹㈡垚瀵規(guī)枃妗f搷浣滅殑鐩稿簲鍛戒護銆傚綋鐢ㄦ埛鎵撳紑涓涓枃妗f椂錛屽簲鐢ㄧ▼搴忓疄闄呬笂鍒涘緩浜嗕竴涓鍥懼茍鎶婅繖涓鍥懼拰鐩稿簲鐨勬枃妗h仈緋誨湪涓璧楓備竴涓鍥懼厖褰撲簡娌熼氱敤鎴峰拰鏂囨。瀵硅薄鐨勪腑闂存ˉ姊佺殑浣滅敤銆?/span>
6.聽聽聽聽聽聽聽聽 鍙瀵硅薄綾?/span> CWnd
璇ョ被鎻愪緵浜?/span> MFC 涓墍鏈夌獥鍙g被鐨勫熀鏈姛鑳斤紝瀹冪殑娑堟伅鏄犲皠鏈哄埗闅愯棌浜嗙獥鍙?b style="">鍑芥暟 WndProc 銆備竴涓?/span> windows 娑堟伅閫氳繃娑堟伅鏄犲皠鍙戦佸埌鐩稿簲鐨?/span> CWnd 綾葷殑 OnMessage 鎴愬憳鍑芥暟錛岄氳繃閲嶈澆 OnMessage 鍑芥暟鏉ュ鐗瑰畾鐨勬秷鎭繘琛屽鐞嗐?/span>
CWnd 綾繪湁璁稿緇忓父浣跨敤鐨勫瓙綾伙紝濡?/span> CMenu 綾伙紝 CDialog 綾伙紝 CButton 綾葷瓑絳夈?/span>
7.聽聽聽聽聽聽聽聽 閫氱敤綾?/span>
閫氱敤綾繪彁渚涗簡璁稿鍏辯敤鏈嶅姟錛屼緥濡傛枃浠?/span> I/O 錛?/span> CFile 綾誨拰 CArchive 綾伙級銆佸紓甯稿鐞嗭紙 CException 綾伙級絳夈?/span>
8.聽聽聽聽聽聽聽聽 OLE 綾?/span>
OLE1.0 瑙勮寖鏄?/span> MS 鍦?/span> 1991 騫村彂甯冪殑銆傚畠鏄鐞嗗鍚堟枃妗g殑涓縐嶆柟娉曪細 Object Linking and Embedding 鎶鏈傛墍璋撳鍚堟枃妗o紝灝辨槸鍦ㄤ竴涓枃妗d腑鍚屾椂淇濆瓨浜嗗鏂囨湰銆佸浘鍍忓拰澹伴煶絳夊縐嶄笉鍚岀被鍨嬬殑鏁版嵁錛岃岃繖浜涙暟鎹張鍙互閫氳繃涓嶅悓鐨勫簲鐢ㄧ▼搴忕敤涓嶅悓鐨勬牸寮忎駭鐢熴?/span>
1993 騫村彂甯冪殑 OLE2.0 鏄熀鏈璞$殑涓鏁村浣撶郴緇撴瀯錛岃兘澶熸墿灞曘佸畾鍒跺拰澧炲己鏈嶅姟鍔熻兘錛屽畠鐨勭悊璁哄熀紜鏄?/span> COM 鎶鏈?/span>
姝ゅ錛?/span> ActiveX 涔熸槸涓縐嶅 OLE 鎶鏈殑鎵╁睍錛屽畠浣?/span> OLE 榪涘叆 Internet 鍜?/span> Intranet 銆?/span>
9.聽聽聽聽聽聽聽聽 ODBC 綾?/span>
涓轟簡鏀寔甯︽湁 ODBC 椹卞姩紼嬪簭鐨勫悇縐嶆暟鎹簱綆$悊緋葷粺錛?/span> MFC 涔熸彁渚涗簡 Cdatabase 鍜?/span> CRecordset 綾伙紝鐢ㄤ簬綆$悊鏁版嵁搴撶殑榪炴帴鍙婂叾鎿嶄綔銆?/span>
10.聽聽聽聽 MFC 涓叏灞鍑芥暟鍜屽彉閲?/span>
鍦?/span> MFC 涓彁渚涚殑鍏ㄥ眬鍑芥暟鍜屽彉閲忎竴鑸兘浠?/span> Afx 寮澶達紝瀹冧滑鍙互鍦?/span> MFC 搴旂敤紼嬪簭鐨勪換鍔″湴鏂逛腑浣跨敤錛屽錛?/span> AfxAbort 銆?/span> AfxMessageBox 絳夌瓑銆?/span>
鍦ㄤ嬌鐢?/span> VC 鐢熸垚 MFC 搴旂敤紼嬪簭鏃訛紝 IDE 浼氳嚜鍔ㄧ敓鎴愯澶氫唬鐮侊紝浠ヤ竴涓畝鍗曠殑瀵硅瘽妗嗙▼搴忎負渚嬶紝灝嗕細鏈夊涓嬪嚑涓富瑕佺殑鏂囦歡錛?/span>
stdafx.h/cpp 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 鏍囧噯緋葷粺鍖呭惈鏂囦歡錛屾垨鏄父浣跨敤浣嗕笉甯告洿鏀圭殑
MFCles1.h/.cpp聽聽聽聽聽聽聽聽聽聽聽 搴旂敤紼嬪簭綾?/span>
MFCles1Dlg.h/cpp聽聽聽聽聽聽聽 瀵硅瘽妗嗙被
Resource.h聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 璧勬簮澶存枃浠訛紝琚?/span> MFCles1.rc 鎵浣跨敤
聼聽聽聽聽聽聽聽聽聽聽
MFC
搴旂敤紼嬪簭鐨勪竴鑸粨鏋?/span>
灝辮璁℃ā寮忔潵鐪嬶紝 MFC 搴旂敤紼嬪簭鏄竴涓爣鍑嗙殑鍗曚緥妯″紡銆傛瘡涓涓簲鐢ㄧ▼搴忔湁涓斾粎鏈変竴涓疄渚嬪璞★細 theApp
紼嬪簭鎵ц鐨勫熀鏈祦紼嬶紝灝辨垜鐜板湪鐨勭悊瑙h岃█錛?/span>
棣栧厛搴旇浠庡湪搴旂敤紼嬪簭浣撶郴緇撴瀯綾諱腑澹版槑鐨勪竴涓叏灞瀹炰緥瀵硅薄
theApp
鍏ユ墜錛圕++閲岀殑鍏ㄥ眬綾誨璞″垵濮嬪寲鍦╩ain鍑芥暟涔嬪墠錛夛紝鍦ㄨ繘鍏WinApp綾葷殑鏋勯犲嚱鏁頒箣鍚庯紝紼嬪簭鎵嶈繘鍏ュ師鏉indows銆API閲岀殑閭d釜鍏ュ彛鍑芥暟錛?b>AfxWinMain銆?/span>
鎴戜滑鍦ㄥ啓MFC紼嬪簭鏃?/span>騫?span style="font-family: 瀹嬩綋;">娌℃湁鏄劇ず鐨勬寚鍑?/span>WinMain鍏ュ彛鍑芥暟鐨勪綅緗傝繖涓嚱鏁扮殑瀹氫箟琚畨緗湪浜咥PPMODUL.CPP鏂囦歡閲岋紙榪欎竴鏂囦歡浣嶄簬VS瀹夎鐩綍涓嬬殑VC98鐩綍閲岀殑MFC婧愭枃浠墮噷錛?/span>銆傛瘡涓?/span>app瀹炰緥琚瀯閫犲悗錛屼細浜ц皟鐢ㄧ浉搴旂殑InitInstance鍑芥暟榪涜鍒濆鍖栥傚師鏉ョ殑娉ㄥ唽紿楀彛綾?/b>鐨勫伐浣滆鏀懼湪浜哤INCORE.CPP鏂囦歡閲岀殑AfxEndDeferRegisterClass鍑芥暟錛岃繖閲孧FC宸茬粡涓烘垜浠畾涔夊ソ浜嗗嚑縐嶉粯璁ょ殑紿楀彛綾匯傜劧鍚庡氨浼氳皟鐢?b>CPreCreateWnd鍑芥暟榪涜紿楀彛鐨勬樉紺哄伐浣溿傛渶鍚庯紝浣跨敤CWinThread錛氾細Run鏂規(guī)硶鍚姩娑堟伅寰幆錛岃嚦姝わ紝鏁翠釜紿楀彛搴旂敤紼嬪簭灝辮繍琛岃搗鏉ヤ簡銆?span lang="EN-US">windows搴旂敤紼嬪簭鍙互琚悓鏃跺嬈¤繍琛岋紝絎竴嬈¤繍琛屽畬鎴愬垵濮嬪寲宸ヤ綔鍚庯紝浠ュ悗姣忔榪愯紼嬪簭鎷瘋礉閮藉叏璋冪敤InitInstance鍑芥暟榪涜鍒濆鍖栧伐浣溿?span lang="EN-US">
class CMFCles1App : public CWinApp
{
public:
聽聽聽聽聽聽 CMFCles1App();
// 閲嶅啓涓浜涚埗綾繪柟娉?/span>
聽聽聽聽聽聽 public:
聽聽聽聽聽聽 virtual BOOL InitInstance();
// 瀹炵幇娑堟伅鏄犲皠鐨勫畯
聽聽聽聽聽聽 DECLARE_MESSAGE_MAP()
};
extern CMFCles1App theApp;// 浠g爜搴旂敤紼嬪簭鏈韓
浠ヤ竴涓畝鍗曠殑瀵硅瘽妗嗙▼搴忎負渚嬶紝鍦?span lang="EN-US">InitInstance鍑芥暟閲屽畬鎴愪簡浠ヤ笅宸ヤ綔
CMFCles1Dlg dlg;
聽聽聽 m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
絎竴琛屽0鏄庝簡涓涓璇濇綾誨璞★紝絎簩琛屽皢鍏惰祴鍊肩粰褰撳墠搴旂敤紼嬪簭綾葷殑鎴愬憳鍙橀噺錛岃繖鏄竴涓寚鍚戜富紿楀彛鐨勬寚閽堬紝鏈鍚庝竴琛屾樉紺虹獥鍙c?span lang="EN-US">
浜嗚В浜嗕竴鐐瑰叧浜庡簲鐢ㄧ▼搴忕被鐨勭煡璇嗗悗錛屽啀鏉ュ垎鏋愬墿涓嬬殑涓?span lang="EN-US">GUI鏈夊叧鐨勫彟涓涓被錛岃繖閲屼嬌鐢ㄤ竴涓璇濇綾諱綔涓鐐硅鏄庛?span lang="EN-US">
鍚屾牱錛?/span> MFCles1Dlg 鍒欐淳鐢熻嚜 CDialog 綾?/span>
class CMFCles1Dlg : public CDialog
{
public:
聽聽聽聽聽聽 CMFCles1Dlg(CWnd* pParent = NULL);聽聽聽 // 鏍囧噯鏋勯犲嚱鏁?/span>
protected:
聽聽聽聽聽聽 HICON m_hIcon;// 搴旂敤紼嬪簭鍥炬爣鐨勫彞鏌?/span>
DECLARE_MESSAGE_MAP()
聽聽聽聽聽聽 // 鐢熸垚鐨勬秷鎭槧灝勫嚱鏁?/span>
聽聽聽聽聽聽 virtual BOOL OnInitDialog();
聽聽聽聽聽聽 afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
聽聽聽聽聽聽 afx_msg void OnPaint();
聽聽聽聽聽聽 afx_msg HCURSOR OnQueryDragIcon();
};
DECLARE_MESSAGE_MAP() 鏄竴涓敤鏉ュ畾涔夋秷鎭槧灝勭殑瀹忥紝鑰屼笅闈互 afx_msg 寮澶寸殑鍑芥暟閮芥槸娑堟伅鐨勫搷搴斿嚱鏁幫紝榪欐瘮璧?/span> API 閲岄潰鎶婃秷鎭兘鍐欏湪涓浜?/span> switch 璇彞涓鏇存竻妤氾紝涔熸柟渚夸簡淇敼銆傝瀹炵幇瀵硅瘽妗嗗娑堟伅鐨勫搷搴旇繕闇瑕佸湪綾諱腑鍔犱笂榪欎袱琛?/span>
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
鎵鏈夌殑娑堟伅鏄犲皠鍑芥暟閮借鍐欏湪榪欎袱琛屼箣闂達紝渚嬪ON_WM_RBUTTONDOWN( )灝卞畾涔変簡涓涓彸閿寜涓嬬殑娑堟伅鏄犲皠銆?span lang="EN-US">MFC宸茬粡鏈変簡棰勫畾涔夊ソ浜嗚澶氭秷鎭槧灝勫嚱鏁扮殑鏍煎紡錛岄渶瑕佹煡鐪嬪彲浠ュ弬鑰?span lang="EN-US">MSDN銆?span lang="EN-US">