




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第2章MFC應(yīng)用程序概述第2章MFC應(yīng)用程序概述本章內(nèi)容
2.2MFC應(yīng)用程序框架
2.3消息映射與消息處理
2.4程序調(diào)試
2.5應(yīng)用實例本章內(nèi)容2.2MFC應(yīng)用2.2MFC應(yīng)用程序框架下面通過一個實例介紹利用MFCAppWizard[exe]創(chuàng)建應(yīng)用程序框架的步驟。2.2.1創(chuàng)建MFC應(yīng)用程序框架2.2MFC應(yīng)用程序框架下面通過一個實例介【例2.1】編寫一個SDI單文檔應(yīng)用程序Li2_1,程序運行后,通過消息框輸出“這是一個單文檔應(yīng)用程序!”的提示信息。
(1)選擇File菜單下的New菜單項,系統(tǒng)彈出New對話框。
單擊輸入工程名保存文件路徑默認【例2.1】編寫一個SDI單文檔應(yīng)用程序Li2_1,程序運行單文檔界面(SDI)應(yīng)用程序。應(yīng)用程序運行時,只能打開一個文檔。多文檔界面(MDI)應(yīng)用程序。應(yīng)用程序可以同時打開多個文檔?;趯υ捒虻膽?yīng)用程序。應(yīng)用程序?qū)@示一個簡單的對話框來處理用戶的輸入,(2)MFCAppWizard-Step1對話框主要用于選擇應(yīng)用程序類型。AppWizard可以創(chuàng)建3種類型的應(yīng)用程序框架。語言種類是否支持文檔/視圖結(jié)構(gòu)單文檔界面(SDI)應(yīng)用程序。應(yīng)用程序運行時,只能打開一個文(3)MFCAppWizard-Step2of6對話框中主要用于選擇應(yīng)用程序所支持數(shù)據(jù)庫方式。不包含任何數(shù)據(jù)庫支持包含最低限度的數(shù)據(jù)庫支持創(chuàng)建對應(yīng)表的一個數(shù)據(jù)庫類和一個視圖類,不附加標準文件支持創(chuàng)建對應(yīng)表的一個數(shù)據(jù)庫類和一個視圖類,并附加標準文件支持(3)MFCAppWizard-Step2of6對話(4)在MFCAppWizard-Step3of6對話框中選擇應(yīng)用程序所支持的復(fù)合文檔類型。不支持任何復(fù)合文檔應(yīng)用程序作為復(fù)合文檔容器,包含可以鏈接或嵌入的ActiveX對象應(yīng)用程序僅僅可以創(chuàng)建能夠嵌入到其他應(yīng)用程序中的文檔,但是不能作為一個單獨運行的應(yīng)用程序應(yīng)用程序可以單獨運行,同時也可以作為一個對象嵌入到其他應(yīng)用程序中應(yīng)用程序能夠作為容器包含嵌入或鏈接的ActiveX對象,同時也能夠作為一個可以嵌入到其他程序中的對象(4)在MFCAppWizard-Step3of6對(5)在MFCAppWizard-Step4of6對話框中設(shè)置應(yīng)用程序的外觀特征。添加工具欄自動生成狀態(tài)欄添加打印和打印預(yù)覽菜單項在幫助菜單中自動添加索引和使用幫助菜單項使應(yīng)用程序的外觀呈三維顯示消息應(yīng)用程序接口應(yīng)用程序具有TCP/IP通信功能傳統(tǒng)風格工具條InternetExplorer風格工具條(5)在MFCAppWizard-Step4of6對(6)在MFCAppWizard-Step5of6對話框中設(shè)置應(yīng)用程序的風格。創(chuàng)建標準的MFC應(yīng)用程序創(chuàng)建類似于Windows資源管理器風格的應(yīng)用程序在生成的程序框架的源文件中加入注釋不加入注釋信息使用動態(tài)鏈接庫使用靜態(tài)鏈接庫(6)在MFCAppWizard-Step5of6(7)在MFCAppWizard-Step6of6對話框中,可以設(shè)置向?qū)傻奈募皖惷?。設(shè)置類名設(shè)置文件名(7)在MFCAppWizard-Step6of6(8)打開項目工作區(qū)中的ClassView類視圖,單擊CLi2_1View類左邊的“+”展開視圖類,雙擊打開OnDraw()函數(shù),并添加代碼。voidCLi2_1View::OnDraw(CDC*pDC){ CLi2_1Doc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere
MessageBox("這是一個單文檔應(yīng)用程序!","消息框",MB_ICONEXCLAMATION|MB_OKCANCEL);}(8)打開項目工作區(qū)中的ClassView類視圖,單擊CLi(9)選擇Build菜單中的BuildLi2_1.exe菜單項,對工程進行編譯和鏈接,生成可執(zhí)行文件。再選擇Build菜單中的ExecuteLi2_1.exe菜單命令運行程序。(9)選擇Build菜單中的BuildLi2_1.exeMFC概述
MFC是用來編寫Windows應(yīng)用程序的C++類集,該類集以層次結(jié)構(gòu)組織起來,其中封裝了大部分WindowsAPI函數(shù)和Windows控件,它所包含的功能涉及到整個Windows操作系統(tǒng)。MFC不僅為用戶提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件。MFC概述MFC是用來編寫Windows應(yīng)用程MFC還很好地保持了程序的向下兼容性用來編寫Windows應(yīng)用程序的C++類集以層次結(jié)構(gòu)組織封裝了大部分API函數(shù)提供了圖形環(huán)境下應(yīng)用程序的框架提供了創(chuàng)建應(yīng)用程序的組件提供了大量的基類供程序員根據(jù)不同的應(yīng)用環(huán)境進行擴充允許在編程過程中自定義和擴展應(yīng)用程序中的類較好的移植性,可移植于眾多的平臺MFCMFC還很好地保持了程序的向下兼容性用來編寫Windows應(yīng)MFC應(yīng)用程序框架結(jié)構(gòu)類的繼承關(guān)系:2.2.2MFC應(yīng)用程序框架結(jié)構(gòu)類MFC應(yīng)用程序框架結(jié)構(gòu)類的繼承關(guān)系:2.2.2MFC應(yīng)1.CObject類CObject是MFC類庫的根類,它幾乎描述了所有MFC類的一些公共特性,并且給所有由它派生出的類提供了3種重要特性,即:串行化支持、運行時類信息支持以及診斷和調(diào)試支持。2.CCmdTarget類命令類CCmdTarget是CObject的子類,它是MFC庫中所有具有消息映射屬性的類的公共基類。從CCmdTarget派生的類能在程序運行時動態(tài)創(chuàng)建對象和處理命令消息。1.CObject類2.CCmdTarget類3.CWinApp類應(yīng)用程序類CWinApp是CWinThread的子類,封裝了初始化、運行、終止應(yīng)用程序的代碼??梢杂纱伺缮约旱膽?yīng)用類。成員函數(shù)功能InitInstance()應(yīng)用程序的初始化;創(chuàng)建文檔模板、文檔、文檔視圖和主窗口Run()處理消息循環(huán)OnIdle()當沒有窗口消息需要處理時,被窗口框架調(diào)用ExitInstance()退出程序時,該函數(shù)被調(diào)用3.CWinApp類成員函數(shù)功能InitInstance()5.CFrameWnd類CFrameWnd類是CWnd類的派生類。它是所有其他框架窗口類的基類,主要用來管理一個窗口。CFrameWnd類的對象是一個框架窗口,包括邊框、標題欄、菜單、最大化按鈕、最小化按鈕和一個激活的視圖。4.CWnd類
窗口類CWnd提供了MFC中所有窗口類的基本功能。從CWnd派生的類可以擁有自己的窗口,并對它進行控制。5.CFrameWnd類4.CWnd類6.CView類視圖類CView是CWnd類的子類。視圖類及其派生類用于管理框架窗口的客戶區(qū)。
7.CDocument類文檔類CDocument負責裝載和維護文檔。文檔包括應(yīng)用程序的工作成果或環(huán)境設(shè)置數(shù)據(jù)等,可以是程序需要保存的任何內(nèi)容。6.CView類8.菜單類:CMenu類
該類是CObject類的子類,用于管理菜單。它是一個WindowsHMenu的封裝,提供了與窗口有關(guān)的菜單資源建立、修改、跟蹤及刪除的成員函數(shù)。9.對話框類:CDialog類由于對話框是一個特殊的窗口,所以該類是從CWnd類中派生出來的。對話框子層次結(jié)構(gòu)包括通用對話框類CDialog以及支持文件選擇、顏色選擇、字體選擇、打印、替換文本的公共對話框子類。8.菜單類:CMenu類10.設(shè)備環(huán)境類:CDC類該類及其子類支持設(shè)備描述表對象,是CObject類的子類。CDC類是一個較大的類,包括許多成員函數(shù),如映射函數(shù)、繪畫工具函數(shù)、區(qū)域函數(shù)等,通過CDC對象的成員函數(shù)可以完成所有的繪畫工作.10.設(shè)備環(huán)境類:CDC類
一個MFC應(yīng)用程序并不直接操作上述類,而是以上述類為基類派生新的類,從而構(gòu)建Windows應(yīng)用程序的基本框架。例如,應(yīng)用程序Li2_1中的類與這些基類的派生關(guān)系:一個MFC應(yīng)用程序并不直接操作上述類,而是以上述類為MFC中全局函數(shù)和全局變量
以Afx為前綴的函數(shù)(數(shù)據(jù)庫類函數(shù)和DDX函數(shù)除外)和變量,在目前的版本中,都表示全局函數(shù)或全局變量。
AfxAbort: 無條件終止一個應(yīng)用程序AfxBeginThread: 創(chuàng)建一個新線程并執(zhí)行它AfxEndThread: 終止當前正在執(zhí)行的線程AfxFormatString: 格式化字符串AfxMessageBox: 顯示一個Windows消息框AfxGetApp: 返回當前應(yīng)用程序?qū)ο蟮闹羔楢fxGetInstanceHandle:返回標識當前應(yīng)用程序?qū)ο蟮木浔鶤fxRegisterWndClass:注冊用于創(chuàng)建Windows窗口的窗口類常見全局函數(shù)MFC中全局函數(shù)和全局變量以Afx為前綴的函數(shù)(數(shù)1.應(yīng)用程序向?qū)傻奈募?/p>
下面以例2.1中創(chuàng)建的應(yīng)用程序Li2_1為例,介紹MFCAppWizard[exe]向?qū)傻母黝愇募肮δ堋?/p>
2.2.3MFC應(yīng)用程序分析1.應(yīng)用程序向?qū)傻奈募?.2.3MFC應(yīng)用程序分析(1)頭文件與實現(xiàn)文件
MainFrm.h和MainFrm.cpp:定義和實現(xiàn)窗口框架類CMainFrame。
CLi2_1Doc.h和CLi2_1Doc.cpp:定義和實現(xiàn)文檔類CLi2_1Doc。
CLi2_1View.h和CLi2_1View.cpp:定義和實現(xiàn)視圖類CLi2_1View。
CLi2_1.h和CLi2_1.cpp:定義和實現(xiàn)應(yīng)用程序類CLi2_1App。Resource.h:定義工程中所有資源標識符,給資源ID分配一個整數(shù)值。StdAfx.h和StdAfx.cpp:用于建立一個預(yù)編譯的頭文件CLi2_1.PCH和一個預(yù)定義的類型文件StdAfx.obj。(1)頭文件與實現(xiàn)文件(2)資源文件Li2_1.rc和Li2_1.rc2:Li2_1.rc文件是程序所使用的所有Windows資源的列表。Li2_1.ico:應(yīng)用程序的圖標所使用的圖標文件。Li2_1Doc.ico:應(yīng)用程序的文檔圖標文件。文檔圖標一般顯示在多文檔程序界面上。Toolbar.bmp:工具欄按鈕的位圖文件。(2)資源文件(3)項目工作區(qū)文件和工程文件Li2_1.dsw:保存當前工作區(qū)所包含的工程的信息。Li2_1.dsp:包含當前工程的設(shè)置、工程中的文件等信息。(3)項目工作區(qū)文件和工程文件(4)其他文件Li2_1.clw:該文件是類信息文件。它保存了ClassWizard編輯現(xiàn)有類或增加新類時需使用的類信息,同時還保存了創(chuàng)建、編輯消息映射和成員函數(shù)所需的信息。ReadMe.txt:該文件是工程自述文件。主要介紹所創(chuàng)建文件的內(nèi)容和功能,以及添加用戶代碼、更改使用語言的方法。(4)其他文件2.應(yīng)用程序的執(zhí)行過程
啟動theAppAfxWinMain()AfxGetApp()InitInstance()Run()消息循環(huán)處理收到WM_QUITExitInstance()在應(yīng)用程序的初始化過程中,同時還構(gòu)造了文檔模板,產(chǎn)生最初的文檔、視圖和主框架窗口,并生成工具欄和狀態(tài)欄。2.應(yīng)用程序的執(zhí)行過程啟theAppAfxWinMain(消息對話框
一種簡單的對話框,用戶可以直接調(diào)用消息對話框函數(shù)來使用它,而不需要自己創(chuàng)建。VisualC++提供三個消息對話框函數(shù),它們的原型為:MFC全局函數(shù):intAfxMessageBox(LPCTSTRlpText,UINTnType=MB_OK,UINTnIDHelp=0);WindowsAPI函數(shù):intMessageBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTnType);CWnd類的成員函數(shù):intCWnd::MessageBox(LPCTSTRlpText,LPCTSTRlpCaption=NULL,UINTnType=MB_OK);要顯示的文本對話框標題對話框按鈕風格消息對話框一種簡單的對話框,用戶可以直接第2章MFC應(yīng)用程序概述課件第2章MFC應(yīng)用程序概述課件Li2_1voidCLi2_1View::OnDraw(CDC*pDC){ CLi2_1Doc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere
MessageBox("這是個單文檔應(yīng)用程序!", "消息框", MB_ICONEXCLAMATION|MB_OKCANCEL);}Li2_1voidCLi2_1View::OnDraw(C2.2.4文檔/視圖結(jié)構(gòu)
文檔/視圖體系結(jié)構(gòu)是MFC應(yīng)用程序框架結(jié)構(gòu)的基石,它定義了一種程序結(jié)構(gòu)。文檔對象:保存應(yīng)用程序的數(shù)據(jù)視圖對象:控制視圖顯示數(shù)據(jù)
文檔與視圖的關(guān)系是一對多的關(guān)系,也就是說,文檔中的數(shù)據(jù)可以以不同的方式顯示。2.2.4文檔/視圖結(jié)構(gòu)文檔/視圖體系結(jié)構(gòu)第2章MFC應(yīng)用程序概述課件2.3消息映射與消息處理
Windows消息主要有3種類型:標準Windows消息、控件消息和命令消息。1.標準Windows消息除WM_COMMAND以外,所有以“WM_”為前綴的消息都是標準Windows消息;由窗口類或視圖類處理;都有默認的處理函數(shù),它們在CWnd類中進行了預(yù)定義。2.3.1消息的類別及其描述2.3消息映射與消息處理Windows消息主要有3標準的Windows消息又分為3類:鍵盤消息、鼠標消息和窗口消息。(1)鍵盤消息鍵盤消息與鍵盤某個鍵的動作相關(guān)聯(lián)。常見的鍵盤消息有以下幾種。WM_KEYDOWN、WM_KEYUP:按下、釋放非系統(tǒng)鍵產(chǎn)生的消息。WM_CHAR:輸入非系統(tǒng)字符時產(chǎn)生的消息。標準的Windows消息又分為3類:(2)鼠標消息鼠標消息涉及到鼠標的單擊、雙擊、拖動等。常用的鼠標消息有以下幾種。WM_MOUSEMOVE:鼠標移動時產(chǎn)生的消息。WM_RBUTTONDOWN:鼠標右鍵按下時產(chǎn)生的消息。WM_LBUTTONDOWN:鼠標左鍵按下時產(chǎn)生的消息。WM_LBUTTONDBLCLICK:鼠標雙擊時產(chǎn)生的消息。(2)鼠標消息(3)窗口消息窗口消息一般與創(chuàng)建窗口、繪制窗口、移動窗口和銷毀窗口等動作有關(guān)。在MFC應(yīng)用程序中,窗口消息是由視圖類、窗口類及它們的派生類處理的。(3)窗口消息2.控件消息控件消息是指控件或其他子窗口向父窗口發(fā)送的WM_COMMAND消息。與其他標準的Windows消息一樣,控件消息也應(yīng)該在視圖類、窗口類中進行處理。但是,如果用戶單擊按鈕控件時,發(fā)出的控件通知消息BN_CLICKED將作為命令消息來處理。2.控件消息3.命令消息命令消息是由菜單項、工具欄按鈕、快捷鍵等用戶界面對象發(fā)出的WM_COMMAND消息。命令消息與其他消息不同,它可被更廣泛的對象如文檔、文檔模板、應(yīng)用程序?qū)ο?、窗口和視圖等處理。3.命令消息2.3.2MFC消息映射機制MFC采用消息映射來處理消息;消息映射機制包括一組消息映射宏,用于把一個Windows消息和其消息處理函數(shù)聯(lián)系起來。所有從CCmdTarget類派生出來的類都能夠擁有自己的消息映射。與MFC消息映射機制有關(guān)的宏有以下3個:DECLARE_MESSAGE_MAP()BEGIN_MESSAGE_MAP(MyClass,MybaseClass)END_MESSAGE_MAP()2.3.2MFC消息映射機制MFC采用消息映射來處理BEGIN_MESSAGE_MAP(MyClass,MybaseClass)
//{{AFX_MSG_MAP(MyClass)//ClassWizard維護消息映射宏的標記ON_... //MFC預(yù)定義消息映射宏ON_MESSAGE(message,memberFun)//用戶自定義消息映射宏//}}AFX_MSG_MAPEND_MESSAGE_MAP()其中,MyClass是擁有消息映射的派生類名,MybaseClass是其基類名。BEGIN_MESSAGE_MAP(MyClass,Myb【例2.2】利用ClassWizard為例2.1中生成的應(yīng)用程序Li2_1添加鼠標右鍵按下消息,即WM_RBUTTONDOWN消息,并為File菜單下的Open菜單項添加消息處理函數(shù),分析ClassWizard類向?qū)M行的消息映射。1、進行消息映射2、編寫消息響應(yīng)函數(shù)代碼【例2.2】利用ClassWizard為例2.1中生成的應(yīng)2.3.3自定義消息處理定義消息名、分配ID值及完成消息映射。Windows將所有的消息值分為4段:0x0000~0x03FF段:用于Windows系統(tǒng)消息0x0400~0x7FFF段:用于用戶自定義的窗口消息0x8000~0xBFFF段:為Windows保留值0xC000~0xFFFF段:用于應(yīng)用程序的字符串消息。2.3.3自定義消息處理定義消息名、分配ID值常量WM_USER(為0x0400)與第一個自定義消息值相對應(yīng)(1)利用#define語句直接定義自己的消息,如下所示:
#define
WM_MESSAGEWM_USER+3
//自定義消息WM_MESSAGE
(2)調(diào)用窗口消息注冊函數(shù)RegisterWindowMessage()來定義一個Windows消息,由系統(tǒng)分配消息一個整數(shù)值。
UINTRegisterWindowMessage(LPCTSTRlpString);
其中參數(shù)lpString是要定義的消息名,調(diào)用成功后將返回該消息的ID值。常量WM_USER(為0x0400)(1)利用#define【例2.3】編寫一個自定義消息應(yīng)用程序,并添加WM_RBUTTONDOWN消息。當程序運行時,用戶在視圖窗口中單擊鼠標右鍵,則調(diào)用自定義消息處理函數(shù),輸出文本“自定義消息WM_MYMESSAGE的處理函數(shù)被調(diào)用!”。1、定義消息2、在.h文件中定義消息響應(yīng)函數(shù)3、在.cpp中進行消息映射4、編寫消息響應(yīng)函數(shù)代碼【例2.3】編寫一個自定義消息應(yīng)用程序,并添加WM_RBU應(yīng)用實例
編寫一個單文檔應(yīng)用程序Sy2,程序運行后,首先在視圖窗口中輸入文本,然后通過鍵盤上的光標鍵控制該文本向左、向右、向上和向下4個方向移動。
DC(DeviceContext)設(shè)備環(huán)境OnDraw()函數(shù)GetDocumnet()函數(shù)TextOut()系統(tǒng)函數(shù)應(yīng)用實例編寫一個單文檔應(yīng)用程序Sy2,程序設(shè)備環(huán)境MFCAppWizard應(yīng)用程序向?qū)?chuàng)建的OnDraw()函數(shù)自動支持所獲取的設(shè)備環(huán)境,接受一個參數(shù)為指向CDC對象的指針。設(shè)備環(huán)境MFCAppWizard應(yīng)用程序向?qū)?chuàng)建的OnDrOnDraw()函數(shù)和GetDocumnet()函數(shù)都是視圖類的成員函數(shù)。OnDraw()函數(shù):是一個虛函數(shù),負責文檔對象的數(shù)據(jù)在用戶視圖區(qū)的顯示輸出。
GetDocumnet()函數(shù):用于獲取當前文檔對象的指針m_pDocument。
在向?qū)傻某蓡T函數(shù)OnDraw()中調(diào)用了函數(shù)GetDocument()通過獲取的文檔類指針可以在視圖中顯示文檔內(nèi)容。
OnDraw()函數(shù)和GetDocumTextOut函數(shù)原型:TextOut(int
x,int
y,const
CString&
str
);
功能:在屏幕上指定位置輸出字符串
voidCTest3View::OnDraw(CDC*pDC){ CTest3Doc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere
pDC->TextOut(30,30,"helloworld!");}TextOut函數(shù)原型:TextOut(int
x,i創(chuàng)建項目添加成員(視圖類)CStringm_string;intx;inty;初始化成員添加WM_CHAR字符消息處理函數(shù)添加WM_KEYDOWN鍵盤消息處理函數(shù)輸出文本創(chuàng)建項目2.5程序調(diào)試程序調(diào)試分為源程序語法錯誤的修改和程序邏輯設(shè)計錯誤的修改兩個階段,編譯器只能找出源程序的語法錯誤,程序的邏輯設(shè)計錯誤只能靠程序員利用調(diào)試工具來手工檢查和修改。2.5程序調(diào)試程序調(diào)試分為源程序語法錯誤的修改2.4.1查找源程序中的語法錯誤語法錯誤分為:一般錯誤(error):出現(xiàn)該錯誤時將不會產(chǎn)生可執(zhí)行程序;警告錯誤(warning):出現(xiàn)該錯誤時能夠生成可執(zhí)行程序,但程序運行時可能發(fā)生錯誤,嚴重的warning錯誤還會引起死機現(xiàn)象。2.4.1查找源程序中的語法錯誤如果程序有語法錯誤,則在執(zhí)行編譯、鏈接命令時,VisualC++編譯器將在輸出窗口中給出語法錯誤提示信息,但鏈接錯誤提示信息不能給出錯誤發(fā)生的具體位置。在輸出窗口中雙擊錯誤提示信息或按F4鍵可以返回到源程序編輯窗口,并通過一個箭頭符號定位到產(chǎn)生錯誤的語句。如果程序有語法錯誤,則在執(zhí)行編譯、鏈接命令時,Vis2.4.2調(diào)試器為了查找和修改程序中的邏輯設(shè)計錯誤,VisualC++IDE提供了重要的調(diào)試工具——Debug。單擊Build|StartDebug菜單中的菜單項,可以啟動Debug。2.4.2調(diào)試器StartDebug子菜單中有Go、StepInto、RunToCursor及AttachtoProcess菜單項開始或繼續(xù)調(diào)試程序,到某個斷點、程序的結(jié)束或需要用戶輸入的地方停止程序執(zhí)行到當前光標處,相當于在光標處臨時設(shè)置了一個斷點單步執(zhí)行程序的每一個指令,能進入被調(diào)用的函數(shù)內(nèi)部將調(diào)試器與一個正在運行的進程相連接StartDebug子菜單中有Go、StepInto、開調(diào)試過程開始后,Debug主菜單取代Build主菜單出現(xiàn)在菜單欄中,同時出現(xiàn)一個可停靠的調(diào)試工具欄和一些調(diào)試窗口。
調(diào)試過程開始后,Debug主菜單取代Build主菜單即使源程序沒有語法錯誤,但最后生成的可執(zhí)行程序也沒有像程序設(shè)計要求的那樣運行,這類程序設(shè)計上的錯誤被稱為邏輯設(shè)計錯誤或缺陷(bug)。跟蹤調(diào)試程序是查找此類邏輯設(shè)計錯誤方法中最常采用的動態(tài)方法。跟蹤調(diào)試的基本原理就是在程序運行過程的某一階段觀測程序的狀態(tài)。而在一般情況下程序是連續(xù)運行的,所以我們必須使程序在某一點停下來。2.4.3跟蹤調(diào)試程序即使源程序沒有語法錯誤,但最后生成的可執(zhí)行程序也沒選擇Edit菜單下的Breakpoints菜單項,顯示Breakpoints對話框。1.設(shè)置斷點設(shè)置斷點的3種方式:按位置按表達式的值按窗口消息選擇Edit菜單下的Breakpoints菜單項,顯
2.控制程序運行
StepOver:運行當前箭頭指向的代碼(只運行一條代碼)。StepInto:如果當前箭頭所指的代碼是一個函數(shù)的調(diào)用,則用StepInto進入該函數(shù)并進行單步執(zhí)行。StepOut:如果當前箭頭所指向的代碼是在某一函數(shù)內(nèi)部,用它可使程序運行至函數(shù)返回處。
RuntoCursor:使程序運行至光標所指的代碼處。2.控制程序運行
StepOver:運行當
3.觀察數(shù)據(jù)變化在調(diào)試過程中,可以通過Watch和Variables窗口查看當前變量的值。3.觀察數(shù)據(jù)變化在調(diào)試過程中,可以
【例2.4】編寫一個SDI單文檔應(yīng)用程序Li2_4,求2~10中偶數(shù)的和,并在視圖中輸出計算結(jié)果?!纠?.4】編寫一個SDI單文檔應(yīng)用程序Li2_4第2章MFC應(yīng)用程序概述第2章MFC應(yīng)用程序概述本章內(nèi)容
2.2MFC應(yīng)用程序框架
2.3消息映射與消息處理
2.4程序調(diào)試
2.5應(yīng)用實例本章內(nèi)容2.2MFC應(yīng)用2.2MFC應(yīng)用程序框架下面通過一個實例介紹利用MFCAppWizard[exe]創(chuàng)建應(yīng)用程序框架的步驟。2.2.1創(chuàng)建MFC應(yīng)用程序框架2.2MFC應(yīng)用程序框架下面通過一個實例介【例2.1】編寫一個SDI單文檔應(yīng)用程序Li2_1,程序運行后,通過消息框輸出“這是一個單文檔應(yīng)用程序!”的提示信息。
(1)選擇File菜單下的New菜單項,系統(tǒng)彈出New對話框。
單擊輸入工程名保存文件路徑默認【例2.1】編寫一個SDI單文檔應(yīng)用程序Li2_1,程序運行單文檔界面(SDI)應(yīng)用程序。應(yīng)用程序運行時,只能打開一個文檔。多文檔界面(MDI)應(yīng)用程序。應(yīng)用程序可以同時打開多個文檔?;趯υ捒虻膽?yīng)用程序。應(yīng)用程序?qū)@示一個簡單的對話框來處理用戶的輸入,(2)MFCAppWizard-Step1對話框主要用于選擇應(yīng)用程序類型。AppWizard可以創(chuàng)建3種類型的應(yīng)用程序框架。語言種類是否支持文檔/視圖結(jié)構(gòu)單文檔界面(SDI)應(yīng)用程序。應(yīng)用程序運行時,只能打開一個文(3)MFCAppWizard-Step2of6對話框中主要用于選擇應(yīng)用程序所支持數(shù)據(jù)庫方式。不包含任何數(shù)據(jù)庫支持包含最低限度的數(shù)據(jù)庫支持創(chuàng)建對應(yīng)表的一個數(shù)據(jù)庫類和一個視圖類,不附加標準文件支持創(chuàng)建對應(yīng)表的一個數(shù)據(jù)庫類和一個視圖類,并附加標準文件支持(3)MFCAppWizard-Step2of6對話(4)在MFCAppWizard-Step3of6對話框中選擇應(yīng)用程序所支持的復(fù)合文檔類型。不支持任何復(fù)合文檔應(yīng)用程序作為復(fù)合文檔容器,包含可以鏈接或嵌入的ActiveX對象應(yīng)用程序僅僅可以創(chuàng)建能夠嵌入到其他應(yīng)用程序中的文檔,但是不能作為一個單獨運行的應(yīng)用程序應(yīng)用程序可以單獨運行,同時也可以作為一個對象嵌入到其他應(yīng)用程序中應(yīng)用程序能夠作為容器包含嵌入或鏈接的ActiveX對象,同時也能夠作為一個可以嵌入到其他程序中的對象(4)在MFCAppWizard-Step3of6對(5)在MFCAppWizard-Step4of6對話框中設(shè)置應(yīng)用程序的外觀特征。添加工具欄自動生成狀態(tài)欄添加打印和打印預(yù)覽菜單項在幫助菜單中自動添加索引和使用幫助菜單項使應(yīng)用程序的外觀呈三維顯示消息應(yīng)用程序接口應(yīng)用程序具有TCP/IP通信功能傳統(tǒng)風格工具條InternetExplorer風格工具條(5)在MFCAppWizard-Step4of6對(6)在MFCAppWizard-Step5of6對話框中設(shè)置應(yīng)用程序的風格。創(chuàng)建標準的MFC應(yīng)用程序創(chuàng)建類似于Windows資源管理器風格的應(yīng)用程序在生成的程序框架的源文件中加入注釋不加入注釋信息使用動態(tài)鏈接庫使用靜態(tài)鏈接庫(6)在MFCAppWizard-Step5of6(7)在MFCAppWizard-Step6of6對話框中,可以設(shè)置向?qū)傻奈募皖惷TO(shè)置類名設(shè)置文件名(7)在MFCAppWizard-Step6of6(8)打開項目工作區(qū)中的ClassView類視圖,單擊CLi2_1View類左邊的“+”展開視圖類,雙擊打開OnDraw()函數(shù),并添加代碼。voidCLi2_1View::OnDraw(CDC*pDC){ CLi2_1Doc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere
MessageBox("這是一個單文檔應(yīng)用程序!","消息框",MB_ICONEXCLAMATION|MB_OKCANCEL);}(8)打開項目工作區(qū)中的ClassView類視圖,單擊CLi(9)選擇Build菜單中的BuildLi2_1.exe菜單項,對工程進行編譯和鏈接,生成可執(zhí)行文件。再選擇Build菜單中的ExecuteLi2_1.exe菜單命令運行程序。(9)選擇Build菜單中的BuildLi2_1.exeMFC概述
MFC是用來編寫Windows應(yīng)用程序的C++類集,該類集以層次結(jié)構(gòu)組織起來,其中封裝了大部分WindowsAPI函數(shù)和Windows控件,它所包含的功能涉及到整個Windows操作系統(tǒng)。MFC不僅為用戶提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件。MFC概述MFC是用來編寫Windows應(yīng)用程MFC還很好地保持了程序的向下兼容性用來編寫Windows應(yīng)用程序的C++類集以層次結(jié)構(gòu)組織封裝了大部分API函數(shù)提供了圖形環(huán)境下應(yīng)用程序的框架提供了創(chuàng)建應(yīng)用程序的組件提供了大量的基類供程序員根據(jù)不同的應(yīng)用環(huán)境進行擴充允許在編程過程中自定義和擴展應(yīng)用程序中的類較好的移植性,可移植于眾多的平臺MFCMFC還很好地保持了程序的向下兼容性用來編寫Windows應(yīng)MFC應(yīng)用程序框架結(jié)構(gòu)類的繼承關(guān)系:2.2.2MFC應(yīng)用程序框架結(jié)構(gòu)類MFC應(yīng)用程序框架結(jié)構(gòu)類的繼承關(guān)系:2.2.2MFC應(yīng)1.CObject類CObject是MFC類庫的根類,它幾乎描述了所有MFC類的一些公共特性,并且給所有由它派生出的類提供了3種重要特性,即:串行化支持、運行時類信息支持以及診斷和調(diào)試支持。2.CCmdTarget類命令類CCmdTarget是CObject的子類,它是MFC庫中所有具有消息映射屬性的類的公共基類。從CCmdTarget派生的類能在程序運行時動態(tài)創(chuàng)建對象和處理命令消息。1.CObject類2.CCmdTarget類3.CWinApp類應(yīng)用程序類CWinApp是CWinThread的子類,封裝了初始化、運行、終止應(yīng)用程序的代碼??梢杂纱伺缮约旱膽?yīng)用類。成員函數(shù)功能InitInstance()應(yīng)用程序的初始化;創(chuàng)建文檔模板、文檔、文檔視圖和主窗口Run()處理消息循環(huán)OnIdle()當沒有窗口消息需要處理時,被窗口框架調(diào)用ExitInstance()退出程序時,該函數(shù)被調(diào)用3.CWinApp類成員函數(shù)功能InitInstance()5.CFrameWnd類CFrameWnd類是CWnd類的派生類。它是所有其他框架窗口類的基類,主要用來管理一個窗口。CFrameWnd類的對象是一個框架窗口,包括邊框、標題欄、菜單、最大化按鈕、最小化按鈕和一個激活的視圖。4.CWnd類
窗口類CWnd提供了MFC中所有窗口類的基本功能。從CWnd派生的類可以擁有自己的窗口,并對它進行控制。5.CFrameWnd類4.CWnd類6.CView類視圖類CView是CWnd類的子類。視圖類及其派生類用于管理框架窗口的客戶區(qū)。
7.CDocument類文檔類CDocument負責裝載和維護文檔。文檔包括應(yīng)用程序的工作成果或環(huán)境設(shè)置數(shù)據(jù)等,可以是程序需要保存的任何內(nèi)容。6.CView類8.菜單類:CMenu類
該類是CObject類的子類,用于管理菜單。它是一個WindowsHMenu的封裝,提供了與窗口有關(guān)的菜單資源建立、修改、跟蹤及刪除的成員函數(shù)。9.對話框類:CDialog類由于對話框是一個特殊的窗口,所以該類是從CWnd類中派生出來的。對話框子層次結(jié)構(gòu)包括通用對話框類CDialog以及支持文件選擇、顏色選擇、字體選擇、打印、替換文本的公共對話框子類。8.菜單類:CMenu類10.設(shè)備環(huán)境類:CDC類該類及其子類支持設(shè)備描述表對象,是CObject類的子類。CDC類是一個較大的類,包括許多成員函數(shù),如映射函數(shù)、繪畫工具函數(shù)、區(qū)域函數(shù)等,通過CDC對象的成員函數(shù)可以完成所有的繪畫工作.10.設(shè)備環(huán)境類:CDC類
一個MFC應(yīng)用程序并不直接操作上述類,而是以上述類為基類派生新的類,從而構(gòu)建Windows應(yīng)用程序的基本框架。例如,應(yīng)用程序Li2_1中的類與這些基類的派生關(guān)系:一個MFC應(yīng)用程序并不直接操作上述類,而是以上述類為MFC中全局函數(shù)和全局變量
以Afx為前綴的函數(shù)(數(shù)據(jù)庫類函數(shù)和DDX函數(shù)除外)和變量,在目前的版本中,都表示全局函數(shù)或全局變量。
AfxAbort: 無條件終止一個應(yīng)用程序AfxBeginThread: 創(chuàng)建一個新線程并執(zhí)行它AfxEndThread: 終止當前正在執(zhí)行的線程AfxFormatString: 格式化字符串AfxMessageBox: 顯示一個Windows消息框AfxGetApp: 返回當前應(yīng)用程序?qū)ο蟮闹羔楢fxGetInstanceHandle:返回標識當前應(yīng)用程序?qū)ο蟮木浔鶤fxRegisterWndClass:注冊用于創(chuàng)建Windows窗口的窗口類常見全局函數(shù)MFC中全局函數(shù)和全局變量以Afx為前綴的函數(shù)(數(shù)1.應(yīng)用程序向?qū)傻奈募?/p>
下面以例2.1中創(chuàng)建的應(yīng)用程序Li2_1為例,介紹MFCAppWizard[exe]向?qū)傻母黝愇募肮δ堋?/p>
2.2.3MFC應(yīng)用程序分析1.應(yīng)用程序向?qū)傻奈募?.2.3MFC應(yīng)用程序分析(1)頭文件與實現(xiàn)文件
MainFrm.h和MainFrm.cpp:定義和實現(xiàn)窗口框架類CMainFrame。
CLi2_1Doc.h和CLi2_1Doc.cpp:定義和實現(xiàn)文檔類CLi2_1Doc。
CLi2_1View.h和CLi2_1View.cpp:定義和實現(xiàn)視圖類CLi2_1View。
CLi2_1.h和CLi2_1.cpp:定義和實現(xiàn)應(yīng)用程序類CLi2_1App。Resource.h:定義工程中所有資源標識符,給資源ID分配一個整數(shù)值。StdAfx.h和StdAfx.cpp:用于建立一個預(yù)編譯的頭文件CLi2_1.PCH和一個預(yù)定義的類型文件StdAfx.obj。(1)頭文件與實現(xiàn)文件(2)資源文件Li2_1.rc和Li2_1.rc2:Li2_1.rc文件是程序所使用的所有Windows資源的列表。Li2_1.ico:應(yīng)用程序的圖標所使用的圖標文件。Li2_1Doc.ico:應(yīng)用程序的文檔圖標文件。文檔圖標一般顯示在多文檔程序界面上。Toolbar.bmp:工具欄按鈕的位圖文件。(2)資源文件(3)項目工作區(qū)文件和工程文件Li2_1.dsw:保存當前工作區(qū)所包含的工程的信息。Li2_1.dsp:包含當前工程的設(shè)置、工程中的文件等信息。(3)項目工作區(qū)文件和工程文件(4)其他文件Li2_1.clw:該文件是類信息文件。它保存了ClassWizard編輯現(xiàn)有類或增加新類時需使用的類信息,同時還保存了創(chuàng)建、編輯消息映射和成員函數(shù)所需的信息。ReadMe.txt:該文件是工程自述文件。主要介紹所創(chuàng)建文件的內(nèi)容和功能,以及添加用戶代碼、更改使用語言的方法。(4)其他文件2.應(yīng)用程序的執(zhí)行過程
啟動theAppAfxWinMain()AfxGetApp()InitInstance()Run()消息循環(huán)處理收到WM_QUITExitInstance()在應(yīng)用程序的初始化過程中,同時還構(gòu)造了文檔模板,產(chǎn)生最初的文檔、視圖和主框架窗口,并生成工具欄和狀態(tài)欄。2.應(yīng)用程序的執(zhí)行過程啟theAppAfxWinMain(消息對話框
一種簡單的對話框,用戶可以直接調(diào)用消息對話框函數(shù)來使用它,而不需要自己創(chuàng)建。VisualC++提供三個消息對話框函數(shù),它們的原型為:MFC全局函數(shù):intAfxMessageBox(LPCTSTRlpText,UINTnType=MB_OK,UINTnIDHelp=0);WindowsAPI函數(shù):intMessageBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTnType);CWnd類的成員函數(shù):intCWnd::MessageBox(LPCTSTRlpText,LPCTSTRlpCaption=NULL,UINTnType=MB_OK);要顯示的文本對話框標題對話框按鈕風格消息對話框一種簡單的對話框,用戶可以直接第2章MFC應(yīng)用程序概述課件第2章MFC應(yīng)用程序概述課件Li2_1voidCLi2_1View::OnDraw(CDC*pDC){ CLi2_1Doc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere
MessageBox("這是個單文檔應(yīng)用程序!", "消息框", MB_ICONEXCLAMATION|MB_OKCANCEL);}Li2_1voidCLi2_1View::OnDraw(C2.2.4文檔/視圖結(jié)構(gòu)
文檔/視圖體系結(jié)構(gòu)是MFC應(yīng)用程序框架結(jié)構(gòu)的基石,它定義了一種程序結(jié)構(gòu)。文檔對象:保存應(yīng)用程序的數(shù)據(jù)視圖對象:控制視圖顯示數(shù)據(jù)
文檔與視圖的關(guān)系是一對多的關(guān)系,也就是說,文檔中的數(shù)據(jù)可以以不同的方式顯示。2.2.4文檔/視圖結(jié)構(gòu)文檔/視圖體系結(jié)構(gòu)第2章MFC應(yīng)用程序概述課件2.3消息映射與消息處理
Windows消息主要有3種類型:標準Windows消息、控件消息和命令消息。1.標準Windows消息除WM_COMMAND以外,所有以“WM_”為前綴的消息都是標準Windows消息;由窗口類或視圖類處理;都有默認的處理函數(shù),它們在CWnd類中進行了預(yù)定義。2.3.1消息的類別及其描述2.3消息映射與消息處理Windows消息主要有3標準的Windows消息又分為3類:鍵盤消息、鼠標消息和窗口消息。(1)鍵盤消息鍵盤消息與鍵盤某個鍵的動作相關(guān)聯(lián)。常見的鍵盤消息有以下幾種。WM_KEYDOWN、WM_KEYUP:按下、釋放非系統(tǒng)鍵產(chǎn)生的消息。WM_CHAR:輸入非系統(tǒng)字符時產(chǎn)生的消息。標準的Windows消息又分為3類:(2)鼠標消息鼠標消息涉及到鼠標的單擊、雙擊、拖動等。常用的鼠標消息有以下幾種。WM_MOUSEMOVE:鼠標移動時產(chǎn)生的消息。WM_RBUTTONDOWN:鼠標右鍵按下時產(chǎn)生的消息。WM_LBUTTONDOWN:鼠標左鍵按下時產(chǎn)生的消息。WM_LBUTTONDBLCLICK:鼠標雙擊時產(chǎn)生的消息。(2)鼠標消息(3)窗口消息窗口消息一般與創(chuàng)建窗口、繪制窗口、移動窗口和銷毀窗口等動作有關(guān)。在MFC應(yīng)用程序中,窗口消息是由視圖類、窗口類及它們的派生類處理的。(3)窗口消息2.控件消息控件消息是指控件或其他子窗口向父窗口發(fā)送的WM_COMMAND消息。與其他標準的Windows消息一樣,控件消息也應(yīng)該在視圖類、窗口類中進行處理。但是,如果用戶單擊按鈕控件時,發(fā)出的控件通知消息BN_CLICKED將作為命令消息來處理。2.控件消息3.命令消息命令消息是由菜單項、工具欄按鈕、快捷鍵等用戶界面對象發(fā)出的WM_COMMAND消息。命令消息與其他消息不同,它可被更廣泛的對象如文檔、文檔模板、應(yīng)用程序?qū)ο?、窗口和視圖等處理。3.命令消息2.3.2MFC消息映射機制MFC采用消息映射來處理消息;消息映射機制包括一組消息映射宏,用于把一個Windows消息和其消息處理函數(shù)聯(lián)系起來。所有從CCmdTarget類派生出來的類都能夠擁有自己的消息映射。與MFC消息映射機制有關(guān)的宏有以下3個:DECLARE_MESSAGE_MAP()BEGIN_MESSAGE_MAP(MyClass,MybaseClass)END_MESSAGE_MAP()2.3.2MFC消息映射機制MFC采用消息映射來處理BEGIN_MESSAGE_MAP(MyClass,MybaseClass)
//{{AFX_MSG_MAP(MyClass)//ClassWizard維護消息映射宏的標記ON_... //MFC預(yù)定義消息映射宏ON_MESSAGE(message,memberFun)//用戶自定義消息映射宏//}}AFX_MSG_MAPEND_MESSAGE_MAP()其中,MyClass是擁有消息映射的派生類名,MybaseClass是其基類名。BEGIN_MESSAGE_MAP(MyClass,Myb【例2.2】利用ClassWizard為例2.1中生成的應(yīng)用程序Li2_1添加鼠標右鍵按下消息,即WM_RBUTTONDOWN消息,并為File菜單下的Open菜單項添加消息處理函數(shù),分析ClassWizard類向?qū)M行的消息映射。1、進行消息映射2、編寫消息響應(yīng)函數(shù)代碼【例2.2】利用ClassWizard為例2.1中生成的應(yīng)2.3.3自定義消息處理定義消息名、分配ID值及完成消息映射。Windows將所有的消息值分為4段:0x0000~0x03FF段:用于Windows系統(tǒng)消息0x0400~0x7FFF段:用于用戶自定義的窗口消息0x8000~0xBFFF段:為Windows保留值0xC000~0xFFFF段:用于應(yīng)用程序的字符串消息。2.3.3自定義消息處理定義消息名、分配ID值常量WM_USER(為0x0400)與第一個自定義消息值相對應(yīng)(1)利用#define語句直接定義自己的消息,如下所示:
#define
WM_MESSAGEWM_USER+3
//自定義消息WM_MESSAGE
(2)調(diào)用窗口消息注冊函數(shù)RegisterWindowMessage()來定義一個Windows消息,由系統(tǒng)分配消息一個整數(shù)值。
UINTRegisterWindowMessage(LPCTSTRlpString);
其中參數(shù)lpString是要定義的消息名,調(diào)用成功后將返回該消息的ID值。常量WM_USER(為0x0400)(1)利用#define【例2.3】編寫一個自定義消息應(yīng)用程序,并添加WM_RBUTTONDOWN消息。當程序運行時,用戶在視圖窗口中單擊鼠標右鍵,則調(diào)用自定義消息處理函數(shù),輸出文本“自定義消息WM_MYMESSAGE的處理函數(shù)被調(diào)用!”。1、定義消息2、在.h文件中定義消息響應(yīng)函數(shù)3、在.cpp中進行消息映射4、編寫消息響應(yīng)函數(shù)代碼【例2.3】編寫一個自定義消息應(yīng)用程序,并添加WM_RBU應(yīng)用實例
編寫一個單文檔應(yīng)用程序Sy2,程序運行后,首先在視圖窗口中輸入文本,然后通過鍵盤上的光標鍵控制該文本向左、向右、向上和向下4個方向移動。
DC(DeviceContext)設(shè)備環(huán)境OnDraw()函數(shù)GetDocumnet()函數(shù)TextOut()系統(tǒng)函數(shù)應(yīng)用實例編寫一個單文檔應(yīng)用程序Sy2,程序設(shè)備環(huán)境MFCAppWizard應(yīng)用程序向?qū)?chuàng)建的OnDraw()函數(shù)自動支持所獲取的設(shè)備環(huán)境,接受一個參數(shù)為指向CDC對象的指針。設(shè)備環(huán)境MFCAppWizard應(yīng)用程序向?qū)?chuàng)建的OnDrOnDraw()函數(shù)和GetDocumnet()函數(shù)都是視
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)圖形的學問》(教案)四年級上冊數(shù)學北師大版
- 五年級上冊數(shù)學教案-3.2 除數(shù)是小數(shù)的除法 第二課時-西師大版
- 五年級下冊數(shù)學教案-4 異分母分數(shù)加減法 ︳西師大版
- 《三角形的內(nèi)角和》(教學設(shè)計)-2024-2025學年青島版四年級數(shù)學下冊
- (高清版)DB45∕T 808-2021 城鎮(zhèn)建筑有線電視網(wǎng)絡(luò)建設(shè)技術(shù)規(guī)范
- 2025年吉林省吉林市單招職業(yè)傾向性測試題庫新版
- 2024年智能壓力校驗儀項目投資申請報告
- 歷史-云南省三校2025屆高三2月高考備考聯(lián)考卷(六)試題和答案
- 2025年度荒山荒溝土地承包與林業(yè)生態(tài)補償機制合同
- 2025年度工程尾款支付與質(zhì)量保證協(xié)議書
- 兒童繪本故事《我的情緒小怪獸》
- 部編版六年級下冊道德與法治全冊教案
- 3.1 導數(shù)的概念 課件 《高等數(shù)學》
- 2024版《供電營業(yè)規(guī)則》學習考試題庫500題(含答案)
- 供貨送貨服務(wù)承諾書
- G -B- 43630-2023 塔式和機架式服務(wù)器能效限定值及能效等級(正式版)
- EPC項目質(zhì)量保證措施
- 2022-2023學年北京中橋外國語學校 高一數(shù)學文上學期摸底試題含解析
- 2023-2024學年安徽省合肥市瑤海區(qū)八年級(下)期中數(shù)學試卷(含解析)
- 物業(yè)小區(qū)安全生產(chǎn)隱患排查治理表
- 【體能大循環(huán)】聚焦體能循環(huán)-探索運動奧秘-幼兒園探究體能大循環(huán)有效開展策略課件
評論
0/150
提交評論