版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、TextOut(hDC,200,0,九九乘法表,strlen(九九乘法表); TextOut(hDC,20,20,1*1=1,strlen(1*1=1); TextOut(hDC,20,40,1*2=2 2*2=4,strlen(1*2=2 2*2=4); TextOut(hDC,20,60,1*3=3 2*3=6 3*3=9,strlen(1*3=3 2*3=6 3*3=9); TextOut(hDC,20,80,1*4=4 2*4=8 3*4=12 4*4=16,strlen(1*4=4 2*4=8 3*4=12 4*4=16); TextOut(hDC,20,100,1*5=5 2*5=
2、10 3*5=15 4*5=20 5*5=25,strlen(1*5=5 2*5=10 3*5=15 4*5=20 5*5=25); TextOut(hDC,20,120,1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36,strlen(1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36); TextOut(hDC,20,140,1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49,strlen(1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49);
3、 TextOut(hDC,20,160,1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64,strlen(1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64); TextOut(hDC,20,180,1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81,strlen(1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81); 作業(yè)上交方式作業(yè)上
4、交方式 你的工程名為 學(xué)號(hào)_*(*分別用1,2,3等代表第一次作業(yè))例如: 學(xué)號(hào)為1108320126,則第一次作業(yè)的工程名為1108320126_1,則編譯鏈接后會(huì)形成子目錄1108320126_1 ,其中該目錄下會(huì)有debug子目錄,將debug子目錄刪除,然后將1108320126_1整個(gè)目錄壓縮成一個(gè)文件發(fā)到郵箱。MFC程序的運(yùn)行機(jī)制程序的運(yùn)行機(jī)制 SDK程序的運(yùn)行過程程序的運(yùn)行過程 進(jìn)入進(jìn)入WinMainWinMain后,首先設(shè)計(jì)窗口類,注冊窗口、后,首先設(shè)計(jì)窗口類,注冊窗口、創(chuàng)建窗口、然后顯示窗口、更新窗口、最后進(jìn)創(chuàng)建窗口、然后顯示窗口、更新窗口、最后進(jìn)入消息循環(huán),將消息路由到我們
5、的窗口過程函入消息循環(huán),將消息路由到我們的窗口過程函數(shù)中去處理數(shù)中去處理 。MFC程序的啟動(dòng)與死亡順序程序的啟動(dòng)與死亡順序單文檔應(yīng)用程序單文檔應(yīng)用程序WinGreet中使用到的類中使用到的類文檔模板類:文檔模板類:直接使直接使用,管理文檔、視圖用,管理文檔、視圖和框架和框架文檔類:文檔類:負(fù)責(zé)數(shù)據(jù)負(fù)責(zé)數(shù)據(jù)結(jié)構(gòu)與文件操作結(jié)構(gòu)與文件操作應(yīng)應(yīng)用用類類框架類框架類:主窗口主窗口視圖類:視圖類:負(fù)責(zé)數(shù)據(jù)負(fù)責(zé)數(shù)據(jù)的顯示與打印的顯示與打印狀態(tài)欄和工具欄直狀態(tài)欄和工具欄直接使用接使用MFC程序的啟動(dòng)程序的啟動(dòng)1、創(chuàng)建、創(chuàng)建Applicationobject對(duì)象對(duì)象theApp程序一開始生產(chǎn)一個(gè)程序一開始生產(chǎn)一
6、個(gè)( (且只有一個(gè)且只有一個(gè)) )應(yīng)用類對(duì)象應(yīng)用類對(duì)象 theApptheApp,也即一個(gè)也即一個(gè)CWinAppCWinApp對(duì)象,這個(gè)全局對(duì)象一產(chǎn)生,便執(zhí)行其對(duì)象,這個(gè)全局對(duì)象一產(chǎn)生,便執(zhí)行其構(gòu)造函數(shù),導(dǎo)致其基類構(gòu)造函數(shù),導(dǎo)致其基類CWinAppCWinApp類的構(gòu)造函數(shù)被調(diào)用。該類的構(gòu)造函數(shù)被調(diào)用。該函數(shù)定義于函數(shù)定義于APPCORE.CPPAPPCORE.CPP第第7575行,因此,行,因此,CWinAppCWinApp之中的之中的成員變量將因?yàn)槌蓡T變量將因?yàn)閠heApptheApp這個(gè)全局對(duì)象的誕生而獲得配置這個(gè)全局對(duì)象的誕生而獲得配置與初值與初值在在SDKSDK編程時(shí),是通過一個(gè)應(yīng)用
7、程序的實(shí)例號(hào)來標(biāo)示一個(gè)應(yīng)用程序編程時(shí),是通過一個(gè)應(yīng)用程序的實(shí)例號(hào)來標(biāo)示一個(gè)應(yīng)用程序的。在基于的。在基于MFCMFC應(yīng)用程序中,是通過產(chǎn)生一個(gè)應(yīng)用類的對(duì)象來唯一應(yīng)用程序中,是通過產(chǎn)生一個(gè)應(yīng)用類的對(duì)象來唯一標(biāo)識(shí)我們的整個(gè)應(yīng)用程序標(biāo)識(shí)我們的整個(gè)應(yīng)用程序。MFC程序的啟動(dòng)程序的啟動(dòng)2、WinMain登場登場用用SDK編程序時(shí),程序的入口點(diǎn)是編程序時(shí),程序的入口點(diǎn)是WinMain函數(shù),函數(shù),而在而在MFC程序里我們并沒有看到程序里我們并沒有看到WinMain函數(shù),函數(shù),原原來她是被隱藏在來她是被隱藏在MFC代碼里面了。當(dāng)代碼里面了。當(dāng)theApp配置完配置完成后,成后,WinMain登場。登場。MFC早
8、已準(zhǔn)備好并由鏈接器直早已準(zhǔn)備好并由鏈接器直接加到應(yīng)用程序代碼中了,原來她在接加到應(yīng)用程序代碼中了,原來她在appmodul.cpp里面。里面。MFC程序的啟動(dòng)程序的啟動(dòng)APPMODUL.CPP摘出來的代碼摘出來的代碼 _tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow)/callshared/exportedWinMainreturnAfxWinMain(hInstance,hPrevInstance,lpCmdLine,nCmdShow);_tWinMain函數(shù)的函數(shù)的“_t”是為了支
9、持是為了支持Unicode而準(zhǔn)備的一個(gè)而準(zhǔn)備的一個(gè)宏宏 MFC程序的啟動(dòng)程序的啟動(dòng)AfxWinMain函數(shù)定義于函數(shù)定義于WINMAIN.CPP第第21行行intAFXAPIAfxWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow)intnReturnCode=-1;CWinApp*pApp=AfxGetApp();AfxWinInit(hInstance,hPrevInstance,lpCmdLine,nCmdShow);pApp-InitApplication();pApp-InitIn
10、stance()nReturnCode=pApp-Run();AfxWinTerm();returnnReturnCode;MFC程序的啟動(dòng)程序的啟動(dòng)AfxGetApp()函數(shù)是取得函數(shù)是取得CWinGreetApp對(duì)象指針,故上面函對(duì)象指針,故上面函數(shù)第數(shù)第4至至6行相當(dāng)于調(diào)用:行相當(dāng)于調(diào)用:CWinGreetApp:InitApplication();CWinGreetApp:InitInstance()CWinGreetApp:Run();因而導(dǎo)致調(diào)用:因而導(dǎo)致調(diào)用:CWinApp:InitApplication();/因?yàn)橐驗(yàn)镃WinGreetApp并沒有改寫并沒有改寫InitAppl
11、icationCWinGreetApp:InitInstance()/因?yàn)橐驗(yàn)镃WinGreetApp改寫了改寫了InitInstanceCWinApp:Run();/因?yàn)橐驗(yàn)镃WinGreetApp并沒有改寫并沒有改寫RunMFC程序的啟動(dòng)程序的啟動(dòng)3 3、AfxWinInitAfxWinInitAFXAFX內(nèi)部初始化操作內(nèi)部初始化操作AfxWinInitAfxWinInit是繼是繼CWinAppCWinApp構(gòu)造函數(shù)之后的第一個(gè)操作構(gòu)造函數(shù)之后的第一個(gè)操作,主要做的是,主要做的是AFXAFX內(nèi)部初始化操作內(nèi)部初始化操作4 4、執(zhí)行、執(zhí)行CWinApp:InitApplicationCWin
12、App:InitApplication AfxWinInitAfxWinInit之后的操作是之后的操作是pApp-InitApplicationpApp-InitApplication 而而pApppApp指向指向CWinGreetAppCWinGreetApp對(duì)象,所以對(duì)象,所以相當(dāng)于調(diào)用:相當(dāng)于調(diào)用: CWinGreetApp:InitApplication();CWinGreetApp:InitApplication(); 而而CWinGreetAppCWinGreetApp繼承自繼承自CWinApp, InitApplicationCWinApp, InitApplication又是又
13、是CWinAppCWinApp的一個(gè)虛擬函數(shù),我們并沒有改寫它的一個(gè)虛擬函數(shù),我們并沒有改寫它( (大大部分情況下不需改寫它部分情況下不需改寫它) ),所以上述操作相當(dāng)于調(diào)用,所以上述操作相當(dāng)于調(diào)用CWinApp:InitApplication(); MFCCWinApp:InitApplication(); MFC完成內(nèi)部管理完成內(nèi)部管理MFC程序的啟動(dòng)程序的啟動(dòng)5、執(zhí)行、執(zhí)行CWinApp:InitInstance繼繼InitApplication函數(shù)之后,函數(shù)之后,AfxWinMain調(diào)用調(diào)用pApp-InitInstance。當(dāng)程序調(diào)用:當(dāng)程序調(diào)用:pApp-InitInstance(
14、);相當(dāng)于調(diào)用:相當(dāng)于調(diào)用:CWinGreetApp:InitInstance();而而CWinGreetApp繼承自繼承自CWinApp,而而InitInstance又是又是CWinApp的一個(gè)虛擬函數(shù)。由于我們改寫了它的一個(gè)虛擬函數(shù)。由于我們改寫了它,所以上述操作就是調(diào)用我們自己,所以上述操作就是調(diào)用我們自己(CWinGreetApp)的這個(gè)的這個(gè)InitInstance函數(shù)。函數(shù)。MFC程序的啟動(dòng)程序的啟動(dòng)6、窗口注冊及窗口創(chuàng)建、窗口注冊及窗口創(chuàng)建在在CWinGreetApp:InitInstance函數(shù)內(nèi)有函數(shù)內(nèi)有ProcessShellCommand(cmdInfo)這個(gè)函數(shù),在這個(gè)
15、這個(gè)函數(shù),在這個(gè)函數(shù)內(nèi)實(shí)現(xiàn)函數(shù)內(nèi)實(shí)現(xiàn)窗口的注冊窗口的注冊,窗口的創(chuàng)建窗口的創(chuàng)建?!咀⒁庾⒁狻坑捎诳蚣?、視圖、工具條和狀態(tài)條都是窗口,由于框架、視圖、工具條和狀態(tài)條都是窗口,所以在這個(gè)過程中都要?jiǎng)?chuàng)建這些窗口。所以在這個(gè)過程中都要?jiǎng)?chuàng)建這些窗口。MFC程序的啟動(dòng)程序的啟動(dòng)剖析剖析ProcessShellCommand(cmdInfo)函數(shù)函數(shù)(1)DOCTEMPL.CPP的的264行行CFrameWnd*pFrame=(CFrameWnd*)m_pFrameClass-CreateObject();在這個(gè)函數(shù)內(nèi)會(huì)通過在這個(gè)函數(shù)內(nèi)會(huì)通過new算子創(chuàng)建框架類算子創(chuàng)建框架類CMainFrame。先調(diào)用基類
16、先調(diào)用基類CFrameWnd的構(gòu)造函數(shù),再調(diào)用的構(gòu)造函數(shù),再調(diào)用CMainFrame的構(gòu)的構(gòu)造函數(shù),接著調(diào)用狀態(tài)條類造函數(shù),接著調(diào)用狀態(tài)條類CStatusBar的構(gòu)造函數(shù)和工具條類的構(gòu)造函數(shù)和工具條類CToolBar的構(gòu)造函數(shù)。的構(gòu)造函數(shù)。MFC程序的啟動(dòng)程序的啟動(dòng)DOCTEMPL.CPP的的277行行(2)pFrame-LoadFrame(m_nIDResource,WS_OVERLAPPEDWINDOW|FWS_ADDTOTITLE,NULL,&context)在這個(gè)函數(shù)內(nèi)完成窗口類的注冊,產(chǎn)生主窗口并加掛菜單等諸元在這個(gè)函數(shù)內(nèi)完成窗口類的注冊,產(chǎn)生主窗口并加掛菜單等諸元素,并指定
17、窗口標(biāo)題、文件標(biāo)題、文件擴(kuò)展名等。素,并指定窗口標(biāo)題、文件標(biāo)題、文件擴(kuò)展名等。該函數(shù)內(nèi)部將依次調(diào)用該函數(shù)內(nèi)部將依次調(diào)用AfxDeferRegisterClass,Create,后者,后者將調(diào)用將調(diào)用CreateWindowEx,于是觸發(fā),于是觸發(fā)WM_CREATE消息。消息。MFC程序的啟動(dòng)程序的啟動(dòng)a)AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG)它是個(gè)宏,實(shí)際調(diào)用它是個(gè)宏,實(shí)際調(diào)用AfxEndDeferRegisterClass函數(shù)。函數(shù)。#defineAfxDeferRegisterClass(fClass)AfxEndDeferRegiste
18、rClass(fClass)定義于定義于AFXIMPL.H中的宏中的宏這個(gè)函數(shù)進(jìn)一步調(diào)用這個(gè)函數(shù)進(jìn)一步調(diào)用AfxRegisterClass(pWndCls);來完成來完成窗口窗口類的注冊類的注冊。在在MFC中,預(yù)先給我們定義好了缺省的窗口類,我們只需調(diào)用中,預(yù)先給我們定義好了缺省的窗口類,我們只需調(diào)用AfxEndDeferRegisterClass去注冊就可以。它會(huì)根據(jù)我們的應(yīng)去注冊就可以。它會(huì)根據(jù)我們的應(yīng)用程序選擇不同的窗口去注冊。用程序選擇不同的窗口去注冊。MFC程序的啟動(dòng)程序的啟動(dòng)b)在在Create中會(huì)調(diào)用中會(huì)調(diào)用CreateWindowEx,于是觸發(fā)于是觸發(fā)WM_CREATE消息。消
19、息。由于在由于在CMainFrame中攔截了中攔截了WM_CREATE消息消息(利用(利用ON_WM_CREATE宏),所以宏),所以WM_CREATE消息產(chǎn)生之消息產(chǎn)生之際會(huì)調(diào)用際會(huì)調(diào)用CMainFrame類的類的OnCreate函數(shù)。在此函數(shù)內(nèi)先調(diào)用函數(shù)。在此函數(shù)內(nèi)先調(diào)用基類基類CFrameWnd的的OnCreate函數(shù),然后為主窗口掛上工具條函數(shù),然后為主窗口掛上工具條和狀態(tài)條。和狀態(tài)條。而在而在CFrameWnd:OnCreate中會(huì)創(chuàng)建視圖(中會(huì)創(chuàng)建視圖(CView)窗口)窗口MFC程序的啟動(dòng)程序的啟動(dòng)7、窗口顯示與更新、窗口顯示與更新窗口創(chuàng)建完成后,窗口創(chuàng)建完成后,回到回到Init
20、Instance,執(zhí)行執(zhí)行ShowWindow顯示窗口,顯示窗口,執(zhí)行執(zhí)行UpdateWindow發(fā)送發(fā)送WM_PAINT更新窗口。更新窗口。8、消息循環(huán)、消息循環(huán)InitInstance結(jié)束,回到結(jié)束,回到AfxWinMain,執(zhí)行,執(zhí)行Run,進(jìn)入消息循環(huán)。,進(jìn)入消息循環(huán)。MFC程序的啟動(dòng)程序的啟動(dòng)intAFXAPIAfxWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow)intnReturnCode=-1;CWinApp*pApp=AfxGetApp();AfxWinInit(hIns
21、tance,hPrevInstance,lpCmdLine,nCmdShow);pApp-InitApplication();pApp-InitInstance()nReturnCode=pApp-Run();AfxWinTerm();returnnReturnCode;MFC程序的運(yùn)行程序的運(yùn)行在在Run()中會(huì)調(diào)用()中會(huì)調(diào)用PumpMessageBOOLCWinThread:PumpMessage()if(!:GetMessage(&m_msgCur,NULL,NULL,NULL)returnFALSE;MFC程序的運(yùn)行程序的運(yùn)行/processthismessageif(m_m
22、sgCur.message!=WM_KICKIDLE&!PreTranslateMessage(&m_msgCur):TranslateMessage(&m_msgCur);:DispatchMessage(&m_msgCur);returnTRUE;MFC程序的運(yùn)行程序的運(yùn)行在在SDK程序中,消息是通過窗口函程序中,消息是通過窗口函數(shù)來處理,而現(xiàn)在窗口函數(shù)在哪里、數(shù)來處理,而現(xiàn)在窗口函數(shù)在哪里、又如何送到窗口函數(shù)手中呢?又如何送到窗口函數(shù)手中呢?MFC程序的運(yùn)行程序的運(yùn)行在執(zhí)行在執(zhí)行AfxEndDeferRegisterClass函數(shù),注冊窗口類時(shí),可函數(shù),注
23、冊窗口類時(shí),可以看到窗口過程函數(shù)以看到窗口過程函數(shù)wndcls.lpfnWndProc=DefWindowProc;雖然窗口過程函數(shù)被指定為雖然窗口過程函數(shù)被指定為DefWindowProc,但事實(shí)上并不是,但事實(shí)上并不是所有的消息都是交給缺省的窗口過程處理,而是采用轉(zhuǎn)換,即一所有的消息都是交給缺省的窗口過程處理,而是采用轉(zhuǎn)換,即一種種消息映射機(jī)制,消息映射機(jī)制,通過消息響應(yīng)函數(shù)來處理消息。通過消息響應(yīng)函數(shù)來處理消息。MFC程序的運(yùn)行程序的運(yùn)行消息映射機(jī)制消息映射機(jī)制-把消息與處理函數(shù)連接在一起把消息與處理函數(shù)連接在一起提供更方便的程序接口,讓程序員可以很方便建立消息和處理程提供更方便的程序接
24、口,讓程序員可以很方便建立消息和處理程序的對(duì)應(yīng)關(guān)系。序的對(duì)應(yīng)關(guān)系。這個(gè)方便的接口是通過兩組宏來實(shí)現(xiàn)的。這個(gè)方便的接口是通過兩組宏來實(shí)現(xiàn)的。首先在類聲明(首先在類聲明(.h文件)中文件)中結(jié)合結(jié)合DECLARE_MESSAGE_MAP()宏給出處理函數(shù),宏給出處理函數(shù),再在相應(yīng)的再在相應(yīng)的.CPP文件中文件中(當(dāng)然不能在函數(shù)之內(nèi)當(dāng)然不能在函數(shù)之內(nèi))使用使用BEBIN_MESSAGE_MAP()和和END_MESSAGE_MAP()宏把相應(yīng)宏把相應(yīng)的消息加入去的消息加入去MFC程序的運(yùn)行程序的運(yùn)行消息的種類與消息與函數(shù)間的對(duì)應(yīng)關(guān)系消息的種類與消息與函數(shù)間的對(duì)應(yīng)關(guān)系MFC程序的運(yùn)行程序的運(yùn)行標(biāo)準(zhǔn)標(biāo)準(zhǔn)
25、Windows消息(消息(WM_XXX)的對(duì)應(yīng)規(guī)則的對(duì)應(yīng)規(guī)則宏名稱對(duì)應(yīng)關(guān)系消息處理函數(shù)(名稱已由系統(tǒng)默認(rèn))ON_WM_CHARWM_CHAROnCharON_WM_CREATEWM_CREATEOnCreateON_WM_CLOSEWM_CLOSEOnCloseON_WM_LBUTTONDOWM WM_LBUTTONDOMWOnLButtonDownON_WM_PAINTWM_PAINTOnPaintMFC程序的運(yùn)行程序的運(yùn)行命令消息(命令消息(WM_COMMAND)的一般性對(duì)應(yīng)規(guī)則的一般性對(duì)應(yīng)規(guī)則ON_COMMAND(,)如如ON_COMMAND(IDM_ABOUT,OnAbout)ON_C
26、OMMAND(IDM_FILENEW,OnFileNew)ON_COMMAND(IDM_FILEOPEN,OnFileOpen)MFC程序的運(yùn)行程序的運(yùn)行通知(通知(Notification)消息(由控件產(chǎn)生)的對(duì))消息(由控件產(chǎn)生)的對(duì)應(yīng)機(jī)制分為好幾種(因?yàn)榭丶揪头譃楹脦追N)應(yīng)機(jī)制分為好幾種(因?yàn)榭丶揪头譃楹脦追N)控件宏名稱消息處理函數(shù)ButtonON_BN_CLICKED (,) memberFxnCombBoxON_CBN_DLICKED (,)memberFxnEditON_EN_SETFOCUS (,) memberFxnMFC程序的運(yùn)行程序的運(yùn)行為什么經(jīng)過這樣的宏之后,消息就會(huì)
27、自動(dòng)流往指為什么經(jīng)過這樣的宏之后,消息就會(huì)自動(dòng)流往指定的函數(shù)去呢?定的函數(shù)去呢?謎底在于謎底在于MessageMap的結(jié)構(gòu)設(shè)計(jì)的結(jié)構(gòu)設(shè)計(jì)MFC程序的啟動(dòng)程序的啟動(dòng)視圖類和框架類中都有個(gè)虛函數(shù)視圖類和框架類中都有個(gè)虛函數(shù)PreCreateWindow,他們的目的?,他們的目的?PreCreateWindow(CREATESTRUCT&cs)MFC程序的啟動(dòng)程序的啟動(dòng)PreCreateWindow函數(shù)的目的函數(shù)的目的就是讓我們在產(chǎn)生窗口前有機(jī)會(huì)去修改窗口的外觀。比如生成這就是讓我們在產(chǎn)生窗口前有機(jī)會(huì)去修改窗口的外觀。比如生成這個(gè)窗口,不想要最大化框。我們看到窗口的創(chuàng)建都是在個(gè)窗口,不想要最
28、大化框。我們看到窗口的創(chuàng)建都是在MFC的底的底層的基類中完成的,對(duì)于我們自己的類來說,沒有調(diào)用層的基類中完成的,對(duì)于我們自己的類來說,沒有調(diào)用CreateWindowEx的函數(shù)去創(chuàng)建窗口,因此它就設(shè)計(jì)了這個(gè)參數(shù)的函數(shù)去創(chuàng)建窗口,因此它就設(shè)計(jì)了這個(gè)參數(shù)讓我們有機(jī)會(huì)去修改窗口的外觀,而且定義為引用,當(dāng)我們修改讓我們有機(jī)會(huì)去修改窗口的外觀,而且定義為引用,當(dāng)我們修改結(jié)構(gòu)體的成員時(shí),在基類中會(huì)有體現(xiàn)的。這個(gè)函數(shù)在結(jié)構(gòu)體的成員時(shí),在基類中會(huì)有體現(xiàn)的。這個(gè)函數(shù)在CreateWindowEX前被調(diào)用。前被調(diào)用。CreateWindowEX函數(shù)所帶的參函數(shù)所帶的參數(shù)就是數(shù)就是CREATESTRUCT的結(jié)構(gòu)體中
29、的成員,因此就會(huì)創(chuàng)建一個(gè)的結(jié)構(gòu)體中的成員,因此就會(huì)創(chuàng)建一個(gè)符合我們要求的窗口。符合我們要求的窗口。MFC程序的來龍去脈程序的來龍去脈程序的誕生程序的誕生n應(yīng)用對(duì)象產(chǎn)生,內(nèi)存于是獲得配置應(yīng)用對(duì)象產(chǎn)生,內(nèi)存于是獲得配置nAfxWinMain執(zhí)行執(zhí)行AfxWinInt,進(jìn)行初始化設(shè)置,進(jìn)行初始化設(shè)置nAfxWinMain執(zhí)行執(zhí)行InitApplication,是個(gè)虛函數(shù),通常不改寫它,是個(gè)虛函數(shù),通常不改寫它nAfxWinMain執(zhí)行執(zhí)行InitInstance,是虛函數(shù),我們改寫它,是虛函數(shù),我們改寫它n在在InitInstance中執(zhí)行中執(zhí)行ProcessShellCommand(cmdInfo)實(shí)現(xiàn)窗實(shí)現(xiàn)窗口的注冊,創(chuàng)建。口的注冊,創(chuàng)建。n回到回到InitInstance中繼續(xù)執(zhí)行中繼續(xù)執(zhí)行ShowWindow,顯示窗口顯示窗口n執(zhí)行執(zhí)行UpdateWindow,發(fā)出,發(fā)出WM_PAINT消息。消息。n回到回到AfxWinMain,執(zhí)行,執(zhí)行Run,進(jìn)入消息循環(huán)。,進(jìn)入消息循環(huán)。MFC程序的運(yùn)行過程程序的運(yùn)行過程 MFC程序的來龍去脈程序的來龍去脈程序開始運(yùn)行程序開始運(yùn)行n程序獲得程序獲得WM_PAINT消息(消息(Run()中的()中的:PeekMessage)nWM_PAI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧博物館安防管理建設(shè)方案
- 2025年信息技術(shù)咨詢合同樣本:電子商務(wù)平臺(tái)技術(shù)升級(jí)合作協(xié)議3篇
- 二零二五年度ktv員工績效考核與激勵(lì)合同范本2篇
- 2024幼兒園教職工派遣及績效管理合同3篇
- 2025年度服裝租賃行業(yè)創(chuàng)新服務(wù)合同3篇
- 2024榨菜種植與農(nóng)村電商物流合作合同3篇
- 2025年度水電工程勞務(wù)分包合同范本12篇
- 2024年革新突破:七款合同管理工具對(duì)比
- 2024年自卸車電子產(chǎn)品運(yùn)輸合同
- 合肥橋梁隧道施工方案
- 【MOOC】隧道工程-中南大學(xué) 中國大學(xué)慕課MOOC答案
- 劇作策劃與管理智慧樹知到期末考試答案2024年
- 鐵路基礎(chǔ)知識(shí)考試題庫500題(單選、多選、判斷)
- 醫(yī)療機(jī)構(gòu)資產(chǎn)負(fù)債表(通用模板)
- 廢舊鋰離子電池高值資源化回收利用項(xiàng)目環(huán)評(píng)報(bào)告書
- 審計(jì)英語詞匯大全講課教案
- JIS G3507-1-2021 冷鐓用碳素鋼.第1部分:線材
- 初二家長會(huì)ppt通用PPT課件
- 小學(xué)生家庭作業(yè)布置存在的誤區(qū)及改進(jìn)策略論文1
- 生物醫(yī)學(xué)研究的統(tǒng)計(jì)學(xué)方法課后習(xí)題答案 2014 主編 方積乾
- 牛仔面料成本核算
評(píng)論
0/150
提交評(píng)論