版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Windows消息
●Windows消息通常指以WM開頭的消息,但WM_COMMAND除外?!矜I盤消息和鼠標消息都屬于Windows消息,Windows消息由窗口和視圖進行處理?!馱indows消息通常帶有若干個參數(shù)傳遞給消息處理函數(shù),這些參數(shù)為處理函數(shù)正確地處理消息提供了充分的信息。6/5/20236《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●控件通知消息是指當控件的狀態(tài)發(fā)生改變時,控件向其父窗口發(fā)送的消息?!馦FC對控件通知消息的傳遞方式與其他以WM開頭的Windows消息一樣,但BN_CLICKED例外,該消息的傳遞方式與命令消息的傳遞機制相同。●對于Windows消息和控件通知消息,MFC將消息傳遞給相應(yīng)的窗口處理。
控件通知消息
6/5/20237《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》定時消息●定時消息也是Windows的一類重要消息。●當需要應(yīng)用程序每隔一個指定的時間間隔便執(zhí)行某一特定操作時,就需要使用定時消息WM_TIMER?!裨谶M行定時操作時,用戶需要調(diào)用SetTimer函數(shù)創(chuàng)建一個定時器,并設(shè)置定時器的事件標志nIDEvent及時間間隔nElapse,然后編寫消息WM_TIMER的消息處理函數(shù)OnTimer(),實現(xiàn)定時操作。6/5/20238《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》命令消息●命令消息是來自于用戶界面對象的WM_COMMAND消息?!癜ú藛?、工具欄按鈕和加速鍵都屬于命令消息等。即每當用戶選擇一個菜單項、單擊一個按鈕或需要告訴操作系統(tǒng)應(yīng)當執(zhí)行什么操作時,則發(fā)送一條WM_COMMAND命令消息?!馱M_COMMAND消息的消息映射宏為OnCommand()。所有命令消息都包含有一個相同類型的參數(shù),即該命令消息需要操作的資源ID值,由ID值映射消息處理函數(shù)。6/5/20239《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》2MFC消息映射機制
●消息映射是指將消息與處理函數(shù)相聯(lián)系,即當系統(tǒng)產(chǎn)生一條消息時,它能找到處理該消息的函數(shù)?!裣⒂成涫荳indows基于消息映射的事件驅(qū)動機制的重要內(nèi)容之一。6/5/202310《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》VisualC++的消息映射宏
消息映射宏功能DECLARE_MESSAGE_MAP在頭文件中使用,用于聲明在源文件中存在消息映射BEGIN_MESSAGE_MAP表示消息映射的開始,用于源代碼文件中END_MESSAGE_MAP表示消息映射的結(jié)束,用于源代碼文件中ON_COMMAND將特定的命令消息映射到類的成員函數(shù),即使用該成員函數(shù)處理消息ON_COMMAND_RANGE將一組特定的命令消息映射到類的成員函數(shù)6/5/202311《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》VisualC++的消息映射分為兩個方面:●一是在頭文件.h中處理●一是在實現(xiàn)文件.cpp中處理消息映射宏6/5/202312《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》消息映射舉例以上一章所創(chuàng)建的應(yīng)用程序MyWinP為例,打開該應(yīng)用程序源代碼,其中有以下關(guān)于消息映射的代碼(見下頁)。6/5/202313《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》在頭文件MyWinp.h中的消息映射代碼
//{{AFX_MSG(CMyWinPApp) afx_msgvoidOnAppAbout(); //NOTE-theClassWizardwilladdandremovememberfunctionshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode! //}}AFX_MSG
DECLARE_MESSAGE_MAP()6/5/202314《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》在實現(xiàn)文件中的消息映射代碼
BEGIN_MESSAGE_MAP(CMyWinPApp,CWinApp) //{{AFX_MSG_MAP(CMyWinPApp) ON_COMMAND(ID_APP_ABOUT,OnAppAbout)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode! //}}AFX_MSG_MAP //Standardfilebaseddocumentcommands ON_COMMAND(ID_FILE_NEW,CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen) //Standardprintsetupcommand ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp::OnFilePrintSetup)END_MESSAGE_MAP()6/5/202315《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》消息映射宏的使用●宏DECLARE_MESSAGE_MAP用于類聲明文件的結(jié)束處,即在.h文件的結(jié)束處?!窈闎EGIN_MESSAGE_MAP和END_MESSAGE_MAP用于類的實現(xiàn)文件(.cpp)中實現(xiàn)消息映射,而且這兩個宏必須配合使用。6/5/202316《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●在BEGIN_MESSAGE_MAP與END_MESSAGE_MAP中間列出了消息映射的各個入口。例如,以下消息映射語句:ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen)表示當用戶單擊了菜單項File|Open時,則發(fā)送WM_COMMAND消息,該消息找到此語句,發(fā)現(xiàn)資源ID值與資源ID_FILE_OPEN匹配,則執(zhí)行該語句中指定的成員函數(shù)CWinApp::OnFileOpen()。消息映射宏的使用(續(xù))6/5/202317《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》向?qū)ppWizard生成的單文檔應(yīng)用程序一般包括四個基本類:●應(yīng)用程序類●主框架窗口類●文檔類和●視圖類12.2應(yīng)用程序分析6/5/202318《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》1.AppWizard向?qū)傻念惡臀募駟螕繇椖抗ぷ鲄^(qū)的ClassView標簽,則顯示CMainFrame、CMyWinPApp、CMyWinPDoc和CMyWipView等,這是應(yīng)用程序MyWinP的全部類?!窭肁ppWizard向?qū)?chuàng)建應(yīng)用程序框架時,產(chǎn)生的各派生類將被創(chuàng)建單獨的源文件。●單擊某一類名(如CMyWinPView)前的“+”號,則列出該類的成員函數(shù),雙擊類名或成員函數(shù)名(如GetDocument),則源代碼編輯區(qū)顯示出該類或該成員函數(shù)的實現(xiàn)代碼。6/5/202319《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》觀察應(yīng)用程序MyWinP的類和文件6/5/202320《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●MyWinP程序的應(yīng)用程序類名為CMyWinPApp,由CwinApp類派生而來?!裨擃惖拿恳粋€對象代表一個應(yīng)用程序,程序中默認定義一個全局對象theApp?!馛MyWinPApp類的功能是管理整個應(yīng)用程序,負責程序的啟動、初始化、窗口的創(chuàng)建以及從Windows中獲取消息并將消息分發(fā)到適當?shù)哪康牡?。CMyWinPApp類的聲明在頭文件MyWinPApp.h中,類的實現(xiàn)在CMyWinPApp.cpp中。(1)應(yīng)用程序類
6/5/202321《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●CMyWinP應(yīng)用程序的主框架窗口類名為CMainFrame,它由CWnd的一個子類派生而來,該子類即CFrameWnd?!馛MainFrame類的聲明在頭文件MainFrame.h中,類的實現(xiàn)在文件MainFrame.cpp中?!馛MainFrame類管理主框架窗口,并擁有一些如菜單、工具欄和狀態(tài)欄等控件,同時,它還扮演轉(zhuǎn)發(fā)菜單和工具欄消息的角色。(2)主框架架窗口類
6/5/202322《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●CMyWinP應(yīng)用程序的文檔類名為CMyWinPDoc,從MFC的CDocument類派生而來。其類的聲明在頭文件CMyWinPDoc.h中,類的實現(xiàn)在文件CMyWinPDoc.cpp中。●文檔類的主要作用是保存應(yīng)用程序的數(shù)據(jù),并提供磁盤文件操作?!裼脩粜枰薷奈臋n類,增加成員變量以存儲應(yīng)用程序的數(shù)據(jù)、增加成員函數(shù)以獲得和修改數(shù)據(jù),然后為應(yīng)用程序服務(wù)。(3)文檔類
6/5/202323《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●CMyWinP應(yīng)用程序的視圖類名為CMyWinPView,類的聲明在頭文件MyWinPView.h中,而類的實現(xiàn)在文件MyWinPView.cpp中?!褚晥D類主要管理視圖窗口,負責用戶數(shù)據(jù)的輸入和數(shù)據(jù)的輸出顯示?!裨趧?chuàng)建一個單文檔應(yīng)用程序時,也可以選擇將視圖類從非CView類的其他子類派生出來,例如,在BaseClass中選擇CEditView作為基本視圖類,則可以很方便的得到一個簡易的字處理程序。(4)視圖類
6/5/202324《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》(5)其他文件
●除以上主要類之外,AppWizard還自動生成Stdafx.cpp和stdafx.h兩個文件。這兩個文件是每個基于MFC程序所必需的,●用于建立一個預(yù)編譯頭文件*.pch和一個預(yù)定義的類型文件stdafx.obj?!馦FC包含很多頭文件,如果每次都編譯則比較費時,將afxwin.h、afxext.h、afxcmn.h、afxdisp.h都放在stdafx.h文件中,這樣編譯系統(tǒng)可以識別哪些文件已經(jīng)編譯過,以加速應(yīng)用程序的編譯過程。6/5/202325《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》2.應(yīng)用程序的運行機制
Windows應(yīng)用程序的執(zhí)行過程如下:●自動調(diào)用應(yīng)用程序框架內(nèi)的WinMain函數(shù)。WinMain()自動查找由CWinApp派生類構(gòu)造函數(shù)創(chuàng)建的全局對象theApp?!馱inMain函數(shù)調(diào)用調(diào)用Initlnstance成員函數(shù),完成應(yīng)用程序?qū)嵗某跏蓟!馱inMain函數(shù)調(diào)用Run成員函數(shù),進入消息循環(huán)?!馱inMain函數(shù)退出,調(diào)用有關(guān)成員函數(shù)進行必要的清理工作,程序運行中止。6/5/202326《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》12.3輸入/輸出處理程序
●輸入輸出處理是幾乎所有Windows應(yīng)用程序最基本的功能之一●Windows應(yīng)用程序通過對鍵盤消息和鼠標消息的響應(yīng)完成對用戶輸入的處理●通過GDI提供的繪圖函數(shù)在窗口的客戶區(qū)輸出信息。6/5/202327《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》1.文本輸出程序
文本輸出指在窗口客戶區(qū)特定位置輸出用戶指定的相關(guān)文本信息。在MFC中,CDC類實現(xiàn)了對設(shè)備環(huán)境的封裝,CDC類有許多成員函數(shù),完成各種與設(shè)備環(huán)境有關(guān)的操作。6/5/202328《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》DrawText函數(shù)
DrawText函數(shù)是CDC類用于文本輸出的成員函數(shù)之一,它的作用是在指定矩形區(qū)域內(nèi)以當前字體、顏色等屬性及指定的顯示方式顯示字符串。DrawText函數(shù)的格式如下:形式一:virtualintDrawText(LPCTSTRlpszString,intnCount,LPRECTlpRect,UINTnFormat);形式二:intDrawText(constCString&str,LPRECTlpRect,UINTnFormat);6/5/202329《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》參數(shù)含義●參數(shù)1pszString是指向輸出字符串的指針;●參數(shù)nCount指定字符串的長度,如果為-1,則1pszString是一個指向以null結(jié)尾的字符串的長指針;●參數(shù)lpRect是指向RECT結(jié)構(gòu)的指針;●參數(shù)nFormat用于指定輸出格式;●str表示存儲字符串的CString對象。6/5/202330《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》TextOut函數(shù)
●TextOut函數(shù)也是CDC類用于文本輸出的成員函數(shù),它的作用是在指定的起點坐標上,以當前字體、顏色等屬性顯示字符串?!馮extOut函數(shù)格式:形式一:virtualintTextOut(intx,inty,LPCTSTRlpszString,intnCount);形式二:BOOLTextOut(intx,inty,constCString&str);6/5/202331《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》參數(shù)含義●參數(shù)x,y表示欲顯示字符串起點坐標;●參數(shù)lpszString指向要顯示字符串的指針;●參數(shù)nCount指定字符串的長度;●str存儲字符串的CString對象。6/5/202332《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》OnDraw函數(shù)
voidOnDraw(CDC*pDC)
●OnDraw函數(shù)是視圖類的一個重要成員函數(shù)?!癯蓡T函數(shù)OnDraw管理文檔類成員變量的顯示,即OnDraw函數(shù)主要用于更新視圖窗口。6/5/202333《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》GetDocument函數(shù)
●GetDocument函數(shù)返回一個指向關(guān)聯(lián)文檔對象的指針。●通過GetDocument函數(shù)返回的文檔對象指針,視圖對象可以調(diào)用文檔類及其派生類的成員函數(shù)或直接讀取文檔對象的公有數(shù)據(jù)成員,獲取應(yīng)用程序的數(shù)據(jù)?!馟etDocument函數(shù)的格式如下:CDocument*GetDocument()const
6/5/202334《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》2鍵盤輸入處理程序
●鍵盤是Windows應(yīng)用程序一個非常重要的輸入手段,當用戶按下或釋放一個按鍵時,鍵盤驅(qū)動程序KEYBOARD.DRV中的鍵盤中斷程序?qū)Π存I進行編碼,并由用戶模塊USER.EXE生成鍵盤消息,最終發(fā)送到消息隊列中等待處理,而處理鍵盤消息則是由應(yīng)用程序的窗口來具體完成的。●在Windows系統(tǒng)下,鍵盤由所有運行的應(yīng)用程序共享,但不管用戶打開了多少個應(yīng)用程序,任何情況下只有一個窗口能接受到按鍵消息。●Windows環(huán)境下接受到按鍵消息的窗口稱為“有輸入焦點”的窗口。
6/5/202335《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》鍵盤消息
在Windows應(yīng)用程序運行時若用戶按下一個鍵,就會產(chǎn)生一個鍵盤消息,如:●WM_KEYDOWN●WM_KEYUP●WM_SYSKEYDOWN●WM_SYSKEYUP其中WM_SYSKEYDOWN、WM_SYSKEYUP中的SYS表示系統(tǒng)按鍵消息,由Windows處理,應(yīng)用程序只需處理WM_KEYDOWN和WM_KEYUP等非系統(tǒng)按鍵消息。6/5/202336《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》afx_msgvoidOnChar(UNITnChar,UINTnRepCnt,UINTnFlags)WM_CHAR的消息處理函數(shù):
●nChar表示按鍵的字符代碼值;●nRepCnt表示按鍵的重復次數(shù),因此若用戶按下某鍵不放,該參數(shù)值將不斷增加;●nFlags用于傳遞按鍵的掃描碼、轉(zhuǎn)換碼、鍵的先前狀態(tài)、上一次按鍵狀態(tài)等相關(guān)信息。6/5/202337《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》虛擬鍵代碼
●鍵盤上每一個有意義的鍵都對應(yīng)著一個惟一的標識值,即鍵盤掃描碼,當用戶按下或釋放一個按鍵時,都會產(chǎn)生掃描碼?!駫呙璐a是依賴于具體設(shè)備的。Windows應(yīng)用程序中一般使用與具體設(shè)備無關(guān)的虛擬碼?!裉摂M碼是Windows系統(tǒng)內(nèi)部定義的與設(shè)備無關(guān)的鍵盤標識,從而有效避免了鍵盤對應(yīng)用程序的影響,提高了應(yīng)用程序的通用性。6/5/202338《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》部分常用的虛擬鍵代碼
虛擬鍵代碼對應(yīng)功能鍵虛擬鍵代碼對應(yīng)功能鍵VK_INSERTInsert漿VK_DOWN↓(箭頭向下)VK_LEFT←(左箭頭)VK_NEXTPageDown鍵VK_RIGHT→(右箭頭)VK_BACKBackSpace鍵VK_UP↑(箭頭向上)VK_RETURNEnter鍵VK_A~Z字母A~ZVK_TABTab鍵6/5/202339《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》顯示鍵盤輸入字符程序的實現(xiàn)方法●利用AppWizard向?qū)身椖棵麨镸yWinKey的應(yīng)用程序框架?!裨趹?yīng)用程序框架中添加保存字符的數(shù)據(jù)成員(既可以利用向?qū)砑?,也可以手工添??!裨趹?yīng)用程序框架中通過ClassWizard向?qū)砑酉⑻幚砗瘮?shù)。●編譯并運行應(yīng)用程序即可實現(xiàn)將鍵盤輸入的字符在窗口客戶區(qū)顯示。
這僅僅是實現(xiàn)步驟,詳細實現(xiàn)方法應(yīng)在VisualC++6.0環(huán)境下,具體講授。6/5/202340《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》3.鼠標處理程序
●鼠標是一種得到廣泛應(yīng)用的定位輸入設(shè)備?!裢ㄟ^鼠標的單擊、雙擊和拖動功能,用戶可以方便的操作Windows的圖形界面應(yīng)用程序?!馱indows應(yīng)用程序的鼠標消息,可以被任何窗口接受,只要鼠標移動到該窗口并有鼠標按鍵消息,該窗口就可以接受到鼠標消息,而與該窗口是否活動窗口或是否帶有輸入焦點沒有關(guān)系。
6/5/202341《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》鼠標消息
●windows操作系統(tǒng)通過鼠標驅(qū)動程序接受鼠標輸入消息,由鼠標設(shè)備驅(qū)動程序捕捉Windows的任何鼠標事件。●當用戶移動鼠標釋放鼠標按鍵時,將產(chǎn)生鼠標消息。鼠標消息可以分為客戶區(qū)鼠標消息和非客戶區(qū)鼠標消息?!袷髽嗽诖翱诳蛻魠^(qū)移動時產(chǎn)生WM_MOUSEMOVE消息.鼠標在客戶區(qū)產(chǎn)生的消息由Windows應(yīng)用程序處理,而在窗口邊界、菜單、標題欄和滾動條等非客戶區(qū)產(chǎn)生的鼠標消息一般由Windows系統(tǒng)處理。
6/5/202342《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●鼠標消息屬于Windows消息●鼠標消息均可直接利用VisualC++6.0的ClassWizard向?qū)砑邮髽讼⑻幚砗瘮?shù)●與鼠標消息對應(yīng)的消息處理函數(shù)如表12-3所示。消息處理函數(shù)
6/5/202343《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》常用鼠標消息處理函數(shù)表
鼠標消息消息處理函數(shù)備注WM_MOUSEMOVEvoidOnMouseMove(UINTnFlags,CPointpoint)鼠標移動WM_LBUTTONDOWNvoidOnLButtonDown(UINTnFlags,CPointpoint)單擊鼠標左鍵WM_MBUTTONDOWNvoidOnMButtonDown(UINTnFlags,CPointpoint)單擊鼠標中鍵WM_RBUTTONDOWNvoidOnRButtonDown(UINTnFlags,CPointpoint)單擊鼠標右鍵WM_LBUTTONUPvoidOnLButtonUp(UINTnFlags,CPointpoint)鼠標左鍵釋放6/5/202344《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》鼠標消息處理函數(shù)表(續(xù))WM_MBUTTONUPvoidOnMButtonUp(UINTnFlags,CPointpoint)鼠標中鍵釋放WM_RBUTTONUPvoidOnRButtonUp(UINTnFlags,CPointpoint)鼠標右鍵釋放WM_LBUTTONDBLICKvoidOnLButtonDblClk(UINTnFlags,CPointpoint)雙擊鼠標左鍵WM_MBUTTONDBLICKvoidOnMButtonDblClk(UINTnFlags,CPointpoint)雙擊鼠標中鍵WM_RBUTTONDBLICKvoidOnRButtonDblClk(UINTnFlags,CPointpoint)雙擊鼠標右鍵6/5/202345《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》畫筆的使用方法
●先定義自己的畫筆對象,取代默認的畫筆●將自定義畫筆選入設(shè)備環(huán)境,用指針變量保存默認的畫筆;●用設(shè)備環(huán)境中的畫圖工具繪圖●銷毀自定義畫筆,恢復設(shè)備環(huán)境的默認畫筆6/5/202346《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》12.4菜單應(yīng)用程序設(shè)計
●創(chuàng)建友好的用戶界面是開發(fā)應(yīng)用程序的一項重要任務(wù)。●菜單(Menu)是windows應(yīng)用程序不可缺少的重要組成部分,它是應(yīng)用程序命令項的列表。菜單是用戶與應(yīng)用程序進行交互的主要方式之一。
●VisualC++可以方便的得到美觀、適用、友好的用戶界面。6/5/202347《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》1.菜單簡介
●菜單主要包括下拉式和彈出式兩種?!駨棾鍪讲藛问菫榱隧憫?yīng)單擊鼠標右鍵而激活的彈出的菜單,可以出現(xiàn)在屏幕的任何位置。●下拉式菜單由上層水平列表項以及與其相連的彈出式菜單組成,當用戶選擇了上層某個列表項時,與之關(guān)聯(lián)的彈出式菜單就會出現(xiàn),而且可以形成級聯(lián)菜單?!馦FC類庫將菜單操作封裝在CMenu類中,所有關(guān)于菜單的操作都可以通過CMenu類的成員函數(shù)實現(xiàn)。6/5/202348《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》菜單的基本屬性●菜單的基本屬性主要包括標識符(ID)、標題(Caption)和提示(Prompt)三大要素。●標識符用來在程序中唯一標識菜單項?!駱祟}是實際顯示在菜單上的文字信息,用戶選擇菜單時首先看到的就是標題,提示是用戶在查看某個菜單時,顯示在窗口底端的文字信息。
6/5/202349《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》2.菜單資源編輯器
●VisualC++為用戶提供了一個便捷的菜單編輯器(
MenuEditor)?!癞斢脩羰褂肁ppWizard創(chuàng)建單文檔(SDI)或多文檔(MDI)應(yīng)用程序時,系統(tǒng)將為應(yīng)用程序自動生成默認的菜單欄?!裼脩舸蜷_菜單編輯器,進行適當修改,再編寫各菜單項相應(yīng)的消息處理函數(shù)即可。6/5/202350《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●在項目工作區(qū)(Workspace)窗口中選擇ResourceView選項卡●雙擊項目名,則應(yīng)用程序所有的資源以樹狀形式顯示出來●雙擊Menu文件夾,列出所有菜單的標識符,對于單文檔應(yīng)用程序則只有唯一的菜單資源IDR_MAINFRAME,雙擊該標識符,就打開了菜單編輯器。如下頁圖所示:
菜單資源編輯器:6/5/202351《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》菜單資源編輯器界面6/5/202352《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●具有當前焦點的菜單條四周擁有一個灰色的邊框,是用戶正在編輯的菜單條。●如果用戶想在當前菜單條前添加一個新的菜單條,按下Insert鍵,在該菜單條前將會出現(xiàn)一個新的空白菜單條,然后為其設(shè)置屬性?!駝h除菜單時,用戶應(yīng)將當前焦點移至該菜單處,使用Delete鍵進行刪除操作。如果此菜單條是菜單選項,則系統(tǒng)將直接將其刪除;而當此菜單條是一個下拉菜單時,系統(tǒng)會提示用戶是否刪除整個下拉菜單,若回答“是”,則系統(tǒng)將該菜單條所包含的所有菜單項全部刪除。菜單資源編輯器的使用6/5/202353《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●若菜單項的首字母都帶有下劃線,表示該字母是一個快捷鍵,用戶可以通過快捷鍵打開該菜單項。●加速鍵是指用戶通過按一組組合鍵的方式直接執(zhí)行該菜單命令,而不用先打開該菜單項?!窨旖萱I作用是打開菜單但并沒有執(zhí)行菜單命令●加速鍵的作用是執(zhí)行菜單命令(如Ctrl+C直接執(zhí)行復制功能)但卻沒有打開菜單項。加速鍵與快捷鍵6/5/202354《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》形式一:BOOLRectangle(LPCRECTlpRect);
形式二:
BOOLRectangle(intx1,inty1,intx2,inty2);參數(shù)lpRect是指向RECT結(jié)構(gòu)或Crect對象的指針
參數(shù)x1,y1用于指定矩形區(qū)域左上角坐標,參數(shù)x2,y2用于指定矩形區(qū)域右下角坐標。
Rectangle繪圖函數(shù)
6/5/202355《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》形式一:BOOLEllipse(LPCRECTlpRect);
形式二:
BOOLEllipse(intx1,inty1,intx2,inty2);參數(shù)x1,y1用于指定矩形區(qū)域左上角坐標,參數(shù)x2,y2用于指定矩形區(qū)域右下角坐標。
Ellipse繪圖函數(shù)6/5/202356《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》12.5工具欄應(yīng)用程序設(shè)計
●工具欄也是Windows應(yīng)用程序中常見的用戶界面?!馱indows應(yīng)用程序中,為方便用戶使用,通常將常用的菜單項提取出來,例如常用的文件菜單項(New、Open等)、編輯菜單項(Copy、Cut、Paste等)組成工具欄?!袢绻f菜單是Windows程序常用的界面元素,那么在很多情況下,工具欄可以更快捷、更方便、更有效、更直觀的進行某些操作。6/5/202357《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》1.工具欄簡介
●工具欄是應(yīng)用程序中一組提供快捷操作的工具,通常將常用的命令放在工具欄中。●工具欄由多個工具欄按鈕組成,其中每一個按鈕代表一個功能選項,這樣對于常用的命令可以直接進行操作,而不用每次都打開菜單欄進行選擇,從而可以方便用戶操作。6/5/202358《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》工具欄按鈕形式●工具欄按鈕有命令按鈕和復選框按鈕等形式。如Word中的打開文件、保存文件、打印等都是命令按鈕形式?!駥τ趶瓦x按鈕,第一次單擊后,保持選中狀態(tài),同時可以選擇其他按鈕來配合產(chǎn)生一定的效果,Word中使用的加黑(B)、下劃線(U)和斜體(I)就是標準的復選按鈕,當再次單擊時,則按鈕恢復初始狀態(tài)。6/5/202359《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》2.使用資源編輯器創(chuàng)建工具欄
●CToolBar類封裝了工具欄的功能?!馎ppWizard向?qū)г趧?chuàng)建的應(yīng)用程序的主框架窗口類CMainFrame中添加一個CToolBar類的數(shù)據(jù)成員m_wndToolBar,并在主框架窗口類CMainFrame的成員函數(shù)OnCreate中創(chuàng)建工具欄。
6/5/202360《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●AppWizard向?qū)樗鶆?chuàng)建的應(yīng)用程序加入了系統(tǒng)預(yù)定義的工具欄?!駪?yīng)用中應(yīng)根據(jù)應(yīng)用程序的具體要求,通過工具欄編輯器,修改預(yù)定義的工具欄或生成新的工具欄?!裣到y(tǒng)預(yù)定義工具欄具有??抗δ埽骺蚣艽翱谀軌蚪邮芄ぞ邫诘耐?俊!裢ǔG闆r下,工具欄中的按鈕對應(yīng)于菜單中的選項,所以,在定義工具欄的按鈕時,也會定義相應(yīng)的菜單項。使用資源編輯器創(chuàng)建工具欄(續(xù))6/5/202361《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》
●創(chuàng)建新工具欄時,可以選擇菜單項Insert|Resource,彈出如下頁圖所示的添加工具欄(InsertResource)對話框。
●在該對話框中雙擊Toolbar資源類型(或選擇Toolbar并單擊New按鈕)即可進入工具欄資源編輯器創(chuàng)建新的工具欄資源。創(chuàng)建新工具欄6/5/202362《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》InsertResource對話框界面
6/5/202363《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●編輯已有的工具欄資源,可以選擇項目工作區(qū)的ResourceView選項卡,單擊Toolbar●雙擊所需要編輯的工具欄資源(如IDR_MAINFRAME)即可,如下頁圖所示工具欄資源編輯器6/5/202364《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》工具欄資源編輯器界面
6/5/202365《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》工具欄資源編輯器中有兩個視圖窗口:●一個是預(yù)覽窗口,其中顯示正常大小的工具欄,包含用戶已經(jīng)添加的工具欄按鈕,用戶可以從這個窗口中預(yù)覽當前工具欄的外觀,并且可以在其中選擇當前編輯的工具欄按鈕,當前編輯的工具欄按鈕處于明顯凹狀態(tài)。●另一個視圖窗口是編輯窗口,顯示當前工具欄按鈕的放大位圖,用戶可以利用資源編輯器中的Graphics圖形工具欄來創(chuàng)建或編輯工具欄按鈕的位圖資源。工具欄資源編輯器的應(yīng)用6/5/202366《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●當創(chuàng)建完一個工具欄按鈕后,已有的按鈕之后將會出現(xiàn)一個新的空白按鈕,用戶可以按照順序依次創(chuàng)建工具欄按鈕。●也可以改變工具欄上按鈕的排列順序:在預(yù)覽窗口中選中第一個按鈕,然后用鼠標將其拖放至另一個按鈕處,即可交換這兩個按鈕的順序。●更新按鈕的位圖:則需先選中此按鈕,按下Delete鍵即可刷新其位圖資源?!駝h除按鈕:用戶只須在預(yù)覽窗口中選中該按鈕,按下鼠標左鍵不放,將此按鈕拖出預(yù)覽窗口區(qū)域即可。工具欄資源編輯器的應(yīng)用(續(xù))6/5/202367《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》12.6狀態(tài)欄應(yīng)用程序設(shè)計
●狀態(tài)欄的作用是在程序的控制下,顯示當前程序的執(zhí)行狀態(tài)或簡要的說明信息,例如,當選取某工具或菜單項時,在狀態(tài)欄中顯示說明文字?!駹顟B(tài)欄既不接受用戶輸入也不產(chǎn)生命令消息?!駹顟B(tài)欄可支持兩種類型的文本窗口,分別是信息行窗口和狀態(tài)指示器窗口。6/5/202368《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》
狀態(tài)欄的實現(xiàn)
●一般情況下,狀態(tài)欄位于Windows應(yīng)用程序窗口的底部,通常由一系列的面板(Pane)組成?!駹顟B(tài)欄用于文本輸出或指示器,其中常見的指示符有CapsLock、NumLock、ScrollLock等?!袢绻贏ppWizard向?qū)У腟tep4對話框中選擇了Initialstatusbar項,那么AppWizard向?qū)傻膽?yīng)用程序就擁有一個默認的狀態(tài)欄。6/5/202369《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》創(chuàng)建狀態(tài)欄的目的是提供一個輸出區(qū)域,定義提示信息,建立特定狀態(tài)和提示信息的聯(lián)系。CStatusBar類封裝了狀態(tài)欄的功能。通過AppWizard向?qū)?chuàng)建應(yīng)用程序時:●向?qū)г趹?yīng)用程序的主框架窗口類CMainFrame中定義了一個CStatusBar類的數(shù)據(jù)成員mwndStatusBar?!裨谥骺蚣艹绦騇ainFram.cpp中定義狀態(tài)欄指示器標識符數(shù)組IndicatorIDs?!裨谥骺蚣艽翱陬惖某蓡T函數(shù)OnCreate中創(chuàng)建狀態(tài)欄。狀態(tài)欄的實現(xiàn)(續(xù))6/5/202370《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》12.7對話框應(yīng)用程序
●對話框是程序與用戶之間的交互的工具。例如打開文件、查詢以及進行其他數(shù)據(jù)交換時都需要使用對話框,從最簡單的詢問“是”與“否”的消息框,到復雜的數(shù)據(jù)處理框,都可以用對話框來完成。●對話框是一個窗口,它繼承于MFC的CWnd類,它具備了窗口的很多屬性,不僅可以接受消息、可以被移動和關(guān)閉,而且還可以在它的客戶區(qū)中進行繪圖操作。●在設(shè)計對話框時可以把控件直接粘到對話框,以實現(xiàn)各種操作。6/5/202371《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》1.對話框的分類
對話框按其動作模式分為:●模式對話框●無模式對話框6/5/202372《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》模式對話框
●MFC的對話框類(CDialog)既支持模式對話框也支持無模式對話框。●對于模式對話框,如OpenFile對話框,在同一個應(yīng)用程序中,只有該對話框被關(guān)閉后,才能對程序的其他功能進行操作?!衲J綄υ捒虮淮蜷_之后,對話框就接管了父窗口的輸入控制權(quán),并掌握了控制權(quán)。只有當用戶關(guān)閉了該對話框之后,對話框才會把控制權(quán)交給父窗口。6/5/202373《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》無模式對話框
無模式對話框:●對話框與父窗口共享控制權(quán)●用戶可以在主窗口和對話框之間來回切換●在對話框仍保留在屏幕上的同時,用戶還可以在應(yīng)用程序的其他窗口中進行操作6/5/202374《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》2.常用對話框類
所有對話框類的基類是CDialog常用對話框類包括:●文件存取對話框類●顏色設(shè)定對話框類●字型設(shè)定對話框類●打印設(shè)定對話框類●字符串搜索與替換對話框類6/5/202375《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》3.對話框的常用函數(shù)
函數(shù)功能Cdialog::Create創(chuàng)建無模式對話框CWnd::UpdateData設(shè)定對話框控制項的數(shù)據(jù)或取得控制項數(shù)據(jù)CWnd::GetDlgltem獲得子窗口或?qū)υ捒騼?nèi)部控制項對象的指針CWnd::GetDlgltemText獲得控制項的標題或字符串內(nèi)容CWnd::GetDlgltemInt獲得控制項的文本內(nèi)容,并轉(zhuǎn)換為整數(shù)CWnd::SetDlgltemText設(shè)定控件顯示的文本內(nèi)容CWnd::SetDlgltemInt將整數(shù)轉(zhuǎn)換為文本并賦予控件CWnd::DlgDirSelect獲得列表框當前選定項的字符串內(nèi)容6/5/202376《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》CWnd::DlgDirList將指定路徑下符合文件屬性和描述的所有文件加到列表框中CWnd::CheckDlgButton設(shè)置/取消按鈕的標記符或更改一個三態(tài)按鈕的狀態(tài)CWnd::CheckRadioButton標記指定的圓形按鈕,同時刪除同組的其他圓形按鈕的標記符CWnd::GetCheckRadioButton獲得指定組群中標記了的圓形按鈕代碼CscrollBar::SetScrollRange設(shè)定滾動條的范圍(最大最小位置值)CscrollBar::SetScrollPos設(shè)定滾動條的位置CscrollBar::GetScrollRange獲得滾動條的滾動范圍CscrollBar::GetScrollPos獲得滾動條的當前位置對話框的常用函數(shù)(續(xù))6/5/202377《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》對話框的創(chuàng)建一般可以按以下步驟進行:●對話框界面設(shè)計●生成管理對話框的新類●定義數(shù)據(jù)成員●定義消息及消息處理函數(shù)●對話框的顯示等相關(guān)工作創(chuàng)建對話框的一般步驟
6/5/202378《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》12.8控件應(yīng)用程序設(shè)計
●Windows應(yīng)用程序中控件的應(yīng)用隨處可見,任意打開一個窗口或?qū)υ捒?,一般都具有各種各樣的控件,如命令按鈕、靜態(tài)文本、編輯框、列表框等?!窨丶且环N子窗口,應(yīng)用程序用它來與其他窗口一起完成簡單的輸入輸出操作。●在Windows應(yīng)用程序中,窗口和對話框是框架或容器,控件是靈魂。6/5/202379《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》1.控件簡介
●控件是一種特殊的對象,是Windows應(yīng)用程序和用戶進行交互的重要手段。●控件的使用很好的體現(xiàn)了Windows系統(tǒng)面向?qū)ο蟮奶攸c。●控件通??梢猿霈F(xiàn)在對話框或工具欄中,也可以出現(xiàn)在窗口中。●VisualC++6.0提供了各種控件來實現(xiàn)直觀、方便、快捷的交互。6/5/202380《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》在VisualC++中,控件可以分為:●Windows常用控件●ActiveX控件●其他MFC類庫所支持的控件控件的分類6/5/202381《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》Windows常用控件
Windows常用控件包括使用頻率最高的標準控件和用戶自定義控件,如:
●靜態(tài)文本控件●命令按鈕控件●編輯框控件●列表框控件●復選框控件●組合框控件●滾動條控件6/5/202382《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》ActiveX控件
ActiveX控件又稱為OLE控件,常用于Windows應(yīng)用程序的對話框中,或用于WWW的網(wǎng)頁中。6/5/202383《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》其他MFC類庫所支持的控件
除Windows常用控件和ActiveX控件之外,MFC類庫還支持:●CBitmapButton控件●CCheckListBox控件●CDragListBox控件●CProgressCtr控件●CStatusBar控件等6/5/202384《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》2.常用控件類
控件MFC類簡要說明靜態(tài)文本控件CStatic用于為其他控件顯示文本標簽圖形控件CStatic用于顯示圖標編輯框控件CEdit用于文本輸入的控件組框控件CComboBox將列表框和編輯框控件有機組合按鈕控件CButton用于執(zhí)行命令單選按鈕CButton用于對互相排斥的選項進行選擇復選框CButton用于選擇多個獨立的選項水平滾動條控件CScrollBar提供水平滾動功能垂直滾動條控件CScrollBar提供垂直滾動功能列表框控件CListBox以列表的方式給用戶提供選擇6/5/202385《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》3.創(chuàng)建控件
一般情況下,利用VisualC++資源編輯器創(chuàng)建控件的步驟如下:●打開資源編輯器,利用控件工具欄可視化地向?qū)υ捒蚧虼翱谥刑砑铀枰目丶??!駱?gòu)造對話框?qū)ο蟆!裾{(diào)用該對象的成員函數(shù)Create()或DoModal,系統(tǒng)自動創(chuàng)建相應(yīng)控件并將其放入對話框窗口中。6/5/202386《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》12.9數(shù)據(jù)庫應(yīng)用程序
VisualC++提供了以下多種數(shù)據(jù)庫訪問技術(shù):
●ODBC●DAO●ADO6/5/202387《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》1.ODBC技術(shù)概述
●ODBC即開放數(shù)據(jù)庫連接。●ODBC為各種類型的數(shù)據(jù)庫管理系統(tǒng)提供了統(tǒng)一的編程接口,用戶可以輕松自如地在應(yīng)用程序中進行跨數(shù)據(jù)庫的操作?!馩DBC結(jié)構(gòu)是分層管理的,ODBC包含了一組動態(tài)鏈接庫(DLL),擁有一個獨特的DLL結(jié)構(gòu)?!馩DBC系統(tǒng)完全實現(xiàn)了模塊化,這些動態(tài)鏈接庫提供了標準的數(shù)據(jù)庫應(yīng)用程序開發(fā)接口,通過它可以實現(xiàn)對所有含有ODBC驅(qū)動程序數(shù)據(jù)庫的訪問。6/5/202388《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》ODBC技術(shù)概述(續(xù))●MFC類庫的CRecordset和CDatabase封裝了基于ODBC的數(shù)據(jù)庫操作?!馛Database類的對象代表了與數(shù)據(jù)源ODBC的連接,而Crecordset類的對象則代表了記錄集?!馩DBC是基于SQL結(jié)構(gòu)化查詢語言而開發(fā)的,并且它還定義了C/C++語言與SQL數(shù)據(jù)庫之間的接口。6/5/202389《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》●通過ODBC技術(shù),用戶在編程時不用關(guān)心數(shù)據(jù)庫的類型以及數(shù)據(jù)的存儲格式,用同樣的ODBC數(shù)據(jù)庫訪問函數(shù)就可以實現(xiàn)對各種數(shù)據(jù)庫進行操作?!袢绻脩粜枰诔绦蛑性L問實際數(shù)據(jù),首先需要建立一個ODBC數(shù)據(jù)源,然后再通過ODBC接口對數(shù)據(jù)進行訪問。ODBC技術(shù)概述(續(xù))6/5/202390《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》2.ADO技術(shù)●ADO(ActiveDataObject)即活動數(shù)據(jù)對象,是Microsoft為數(shù)據(jù)庫應(yīng)用程序開發(fā)推出的新的數(shù)據(jù)庫訪問技術(shù)?!馎DO實際上一種基于組件對象模型的自動化接口技術(shù),它以對象鏈接和嵌入的數(shù)據(jù)庫(OLEDB)為基礎(chǔ),利用它可以快速的創(chuàng)建數(shù)據(jù)庫應(yīng)用程序?!窭肁DO技術(shù)訪問數(shù)據(jù)庫,無需首先在Windows的ODBC數(shù)據(jù)管理器中注冊數(shù)據(jù)源,在程序設(shè)計過程中就可以完成與數(shù)據(jù)庫的連接工作。
6/5/202391《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》參加課內(nèi)外討論6/5/202392《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》本章結(jié)束6/5/202393《面向?qū)ο蟪绦蛟O(shè)計與VisualC++6.0教程》VnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7IaMdPh
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中秋節(jié)給員工慰問信(14篇)
- 學校食堂臨時用工協(xié)議書美篇
- 交通安全承諾書模板錦集七篇
- 中秋晚會主持詞范文(6篇)
- 學生做飯課件教學課件
- 中班熊貓課件教學課件
- 影響企業(yè)軟實力形成的因素分析
- 日期和時間 詞匯 編制說明
- 八年級上學期語文第一次月考試卷-2
- 四年級數(shù)學(上)計算題專項練習及答案匯編
- 各種閥門的用途及分類
- 排油煙設(shè)施清洗作業(yè)的風險識別、評價及控制
- Lindmark平衡評分標準(WHO認證)
- 銅唑等17 種防腐劑對毛竹的室內(nèi)耐腐試驗※
- 壓電陶瓷蜂鳴片項目可行性研究報告寫作范文
- 通道農(nóng)藥殘留檢測儀操作說明書
- 冷庫工程施工質(zhì)量保證體系及質(zhì)量保證措施
- 幕墻使用、保養(yǎng)、維修說明書
- 數(shù)碼插畫課件新版]
- 八年級數(shù)學上冊期中考試試卷分析
- 毽球校本課程開發(fā)綱要
評論
0/150
提交評論