第3章windows編程基礎(chǔ) (2)

上傳人:m**** 文檔編號:249793404 上傳時間:2024-10-30 格式:PPT 頁數(shù):73 大?。?.06MB
收藏 版權(quán)申訴 舉報(bào) 下載
第3章windows編程基礎(chǔ) (2)_第1頁
第1頁 / 共73頁
第3章windows編程基礎(chǔ) (2)_第2頁
第2頁 / 共73頁
第3章windows編程基礎(chǔ) (2)_第3頁
第3頁 / 共73頁

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《第3章windows編程基礎(chǔ) (2)》由會員分享,可在線閱讀,更多相關(guān)《第3章windows編程基礎(chǔ) (2)(73頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,*,*,,前一頁,,休息,第,3,章,Windows,編程基礎(chǔ),VC++,程序設(shè)計(jì),,,1,本章導(dǎo)讀,Windows,操作系統(tǒng)是一個多任務(wù)、面向?qū)ο蟮膱D形操作系統(tǒng)。,,在,Windows,操作環(huán)境中,,Windows,應(yīng)用程序采用“,基于消息的事件驅(qū)動,”運(yùn)行機(jī)制,這是它與過去的面向過程的應(yīng)用程序機(jī)制的不同之處。,面向過程的編程方式,:,程序執(zhí)行的流程遵從程序員預(yù)先規(guī)定的路徑,.,,面向?qū)ο蟮?Windows,程序執(zhí)行順序取決于,事件和消息發(fā)生的順序,。,,Windows,應(yīng)用程序設(shè)計(jì)的重點(diǎn)是,編

2、寫事件和消息的處理程序,。,,2,,本章主要內(nèi)容,事件驅(qū)動與,windows,消息系統(tǒng),,Windows,窗口,,win32,程序開發(fā)流程,,MFC,概述,,MFC,應(yīng)用程序框架結(jié)構(gòu),,MFC,消息處理,,,3,,3.1,事件驅(qū)動與,windows,消息系統(tǒng),,程序開始,程序結(jié)束,消息源,1,消息源,2,消息源,n,是否退出,派送消息,捕獲消息,處理消息,是,否,.,,.,,.,圖,3.1,事件驅(qū)動的程序模型,,4,,Windows,消息,,Windows,消息,,,消息來源,,,,5,,Windows,消息系統(tǒng),消息隊(duì)列,,,消息驅(qū)動模型,,,句柄,,消息的格式,,,創(chuàng)建消息循環(huán),,窗口,1

3、,窗口函數(shù),,WndPros,用戶交互內(nèi)核,USER,消息隊(duì)列,窗口,2,窗口函數(shù),,WndPros,消息隊(duì)列,消息,1,消息,2,消息,3,圖,3.2,消息驅(qū)動模型,,6,,編寫,Windows,應(yīng)用程序必須首先了解以下內(nèi)容:,,(1),窗口的概念,(2),事件驅(qū)動的概念,,(3),消息,(4),句柄,對象是,Windows,,的規(guī)范部件,窗口,,菜單,,按鈕,,對話框,,程序模塊,編寫,Windows,,程序相當(dāng)一部分工,,作是在創(chuàng)建對象和,,為對象屬性賦值,對象特征:具有規(guī)范形態(tài)和操作模式,編程方法,傳統(tǒng)編寫法,-->API,,交互式方法,-->,MFC,3.2 Windows,窗口

4、,,,7,,一個應(yīng)用程序的窗口一般包含下列組成部分:,窗口邊界,工作區(qū),控制菜單框,下拉菜單,水平滾動條,垂直滾動條,最大化按鈕,最小化按鈕,標(biāo)題欄,1.,窗口,,8,,窗口是由應(yīng)用程序創(chuàng)建的一個用于,接收用戶輸入和顯示輸出的矩形區(qū)域,。是系統(tǒng)管理應(yīng)用程序的基本單位。,,窗口由“非客戶區(qū)”和“客戶區(qū)”組成。,,非客戶區(qū)由系統(tǒng)繪制,包括菜單、工具欄、最大化按鈕等。客戶區(qū)由應(yīng)用程序繪制,用于輸出數(shù)據(jù)和接受用戶的輸入。,,編寫一個,Windows,應(yīng)用程序首先應(yīng)創(chuàng)建一個或多個窗口,隨后應(yīng)用程序的運(yùn)行過程即是窗口內(nèi)部、窗口與窗口之間、窗口與系統(tǒng)之間進(jìn)行,數(shù)據(jù)處理與數(shù)據(jù)交換,的過程。,窗口,,9,,Wi

5、ndows,程序設(shè)計(jì)是針對事件或,消息,的處理進(jìn)行,。,消息是描述事件發(fā),,生的信息,,如按下鼠標(biāo)或鍵盤,Windows,對消息有一套嚴(yán)格的定義,,,并在其產(chǎn)生時將其發(fā)送給所有相關(guān)的應(yīng)用程序,,,這些消息用于驅(qū)動應(yīng)用程序運(yùn)行以實(shí)現(xiàn)一定的功能。,Windows,程序的執(zhí)行順序取決于,事件發(fā)生的順序,,程序的執(zhí)行順序是由順序產(chǎn)生的消息驅(qū)動的,但是消息的產(chǎn)生往往并不要求有次序之分。,,,,事件驅(qū)動,,10,,消息驅(qū)動機(jī)制,派送消息,消息源,1,消息源,2,消息源,n,否,程序開始,程序結(jié)束,捕獲消息,是否退出,,消息,是,·,,·,,·,處理消息,,11,,3,消息,,消息的含義,,消息來源,,消息

6、隊(duì)列,,消息的結(jié)構(gòu),,消息是關(guān)于所發(fā)生的事件的通知,.,事件是一個動作,,,如按下鼠標(biāo)、選擇菜單,輸入消息、控制消息、系統(tǒng)消息、用戶消息,USER,,用戶交互內(nèi)核 來管理,,12,,,,Windows,應(yīng)用程序的結(jié)構(gòu)是,基于消息驅(qū)動模型,,程序的任何一個動作都是在接收到一條消息后發(fā)生的,,如:,,WM_KEYDOWN WM_KEYUP WM_CHAR WM_LBUTTONDOWN WM_LBUTTONUP WM_PAINT WM_COMMAND,等,,,每條消息都可以帶有參數(shù)(,wParam,,,lParam,)。,,,大部分的,消息,都關(guān)聯(lián)到某

7、個,窗口,,每個窗口都有一個消息處理過程(函數(shù)),,,屬于某個窗口的消息都將由相應(yīng)的消息處理過程來進(jìn)行處理。,,每個,Windows,應(yīng)用程序都有一個,消息隊(duì)列,,,Windows,系統(tǒng)會把屬于各個應(yīng)用程序的消息放入各自的消息隊(duì)列,應(yīng)用程序不斷地從自己的消息隊(duì)列中獲取消息并把它們,發(fā)送,到相應(yīng)的窗口處理過程。這個,循環(huán),(取消息,-,處理消息)一直到用戶以某種方式(如:關(guān)閉應(yīng)用程序的主窗口)結(jié)束程序而終止。下面給出了,Windows,應(yīng)用程序的一個框架:,消息的含義,,13,,,消息隊(duì)列,,應(yīng)用程序,1,窗口函數(shù),,WndProc,消息映射,默認(rèn)窗口函數(shù),,DefWndowProc,,App1

8、,消息隊(duì)列,,,App2,消息隊(duì)列,,,App3,消息隊(duì)列,,,系統(tǒng)隊(duì)列,輸入消息,系統(tǒng)消息,post,,Message,Send,,Message,USER,,用戶交互內(nèi)核,,14,,消息的結(jié)構(gòu)定義:,,typedef,,struct,,tagMSG,,,{,HWND,hwnd,;,接收消息的,窗口句柄,為,null,,,則可檢索所有駐留在消息隊(duì)列中的消息,,,UINT message;,消息值,由,Windows.h,頭文件中的宏定義來標(biāo)識,,,WPARAM wParam;32,位,消息的附加信息,wParam,和,lParam,,,不同消息其值有所不同,,,LPARAM,lParam,

9、;,,DWORD time;,指定消息送至隊(duì)列的時間,,,POINT pt;,指定消息發(fā)送時屏幕光標(biāo)的位置, 其數(shù)據(jù)類型,POINT,是一個結(jié)構(gòu)體,,}MSG;,消息號,:,由事先定義好的消息名標(biāo)識,字參數(shù),(,wParam,),,長字參數(shù),(,lParam,),,:,,,,用 于提供消息的,附加信息,,消息,附加信息,與具體消息號的值有關(guān),,,對于控件,,typedef,,struct,,tagPOINT,,,{LONG x,;,,,LONG y;,,} POINT;,,消息的結(jié)構(gòu),,15,,常用句柄類型及其說明,句柄是一個,4,字節(jié)長的數(shù)值,用于標(biāo)識應(yīng)用程序中不同的,對象,和,同類對象中不

10、同的實(shí)例,窗口,,按鈕,,圖標(biāo),,滾動條,,輸出設(shè)備,,控制,,文件,,應(yīng)用程序通過,,句柄訪問相應(yīng),,的對象信息,HWND,窗口句柄,HDC,設(shè)備環(huán)境句柄,,HBITMAP,位圖句柄,HCURSOR,光標(biāo)句柄,,HICON,圖標(biāo)句柄,HFONT,字體句柄,,HMENU,菜單句柄,HPEN,畫筆句柄,,HFILE,文件句柄,HBRUSH,畫刷句柄,,HINSTANCE,當(dāng)前實(shí)例句柄,,句柄,,16,,,一個完整的,Windows,應(yīng)用程序通常由,五種類型,的文件組成。,1.C,語言源程序文件,,2.,頭文件,,3.,模塊定義文件,,4.,資源描述文件,,5.,項(xiàng)目文件,3.3 win32,程

11、序開發(fā)流程,,一個,windows,應(yīng)用程序常具有以下特性:,,(,1,)消息驅(qū)動機(jī)制 (,2,)圖形設(shè)備界面(,GDI,),,(,3,),基于資源的程序設(shè)計(jì) (,4,) 動態(tài)鏈接庫,,17,,,入口函數(shù),WinMain,窗口函數(shù),WndProc,Windows,應(yīng)用程序,構(gòu)成基,,本框架,包含各種數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)與函數(shù)等,1.,所有應(yīng)用程序的入口,類似,Main,函數(shù),,,,2.,完成一系列的定義和初始化,并產(chǎn)生消息循環(huán),源程序組成結(jié)構(gòu),,18,,(1),WinMain,函數(shù),三個基本的組成部分:,函數(shù)說明,、,初始化,和,消息循環(huán),,功能,注冊窗口類,建立窗口及執(zhí)行必要的初

12、始化,進(jìn)入消息循環(huán),根據(jù)接受的消息調(diào)用相應(yīng)的處理過程,當(dāng)消息循環(huán)檢索到,WM_QUIT,時終止程序運(yùn)行,WinMain,(),函數(shù),相當(dāng)于,main(),,19,,,,,WndProc,函數(shù)由一個或多個,switch,語句組成。每一條,case,語句對應(yīng)一種消息,當(dāng)應(yīng)用程序接收到一個消息時,相應(yīng)的,case,語句被激活并執(zhí)行相應(yīng)的響應(yīng)程序模塊。,WndProc,包含了對各種可能接收到的消息的處理過程,定義,了應(yīng)用程序?qū)邮盏降牟煌⒌捻憫?yīng),(,2,) 窗口函數(shù),WndProc,和消息處理,,20,,開始執(zhí)行,初始化應(yīng)用,初始化和創(chuàng)建應(yīng)用窗口,進(jìn)入消息循環(huán)并從消息隊(duì)列得到一個消息,當(dāng)前消息是否

13、,WM_QUIY?,終止執(zhí)行,程序是否定義了對此消息的處理,進(jìn)行默認(rèn)處理,處理消息,N,N,Y,Y,Windows,應(yīng)用程序的執(zhí)行過程,,21,,,,在,Windows.h,中,定義了,Windows,,應(yīng)用程序中包含種類繁多的數(shù)據(jù)類型,數(shù)據(jù)類型,,22,,,MSG,:,包含一個消息的全部信息,是消息發(fā)送的格式,WNDCLASS,:,包含一個窗口類的全部信息及屬性,POINT,:,定義了屏幕上或窗口中的一個點(diǎn)的,X,和,Y,坐標(biāo),RECT,:,定義了一個矩形區(qū)域及其左上角和右下角的坐標(biāo),幾種重要的結(jié)構(gòu),一些重要的數(shù)據(jù)結(jié)構(gòu),,23,,Windows API,編程舉例,,#include ,,#i

14、nclude ,,#include <,stdio.h,>,,,int,,GetRoot,(float,a, float b, float c, double *root),,{//,求一元二次方程的根,函數(shù)返回實(shí)根的值,,,double delta,,deltasqrt,;,,delta = b*b - 4.0 * a * c;,,if (delta<0.0) return 0; //,無實(shí)根,,,deltasqrt,=,sqrt(delta,);,,if (a!=0.0) {,,root[0] = (-b + deltasqrt)/(2.0 * a);,,root[1] = (-b - d

15、eltasqrt)/(2.0 * a); },,else,,return 0;,,if (root[0] == root[1]) return 1;,,else return 2;,,},,LRESULT CALLBACK,WndProc,(HWND, UINT, WPARAM, LPARAM); //,聲明窗口過程,,24,,WinMain,(),函數(shù),int,WINAPI,WinMain,(HINSTANCE,hInstance,, HINSTANCE,hPrevInstance,,,,LPSTR,lpCmdLine,,,int,,nCmdShow,),,{,,HWND,hwnd,; //

16、,窗口句柄,,,MSG,msg,; //,消息,,,WNDCLASS,wndclass,; //,窗口類,,,wndclass.style,= CS_HREDRAW | CS_VREDRAW ;,,,wndclass.lpfnWndProc,=,WndProc,;,,,,wndclass.cbClsExtra,= 0 ;,,,wndclass.cbWndExtra,= 0 ;,,,wndclass.hInstance,=,hInstance,;,,,wndclass.hIcon,=,LoadIcon,(NULL, IDI_APPLICATION) ;,,,wndclass.hCursor,=

17、,LoadCursor,(NULL, IDC_ARROW) ;,,,wndclass.hbrBackground,= (HBRUSH),GetStockObject,(WHITE_BRUSH) ;,,,wndclass.lpszMenuName,= NULL ;,,,wndclass.lpszClassName,= ",SDKWin,"; //,窗口類名,,,if (!,RegisterClass,(&,wndclass,)) //,注冊窗口,,,{,,,MessageBox,(NULL, ",窗口注冊失敗!,", ",HelloWin,", 0) ;,,return 0 ;,,},與窗口函

18、數(shù)關(guān)聯(lián),,25,,//,創(chuàng)建窗口,,,hwnd,=,CreateWindow,(",SDKWin,", //,窗口類名,,,",實(shí)驗(yàn),1——Windows,編程基礎(chǔ),", //,窗口標(biāo)題,,,WS_OVERLAPPEDWINDOW, //,窗口樣式,,,CW_USEDEFAULT, //,窗口最初的,x,位置,,,CW_USEDEFAULT, //,窗口最初的,y,位置,,,CW_USEDEFAULT, //,窗口最初的,x,大小,,,CW_USEDEFAULT,

19、 //,窗口最初的,y,大小,,,NULL, //,父窗口句柄,,,NULL, //,窗口菜單句柄,,,hInstance,, //,應(yīng)用程序?qū)嵗浔?,,NULL) ; //,創(chuàng)建窗口的參數(shù),,,ShowWindow,(,hwnd,,,nCmdShow,) ; //,顯示窗口,,,UpdateWindow,(,hwnd,) ; //,更新窗口,包括窗口的客戶區(qū),,,while,(,GetMessage,(&

20、,msg,, NULL, 0, 0)),,{,,,TranslateMessage,(&,msg,) ; //,轉(zhuǎn)換某些鍵盤消息,,,DispatchMessage,(&,msg,) ; //,將消息發(fā)送給窗口過程,這里是,WndProc,,},,return,msg.wParam,;,,},進(jìn)入消息循環(huán),并將消息發(fā)送給窗口過程,WndProc,,26,,窗口函數(shù),WndProc,( ),,LRESULT CALLBACK,WndProc,(HWND,hwnd,, UINT message, WPARAM,wParam,, LPARAM,lParam,),,{,,HDC,hdc,; //,

21、設(shè)備環(huán)境,,,PAINTSTRUCT,ps,; //,繪圖結(jié)構(gòu),,,static HWND,hwndButton,,,hwndEdit,; //,按鈕、編輯框句柄,,,char,strEdit,[80], strA[3][80], strHint[80], str[80]=“”; //,提示信息,,,float a[3]; //,方程的,3,個系數(shù),,,double root[2]; //,方程的,2,個實(shí)根,,,int,i, j, k, m; //,循環(huán)變量,計(jì)數(shù)器,,,switch (message),,{,,case,WM_CREATE,:

22、//,窗口創(chuàng)建產(chǎn)生的消息,,,hwndEdit,=,CreateWindow(“edit,”, NULL,,//,創(chuàng)建編輯框,,,W S_CHILD|WS_VISIBLE|WS_BORDER,10, 60, 200, 25,,,,hwnd,, NULL, NULL, NULL );,,,hwndButton,=,CreateWindow(“button,”, “,計(jì) 算,”,,,//,創(chuàng)建按鈕,,,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 240, 60, 80, 25,,,,hwnd,, NULL, NULL, NULL );,,return 0 ;,,cas

23、e,WM_DESTROY,: //,當(dāng)窗口關(guān)閉時產(chǎn)生的消息,,,PostQuitMessage,(0) ;,,return 0 ;,,,27,,,case,WM_COMMAND,: //,命令消息,控件產(chǎn)生的通知代碼在,wParam,的高字中,,,if (((,HWND)lParam,==,hwndButton,)&&(,HIWORD(wParam,) == BN_CLICKED )),,{//,按下按鈕,,//,獲取編輯框控件的內(nèi)容,,,并將其轉(zhuǎn)換成,float,數(shù)值,,,GetWindowText,(,hwndEdit,,,strEdit,, 80); //,獲取編輯框內(nèi)容,,,k =

24、0; m = 0;,,for (j=0; j<80; j++),,{,,if (,strEdit[j,] == ','){ k++; m = 0;},,else {,,,strA,[k][m,] =,strEdit[j,];,,m++;,,},,},,for (i=0; i<3; i++),,a[i] = (,float)atof(strA[i,]); //,將字符串轉(zhuǎn)換成,float,數(shù)值,,,int,n =,GetRoot,(a[0], a[1], a[2], root); //,調(diào)用,GetRoot,函數(shù),計(jì)算方程根,,,if (n<1),strcpy(,str,, ",方程無

25、根,!") ;,,else,sprintf(str,,",方程的解為:,%f, %f", root[0], root[1]);,,,InvalidateRect,(hwnd,, NULL, TRUE);,,},,case,WM_PAINT,:,,,hdc,=,BeginPaint(hwnd,, &,ps,);,,,strcpy(strHint,, ",請輸入一元二次方程的,3,個系數(shù),中間用逗號分隔,");,,,TextOut(hdc,, 10, 40,,strHint,,,strlen(strHint,));,,,TextOut(hdc,, 10, 90,,str,,,strlen(str

26、,));,,,EndPaint(hwnd,, &,ps,);,,return 0 ;,,},,return,DefWindowProc(hwnd,message,wParam,lParam,);,,},,強(qiáng)制窗口重新繪制,,28,,3.4 MFC,概述,MFC,類庫簡介,,MFC,中類的層次結(jié)構(gòu),,MFC,應(yīng)用程序框架,,利用,AppWizard,生成,MFC,應(yīng)用程序,,MFC,的消息處理,,29,,3.4.1 MFC,簡介,,類庫是一個可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的類的集合。,,MFC,庫,——Microsoft,基本類庫,是一個,Windows,應(yīng)用程序框架,它把傳統(tǒng)的,Window

27、s,編程規(guī)范中的大多數(shù)內(nèi)容封裝成為各種類,它定義了應(yīng)用程序的結(jié)構(gòu),并實(shí)現(xiàn)了標(biāo)準(zhǔn)的用戶接口,提高了編程效率,,可以管理窗口、菜單、對話框,實(shí)現(xiàn)基本的輸入,/,輸出和數(shù)據(jù)存儲。,MFC,庫簡介,,30,,3.4.2 MFC,類的層次結(jié)構(gòu)和常用類,MFC,分類,,,CObject_derived,,類,,,Non_CObject_derived,,類,CObject,CCmdTarget,CWinThread,CWinApp,CWnd,CFrameWnd,CView,CDocument,根類,命令相關(guān)類,應(yīng)用程序類,窗口類,文檔類,視圖類,框架窗口類,線程基類,,31,,非,CObject,派生類

28、,通用工具類,,CString,,,CTime,,,CRect,,Cpoint,,CSize,MFC,支持類,,CArchive,,CDumpContext,,CRuntimeClass,,CFileStatus,,CMemoryState,,CTypePointerArray,,,,,32,,3.5 MFC,應(yīng)用程序框架結(jié)構(gòu),,MFC,庫簡介,MFC,的,應(yīng)用程序框架,優(yōu)點(diǎn):,,MFC,按照,C++,類的層次形式組織在一起,,,類封裝了,Windows API,函數(shù)并提供,Windows,應(yīng)用程序常見任務(wù)的缺省處理代碼。幾個基類提供一般功能,由基類派生的類實(shí)現(xiàn)更具體的行為。,,MFC,提供

29、了,文檔和視圖,模型以實(shí)現(xiàn)數(shù)據(jù)和顯示的分離。文檔類(,Document,),用來維護(hù)、管理數(shù)據(jù),包括數(shù)據(jù)的讀取、存儲與修改;視圖類(,View,),用來接收并顯示數(shù)據(jù),將這些數(shù)據(jù)交給文檔類來處理。,,MFC,庫提供了自動消息處理功能。,MFC,的框架結(jié)構(gòu)通過,消息映射,機(jī)制,將,Windows,消息直接映射到,—,個成員函數(shù)進(jìn)行處理,,,簡化了消息的處理方式。,,33,,,,應(yīng)用程序框架包含用于生成應(yīng)用程序所必需的各種面向?qū)ο蟮慕M件的集合,.,,VC++6.0,中,,MFC,APPWizard,能方便地生成應(yīng)用程序框架,,,然后在此基礎(chǔ)上進(jìn)行進(jìn)一步的編輯工作,.,,MFC,生成的應(yīng)用程序包括如

30、下一些要素,:,,,34,,WinMain,(),函數(shù),,,隱藏在應(yīng)用程序框架,中;,,應(yīng)用程序類,(,如,CMyHello,App,),,該類的每個對象代表一個應(yīng)用程序,,,程序中默認(rèn)定義一個全局,CMyHelloApp,對象即,theApp,;,,應(yīng)用程序啟動,WinMain,(),尋找由,CWinApp,派生出的全局構(gòu)造的應(yīng)用程序?qū)ο螅?,成員函數(shù),:,CMyHelloApp::,InitInstance,(),,調(diào)用所需的構(gòu)造并顯示應(yīng)用程序的主框架窗口;,,成員函數(shù),:,CWinApp::,Run,(),,隱藏在基類中,,,發(fā)送應(yīng)用程序的消息到窗口,,,保持應(yīng)用程序的正常運(yùn)行;,MFC

31、,庫簡介,,35,,,CMainFrame,類,,,其對象代表應(yīng)用程序的主框架窗口;,,CDocument/CView,類,應(yīng)用程序框架的核心。,MFC,通過,",文檔一視圖,",結(jié)構(gòu)為應(yīng)用程序提供一種將數(shù)據(jù)與視圖相分離的存儲方式。,,文檔類的作用是將應(yīng)程序的數(shù)據(jù)保存在文檔類對象中,以及從磁盤文件中讀或向磁盤文件中寫數(shù)據(jù)。,,視圖類的作用是顯示數(shù)據(jù)和編輯數(shù)據(jù)。,,關(guān)閉應(yīng)用程序,MFC,庫簡介,,36,,MFC,應(yīng)用程序有自己特殊的運(yùn)行機(jī)制,下面以,WinHello,程序?yàn)槔谐鰬?yīng)用程序的執(zhí)行過程。,程序開始,初始化全局對象,theApp,CWinApp,類構(gòu)造函數(shù),CHelloApp,類構(gòu)造

32、函數(shù),AfxWinMain,函數(shù),,pApp,- >,InitInstance,(),調(diào)用,ProcessShellCommand,(),創(chuàng)建主框架窗口對象、視圖對象、文檔對象,創(chuàng)建主框架窗口和視圖窗口并顯示,CWinThread::Run,(),,,WM_QUIT,消息循 環(huán),結(jié)束,pApp,- >Run(),CHelloApp,,theApp,CWinApp,*,pApp,=,AfxGetApp,();,,,,,WinMain,pApp,->,InitApplication,();,,37,,利用,AppWizard,生成,MFC,應(yīng)用程序,,創(chuàng)建工程,:用,VisualC,++,的,MF

33、C,AppWIzard,創(chuàng)建應(yīng)用程序的基本框架,,可視化設(shè)計(jì),:用,VC++,自帶的工具軟件,Wizards,,制作,Windows,風(fēng)格的圖形用戶界面和各種控件。,,編寫程序代碼,:用,MFCClassWizard,添加消息相應(yīng)函數(shù),然后編寫函數(shù)代碼。,,38,,單文檔應(yīng)用程序,Ex_SDIHello,的建立,創(chuàng)建工程,,,“,File/New/Project/MFC AppWizard(exe)”,,Project name,:”,Ex_SDIHello,,”;,Location:”d:\MyVC,”,,根據(jù)向?qū)нx擇:,,Single document,,中文,[,中國,],,None,,

34、其它接受默認(rèn)設(shè)置,最后單擊“,Finish”,,顯示“,New Project Information”,窗口。,,,,39,,Ex_SDIHello,應(yīng)用程序,,編寫程序代碼,,“,Workspace/,FileView/,Ex_SDIHello,,View.cpp,”,,找到函數(shù),OnDraw,(CDC,*,pDC,),,在其中添加顯示字符串:,,pDC,->,TextOut,(100,80,”,Hello,Visual,C++6.0 !,,!”,);,,,40,,Ex_SDIHello,應(yīng)用程序,,編譯運(yùn)行,,編譯: “,Build/Build,Ex_SDIHello,.exe,”,,,

35、運(yùn)行:“,Build/Execute,Ex_SDIHello,.exe,”,,,關(guān)閉:關(guān)閉運(yùn)行窗口,,41,,Ex_SDIHello,應(yīng)用程序分析,,打開“,Workspace”,窗口中的,”,Class View(,類視圖),,MFC,生成,5,個類,,CAboutDlg,,CMainFrame,,C,Ex_SDI,HelloApp,,C,Ex_SDI,HelloDoc,,C,Ex_SDI,HelloView,,,對于每個類,MFC,生成兩個文件,:,,.h:,定義了類和它的各種變量、函數(shù)原形,;,,.,cpp,:,生成類對象、實(shí)現(xiàn)這個類的函數(shù)體。,,42,,Ex_SDI,Hello,應(yīng)用程

36、序分析,,C,Ex_SDI,HelloApp,類:,,派生于,MFC,的,CWinApp,類,作用是初始化應(yīng)用程序及運(yùn)行該程序的所需的成員函數(shù)。,,Ex_SDI,Hello.h,:,聲明了,C,Ex_SDI,HelloApp,類,,,虛函數(shù),InitInstance,(),的作用:設(shè)置注冊數(shù)據(jù)庫,載入標(biāo)準(zhǔn)設(shè)置(最近打開的文件列表等)、注冊文檔模板,其中在注冊文檔模板時隱含創(chuàng)建了主窗口接下來處理命令行參數(shù),顯示窗口,然后返回、進(jìn)入消息循環(huán)。,,43,,Ex_SDI,Hello,應(yīng)用程序分析,,CMainFrame,類:,,派生于,MFC,的,CFrameWnd,類,作用是管理應(yīng)用程序的窗口,顯示

37、標(biāo)題欄、狀態(tài)欄、工具欄等,同時處理針對窗口操作的信息。,,MainFrm.h,:,聲明了兩個主要函數(shù),PreCreateWindow,(),和,OnCreate,(),,及兩個對象,m_wndStatusBar,(,管理狀態(tài)欄)和,m_wndToolBar,(,管理工具欄),,,,44,,Ex_SDI,Hello,應(yīng)用程序分析,,C,Ex_SDI,HelloDoc,類,:,,派生于,MFC,的,CDocument,類,作用是存放應(yīng)用程序的數(shù)據(jù)以及文件的保存加載功能。文檔類要通過視圖類來實(shí)現(xiàn)與用戶的交互。,,C,Ex_SDI,HelloDoc,.h,:,聲明了三個主要函數(shù),OnNewDocume

38、nt,(),用于初始化文檔,,,Serialize(),串行化(保存和裝入)文檔,,,Dump(),用于調(diào)試診斷。,,45,,Ex_SDI,Hello,應(yīng)用程序分析,,C,Ex_SDI,HelloView,類:,,派生于,MFC,的,CView,類,作用是管理視圖窗口,它對應(yīng)的對象在框架窗口中實(shí)現(xiàn)用戶數(shù)據(jù)的顯示和打印。,,Ex_SDI,HelloView.h,:,聲明了三個函數(shù)用于實(shí)現(xiàn)數(shù)據(jù)打印,OnPreparePrinting,()/,OnBeginPrinting,()/,OnEndPrinting,(),。,,,GetDocument,():,返回,CMyHelloDoc,指針,獲取文檔

39、指針,,,OnDraw,():,實(shí)現(xiàn)視圖數(shù)據(jù)的顯示和刷新。,,46,,Ex_SDI,Hello,應(yīng)用程序分析,,預(yù)編譯頭文件,stdafx.h,:,,用于建立一個預(yù)編譯的頭文件,Ex_SDI,Hello.pch,和一個預(yù)定義的類型文件,stdafx.obj,,,加速編譯過程。,,資源文件:,Resource.h,,,Ex_SDIHello.ioc,:,應(yīng)用程序的圖標(biāo),,,Ex_SDIHello.rc2,:,不可直接編輯的資源,,,Toolbar.bmp,:,工具欄用到的位圖資源,,,Ex_SDIHelloDov.ico,:,生成文檔的圖標(biāo),,,ReadMe.txt,,47,,3.6 MFC

40、,消息處理,MFC,應(yīng)用程序與其他任何,Windows,程序一樣,也使用消息驅(qū)動機(jī)制,但,MFC,提供的消息處理機(jī)制使得消息的處理更加容易。,,MFC,中消息可以分為三類:,,Windows,消息,(,窗口消息),:包括以,WM_,開頭的消息,但,WM_COMMAND,除外。,Windows,消息由窗口和視圖處理。這種消息通常附帶一些參數(shù)傳遞給處理函數(shù),這些參數(shù)為處理函數(shù)正確地處理消息提供了必要的信息。,,控件通知消息,:,當(dāng)控件的狀態(tài)發(fā)生改變,(,例如用戶利用控件進(jìn)行輸入,),時,控件就會向其父窗口發(fā)送控件通知消息。,MFC,對控件通知消息的傳遞方式與其他以,WM_,開頭的,Windows,

41、消息一樣,但,BN_CLICKED,是個例外,該消息的傳遞方式與命令消息的傳遞機(jī)制一樣。,,命令消息,:,包括來自于菜單、工具欄中的按鈕和加速鍵等用戶界面對象的,WM_COMMAND,通知消息。,,48,,消息映射,,聲明 宏,,,DECLEAR_MESSAGE_MAP() (.h,文件,),,,BEGIN_MESSAGE_MAP() //,實(shí)現(xiàn)(,.,cpp,),,,…….,,ON_Message(ID,,ClassMethod,),,,END_MESSAGE_MAP(),,消息映射項(xiàng),,,ON_Message(ID,,ClassMethod,),,,窗口消息、命令消息、控

42、件通知消息的消息映射項(xiàng)不同,,消息處理方法,,,afx_msg,void,ClassMethod,();,,發(fā)送消息,SendMessage,() ——,直接調(diào)用窗口函數(shù),,寄送消息,PostMessage,()——,到隊(duì)列,,49,,,,VC,中存在幾種系統(tǒng)定義的消息分類,不同的前綴符號經(jīng)常用于消息宏識別消息附屬的分類,系統(tǒng)定義的消息宏前綴如下:,BN,按鈕控制消息,,CBN,組合框控制消息,,DN,默認(rèn)下壓式按鈕控制消息,,EN,編輯控制消息,,LBN,列表框控制消息,,SBN,滾動條控制消息,,WM,窗口消息,窗口管理消息,,初始化消息,,輸入消息,,系統(tǒng)消息,,剪貼板消息,,控制處理消

43、息,,控制通知消息,,滾動條通知消息,,非用戶區(qū)消息,,MDI,消息,,DDE,消息,,應(yīng)用程序自定義的消息,Windows,編,,程常用消息,,50,,鼠標(biāo)作為定位輸入設(shè)備,通過鼠標(biāo)單擊、雙擊和拖動功能,用戶可以很容易地操作基于,Windows,圖形界面的應(yīng)用程序。,常用鼠標(biāo)消息,:,鼠標(biāo)消息處理,,51,,鼠標(biāo)消息,lParam,包含了鼠標(biāo)位置,低位包含鼠標(biāo)位置的,x,坐標(biāo)值,高位包含鼠標(biāo)位置的,y,坐標(biāo),wParam,包含了指示各種虛鍵狀態(tài)的值,相當(dāng)于窗口的左上,,角為原點(diǎn)的坐標(biāo)值,,52,,對于鼠標(biāo)消息的處理,要對,Shift,和,Ctrl,鍵進(jìn)行監(jiān)測,case WM_LBUTTOND

44、OWN:,//,按下鼠標(biāo)左鍵,,,if((wParam,&,MK_CONTROL)&&(wParam,&,MK_SHIFT,)),,//,wParam,包含了,Shift,和,Ctrl,鍵值,,,,//,即,Shift,和,Ctrl,鍵都被按下,,,……,,break;,,case WM_LBUTTONUP: //,釋放鼠標(biāo)左鍵,,,…,,,break;,,…,不監(jiān)測,Shift,和,Ctrl,鍵,case,WM_LBUTTONDOWN,: //,按下鼠標(biāo)左鍵,,,…,,break;,,case WM_LBUTTONUP://,釋放鼠標(biāo)左鍵,,,…,,break;,,…,,53,,鼠標(biāo)應(yīng)用程序

45、實(shí)例,鼠標(biāo)消息處理程序,,當(dāng)用戶對鼠標(biāo)進(jìn)行操作時,會產(chǎn)生響應(yīng)的消息,系統(tǒng)將把此消息發(fā)送到對應(yīng)的窗口.,,,,,54,,,新建一個,AppWizard(exe,) MFC,應(yīng)用程序,MyHello,,其它接受默認(rèn)設(shè)置,,為視圖類的添加數(shù)據(jù)成員:,,,CString,,m_MousePoint,;,,//,存儲鼠標(biāo)的方式和位置,,,55,,鼠標(biāo)應(yīng)用程序?qū)嵗?方法,:,在,MyHello,View,.h,中,protected,:,,處,CString,,m_MousePoint,;,或,右擊,CMyHelloView,類,,”Add Member Variable”,,在視圖類的構(gòu)造函數(shù)中初始化,

46、,,m_MousePoint,=“ “; (,在,MyHelloView.cpp,中,),,,修改屏幕重畫函數(shù),OnDraw,(),,,pDC,->Textout(100.100,,m_MousePoint,); (,在,MyHelloView.cpp,中或雙擊,OnDraw,()),,,56,,鼠標(biāo)應(yīng)用程序?qū)嵗?添加鼠標(biāo)消息,WM_LBUTTONDOWN,響應(yīng)函數(shù),,,——,類向?qū)?菜單,View→,ClassWizard,→Message,Maps,,,ClassName:CmyHelloView,(,選擇),;,,Object,IDs:CMyHelloView,,(,選擇),;,,Mes

47、sages:WM_LBUTTONDOWN,(,選擇),;,,單擊“,Add Function”,,,同樣方法,在,CMyHelloView,類中,添加鼠標(biāo)消息,WM_LBUTTONUP,和,WM_MOUSEMOVE,的響應(yīng)函數(shù).,,ClassWizard,自動為應(yīng)用程序作了三件事:,,57,,鼠標(biāo)應(yīng)用程序?qū)嵗?(1),在,CMyHelloView,類中添加了三個成員方法,即在,MyHelloView.h,,中添加了三個響應(yīng)函數(shù)的原型說明.,,,afx_msg,void,OnLButtonDown(UNIT,,nFlags,Cpoint,point);,,,afx_msg,void,OnLBut

48、tonUp(UNIT,,nFlags,Cpoint,point);,,,afx_msg,void,OnMouseMove(UNIT,,nFlags,Cpoint,point);,,(2),在,MyHelloView.cpp,中添加了3個消息映射,,,ON_WM_LBUTTONDOWN(),,ON_WM_LBUTTONUP(),,ON_WM_MOUSEMOVE(),,(3),在,MyHelloView.cpp,中添加了3個響應(yīng)函數(shù)的空函數(shù)體,,,void,CMyHelloView::OnLButtonDown(UNIT,,nFlags,Cpoint,point){……,},,,void,CMyH

49、elloView,::,OnLButtonUp(UNIT,,nFlags,Cpoint,point ){……,},,,void,CMyHelloView,::,OnMouseMove(UNIT,,nFlags,Cpoint,point ){……,},,58,,鼠標(biāo)應(yīng)用程序?qū)嵗?編寫消息響應(yīng)函數(shù)代碼,,,void,CMyHelloView::OnLButtonDown(UNIT,,nFlags,Cpoint,point),,,{…,,,m_MousePoint.Format,(“,鼠標(biāo)左鍵在點(diǎn),(%d,%d),按下,”,,point.x,point.y);,,,Invalidate();//,使

50、系統(tǒng)讓用戶區(qū)無效,從而調(diào)用重畫函數(shù),OnDraw,(),,…,},,,void,CMyHelloView,::,OnLButtonUp(UNIT,,nFlags,Cpoint,point ),,{…,,,m_MousePoint,=“,鼠標(biāo)左鍵被釋放,”,;,,,Invalidate();,,…,},,,,59,,鼠標(biāo)應(yīng)用程序?qū)嵗?void,CMyHelloView,::,OnMouseMove(UNIT,,nFlags,Cpoint,point ),,,{…,,,m_MousePoint.Format,(“,鼠標(biāo)位于點(diǎn),(%,d,%d,),按下”,,,point.x,point.y,);,,

51、Invalidate();,},,查看結(jié),果,(,演示,),,60,,鍵盤消息處理程序,,,當(dāng)用戶對鍵盤進(jìn)行操作時,會產(chǎn)生響應(yīng)的消息,系統(tǒng)將把此消息發(fā)送到對應(yīng)的窗口.,,,改造,MyHello,程序,添加相應(yīng)鍵盤的字符輸入.,,聲明,視圖類,的數(shù)據(jù)成員,,,int,,m_nLine,;//,存儲回車次數(shù),,,CString,,m_strDisplay,;//,存儲當(dāng)前行輸入的字符,,在視圖類的構(gòu)造函數(shù)中初始化,,,m_nLine,=0;,,添加鍵盤消息,WM_CHAR,響應(yīng)函數(shù),,“,View/,ClassWizard,/Message Maps(,消息映射)”,,,ClassName:Cmy

52、HelloView,; Object,IDs:CMyHelloView,;,,,Messages:,WM_CHAR,;,,單擊“,Add Function”,,在,CMyHelloView,類中,添加鍵盤消息,WM_CHAR,的響應(yīng)函數(shù),,,,61,,(1),在,CMyHelloView,類中添加了一個成員方法,即在,MyHelloView.h,,中添加了一個響應(yīng)函數(shù)的原型說明.,,,afx_msg,void,OnChar(UNIT,,nChar,UINT,,nReCnt,Unit,,nFlags,);,,(2),在,MyHelloView.cpp,中添加了一個消息映射,,,ON_WM_

53、CHAR(),,(,3)MyHelloView.cpp,中添加了一個響應(yīng)函數(shù)的空函數(shù)體,,,void,CMyHelloView,::,OnChar(UNIT,,nChar,UINT,,nReCnt,Unit,,nFlags,){……,},鍵盤消息處理實(shí)例,ClassWizard,自動為應(yīng)用程序作了三件事,,62,,編寫消息響應(yīng)函數(shù)代碼,,void,CMyHelloView,::,OnChar(UNIT,,nChar,UINT,,nReCnt,Unit,,nFlags,),,,{,if(nChar,==,VK_RETURN,)//,如按回車鍵,,,{,m_strDisplay.Empty,();

54、//,清空變量,,,m_nLine,++;//,行數(shù)加一,,,},,else{,,,m_strDisplay,+=,nChar,;,,//,將輸入的字符添加到變量,m_strDisplay,的尾端,,,},,,CClientDC,dc(this); //,獲取客戶區(qū)設(shè)備環(huán)境,,,dc.TextOut(0,m_nLine*20,m_strDisplay);,,,Cview::OnChar(nChar,nRepCnt,nFlags,);,,,},按鍵的字符代碼值,重復(fù)擊鍵的次數(shù),掃描碼和鍵轉(zhuǎn)換后的狀態(tài),鍵盤消息處理實(shí)例,,63,,查看結(jié)果,(,演示,),鍵盤消息處理實(shí)例,

55、,64,,技術(shù)要點(diǎn),,對應(yīng)位,含義,0~7,掃描碼,8,擴(kuò)展鍵,9~10,未使用,11~12,Windows,內(nèi)部使用,13,組合狀態(tài),14,前一個鍵的狀態(tài),15,釋放,/,按下狀態(tài),,常用虛擬鍵盤碼,虛擬鍵名稱,對應(yīng)鍵盤鍵,VK_UP,光標(biāo)上移,VK_DOWN,光標(biāo)下移,VK_LEFT,光標(biāo)左移,VK_RIGHT,光標(biāo)右移,VK_HOME,Home,VK_END,End,VK_PRIOR,PageUp,VK_NEXT,PageDown,VK_RETURN,回車,,nFlag,功能描述表,鍵盤消息處理實(shí)例,,65,,技術(shù)要點(diǎn),,,1,、定義用戶消息的,ID,,const,WM_USERMSG,

56、=WM_USER+n;,,2,、,消息處理函數(shù),(,聲明與定義,),,3,、消息映射,,,4,、用戶消息的發(fā)送,----,在某函數(shù)中發(fā)送自定義消息,,,BOOL,PostMessage(HWND,,hWnd,UNIT,,Msg,WPARAM,,wParam,LPARAM,,lParam,),,,調(diào)用,::PostMessage(hWnd,WM_USERMSG,0,0);,自定義消息處理實(shí)例,最好從,100,開始,,66,,自定義消息處理,例如在,MyHello.exe,程序中添加如下功能,,當(dāng)用戶單擊光標(biāo)上移鍵時,程序發(fā)出用戶自定義消息,在對應(yīng)的消息響應(yīng)函數(shù)中,,,彈出消息對話框。(演示),,

57、改造,MyHello,程序,添加相應(yīng)鍵盤的字符輸入.,,定義用戶消息和消息響應(yīng)函數(shù),,,(1),在,MyHelloView.h,中類的聲明,上面,加入如下聲明,,,const WM_USEMSG=WM_USER+,100,;,,//,定義用戶消息的,ID,(,標(biāo)識符),,,,(2),在,MyHelloView.h,中的公有段添加,,,,,void,OnMyFunction,();,,//,聲明用戶消息響應(yīng)函數(shù),,在,MyHelloView.cpp,中編寫,OnMyFunction,(),代碼,,,void,CMyHelloView,::,OnMyFunction,(),,{,MessageBo

58、x,(“,恭喜你,消息發(fā)送成功!,”,);},,67,,自定義消息處理實(shí)例,(3),添加消息映射,,在,CMyHelloView.cpp,的類的消息映射中加入有關(guān)語句,,,ON_MESSAGE(WM_USERMSG,OnMyFunction,),,(4),用戶消息的發(fā)送,,,當(dāng)用戶按下光標(biāo)上移鍵時,程序發(fā)出用戶自定義消息,在對應(yīng)的消息響應(yīng)函數(shù)中,,,彈出消息對話框,。,,添加,WM_KEYDOWN,消息響應(yīng)函數(shù),,“,View/,ClassWizard,/Message Maps(,消息映射)”,,,ClassName:CmyHelloView,;,,Object,IDs:CMyHelloVi

59、ew,;,,Messages:WM_KEYDOWN;,,,單擊“,Add Function”,,,編寫發(fā)送自定義消息代碼,,,void,CMyHelloView,::,OnKeyDown(UNIT,,nChar,UINT,,nReCnt,Unit,,nFlags,){,,HWND,hWnd,=,GetSafeHwnd,();,,,if(nChar,==VK_UP){,,::,PostMessage(hWnd,WM_USERMSG,0,0);,,return;,,……,},,68,,自定義消息處理實(shí)例,查看結(jié)果,(,演示,),,,,69,,PostMessage,(),,The,PostMess

60、age,function places (posts) a message in the message queue associated with the thread that created the specified window and then returns without waiting for the thread to process the message. Messages in a message queue are retrieved by calls to the,GetMessage,or,PeekMessage,function.,,,BOOL,PostMes

61、sage,( HWND,,hWnd,,,// handle of destination window,,UINT,,Msg,,,// message to post,,WPARAM,,wParam,,,// first message parameter,,LPARAM,,lParam,// second message parameter,);,,,,其中,,hWnd,,,Handle to the window whose window procedure is to receive the message. Two values have special meanings:,Value

62、Meaning,HWND_BROADCASTThe,message is posted to all top-level windows in the system, including disabled or invisible,unowned,windows, overlapped windows, and pop-up windows. The message is not posted to child,windows.NULLThe,function behaves like a call to,PostThreadMessage,with the,dwThreadId,parame

63、ter set to the identifier of the current thread.,,Msg,,,Specifies the message to be posted.,,wParam,,,Specifies additional message-specific information.,,lParam,,,Specifies additional message-specific information.,,Return Values,,If the function succeeds, the return value is nonzero.,,If the functio

64、n fails, the return value is zero. To get extended error information, call,GetLastError,.,,70,,CWnd::PostMessage,,BOOL,,PostMessage,(,,UINT,,message,,,,WPARAM,,wParam,,=,,0,,,LPARAM,,lParam,,=,,0,,);,,Return Value,,Nonzero if the message is posted; otherwise 0.,,Parameters,,message,,Specifies the me

65、ssage to be posted.,,wParam,,Specifies additional message information. The content of this parameter depends on the message being posted.,,lParam,,Specifies additional message information. The content of this parameter depends on the message being posted.,,71,,CWindow::SendMessage,,LRESULT,,SendMess

66、age,(,,UINT,,message,,,,WPARAM,,wParam,,=,,0,,,LPARAM,,lParam,,=,,0,,);,,static LRESULT,SendMessage,( HWND,hWnd,, UINT,message,, WPARAM,wParam,, LPARAM,lParam,,),,,說明,,Sends the specified message to this window. The,SendMessage,member function calls the window procedure directly and does not return until that window procedure has processed the message. This is in contrast to the,PostMessage,member function, which places the message into the window’s message queue and returns immediately.,,72,,,,

展開閱讀全文
溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲