MFC中多线程的应用.docx

上传人:b****8 文档编号:10121954 上传时间:2023-02-08 格式:DOCX 页数:18 大小:21KB
下载 相关 举报
MFC中多线程的应用.docx_第1页
第1页 / 共18页
MFC中多线程的应用.docx_第2页
第2页 / 共18页
MFC中多线程的应用.docx_第3页
第3页 / 共18页
MFC中多线程的应用.docx_第4页
第4页 / 共18页
MFC中多线程的应用.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

MFC中多线程的应用.docx

《MFC中多线程的应用.docx》由会员分享,可在线阅读,更多相关《MFC中多线程的应用.docx(18页珍藏版)》请在冰豆网上搜索。

MFC中多线程的应用.docx

MFC中多线程的应用

ÎÒÊÔ×ÅÓÃ×ÔÒѵĻ°À´±íÊöÏ̵߳ĸÅÄî,»¹ÓкܶÌʱ¼äÀï±àµÄÒ»¸öСʾÀý³ÌÐò£¨²»ÖªÇ¡µ±²»?

Ò²²»ÖªÄÜ˵µÃÇå²»..),¼ûЦÁË.

¡¡¡¡Ïß³ÌÆäʵºÍ±ê×¼µÄwindowsÖ÷³ÌÐò(WinMain)ûɶÁ½Ñù...Ö÷³ÌÐòÆäʵÊÇÒ»¸öÌØÊâµÄÏß³Ì,³ÆΪÖ÷Ï̶߳øÒÑ£¬ÆäʵÄãÍêÈ«¿ÉÒÔ°ÑÏß³ÌÏëÏó³ÉºÍwinmainÒ»Æð**ͬʱÔËÐÐ**£¬µ«ÊÇ**¿ÉÒÔÏ໥·ÃÎÊ(¼´ÔÚÒ»¸öµØÖ·¿Õ¼ä)**µÄһЩСµÄWinMain³ÌÐò.ËüºÍÖ÷Ïß³ÌÒ»Ñù,ÀïÃæ¿ÉÒÔ´´½¨´°¿Ú£¬»ñÈ¡ÏûÏ¢,µÈµÈ..

¡¡¡¡ÓÉÓÚÏß³ÌÃÇÔÚÒ»¸öµØÖ·¿Õ¼äÇÒͬʱÔËÐУ¬ËùÒÔ»áÔì³ÉһЩÂé·³¡£ÒòΪÎÒÃDZà³Ì¶¼ÒªÓñðÈ˵ĺ¯Êý¿â£¬¶øËûÃǵĺ¯Êý¿âÀïÃæÍùÍù»áÓкܶྲ̬»òÈ«¾ÖµÄ״̬»òÖмä±äÁ¿£¬ÓÐןܸ´ÔÓµÄÏ໥ÒÀÀµ¹Øϵ£¬Èç¹ûÖ´ÐÐij¸ö¹¦Äܲ»´®Ðл¯(Ëùν´®Ðл¯,Ò²¾ÍÊÇÖ»ÄܵÈÒ»¸ö¹¦Äܵ÷Ó÷µ»Øºó£¬ÁíÒ»¸öÏ̲߳ÅÄܵ÷Ó㬲»¿ÉÒÔͬʱµ÷ÓÃ)£¬¾Í»áÔì³É´óÂÒ.Õâ¶ÔÏß³ÌÀ´Ëµ£¬ÓÐÊõÓï³Æͬ²½£¬windowsΪÎÒÃÇÌṩÁ˺ܶàͬ²½µÄ·½·¨,MFCÒ²ÌṩÁËһЩͬ²½ºËÐĶÔÏóµÄÀà·â×°.¶ÔÓÚij¸ö¹¦Äܵ÷ÓÿâÀ´Ëµ£¬½ÐḬ̈߳²È«.±ÈÈçMFCµÄÀà¿â²¢²»ÊÇḬ̈߳²È«µÄ.

¡¡¡¡ÏÖÔÚÎÒ¾Ù¸ö¸Õ¸Õ×Ô±àµÄÀý×ÓÀ´¼òµ¥ËµÃ÷ÕâЩ¸ÅÄî¡£ÏÂÃæµÄÒ»¸ö¶Ô»°¿òÓ¦ÓÃÊǶàÏ̵߳Ä.ÑÝʾÁ½¸öС¶¯»:

¡¡¡¡

(1)µÚÒ»¸ö¶¯»ÓÉÖ÷Ï̵߳ÄTimerÀ´Çý¶¯£¬µÚ¶þ¸ö¶¯»ÓÉÖ÷ÏßËù´´½¨µÄ¹¤×÷Ïß³ÌÀ´Çý¶¯.·Ö±ðÏÔʾÔÚ²»Í¬µÄλÖÃ.Ö®ËùÒÔÎÒÒª¼ÓÈëTimer£¬Ò²ÊÇΪÁËÐγÉÏß³ÌÇý¶¯ºÍtimerÇý¶¯µÄ¶ÔÕÕ,ÕâÊǶ¯»µÄÁ½ÖÖÇý¶¯·½Ê½(»¹ÓÐÔÚidleÖÐÇý¶¯µÄ)¡£

¡¡¡¡

(2)ÕâÁ½¸ö¶¯»ÓÀÔ¶ÊDz»Í¬µÄ.Ò²¾ÍÊDZÈÈç:

Ò»¸öÊDZä¿Þ£¬Ò»¸ö¾Í»á±äЦ£¬µÈÄǸö±äЦÁË£¬Õâ¸ö¾Í±ä¿Þ.¶¯»ͼƬÀ´×ÔÓÚOICQÖеÄFaceĿ¼ÏÂ,Ò»°ãͬÑùµÄÍ·Ïñ»áoicq»á´øÈý¸öͼƬ(*-1.bmp,*-2.bmp,*-3.bmp),*-2.bmpÊDZä»ÒµÄͼƬ£¬ÎÒ¾ÍÈ¡ÁË1ºÍ3µÄͼƬÀ´×÷¶¯».

¡¡¡¡Õâ¸ö³ÌÐòµÄ¼¸¸ö¹Ø¼üҪעÒâµÄ:

¡¡¡¡

(1)Ö÷Ïß³ÌÓÃPostThreadMessageºÍ¹¤×÷Ïß³ÌͨÐÅ.¹¤×÷Ïß³ÌÓÃPeekMessageÀ´È¡»ØÏûÏ¢¡£ÎªÁ˼òµ¥Æð¼û,ÎÒÖ»ÓÃÁËÒ»¸öWM_QUITµÄÏûÏ¢À´Ö¸Ê¾¹¤×÷Ïß³ÌÍ˳ö.

¡¡¡¡

(2)Ö÷Ï̺߳͹¤×÷Ïß³Ìͬʱµ÷ÓÃÁËÒ»¸öDisplayFaceº¯ÊýÀ´½øÐж¯»ÏÔʾ.ΪÁËÈÃÁ½¸ö¶¯»Ò»¿ÞһЦ×öµ½²»Í¬£¬²ÉÓÃÁËCCriticalSectionÀ´½øÐÐͬ²½.

 

¡¡¡¡Ê¾ÀýÈçÏÂ:

¡¡¡¡

(1)ÏÈÓÃappwizardsÉú³ÉÒ»¸öMFCµÄDialogÓ¦ÓÃÄ£°å,¼Ù¶¨¶Ô»°¿òÀàΪCTest01Dlg¡£

¡¡¡¡

(2)ÔÙÌíÈëÁ½¸öoicqµÄbmpÎļþµ½×ÊÔ´ÖÐÈ¥

¡¡¡¡(3)Ìí¼ÓÒ»¸ö°´Å¥(button)µ½¶Ô»°¿òÉÏ.ÓÃ×÷Æô¶¯¡¢Í£Ö¹¶¯»µÄbutton

¡¡¡¡(4)ÓÃClassWizardΪbutton/onclick¼°dlg/ontimerÉú³ÉʼþÏìÓ¦º¯Êý£¬

¡¡¡¡(5)ÓÃResourceSymbol¼ÓÈëÒ»¸ö±êʶ¶¨ÒåIDC_TIMER1

¡¡¡¡(6)ÔÚClassViewÖÐΪCTest01Dlg¼ÓÈëÒÔϳÉÔ±±äÁ¿ºÍ³ÉÔ±º¯Êý

¡¡¡¡¡¡¡¡CriticalSectionccs;

¡¡¡¡¡¡¡¡CBitmapbm[2];

¡¡¡¡¡¡¡¡CWinThread*pMyThread;

¡¡¡¡¡¡¡¡staticUINTMyThreadProc(LPVOIDpParam);

¡¡¡¡¡¡¡¡voidDisplayFace(CPointr);

¡¡¡¡¡¡¡¡ÊµÏÖÎļþÖмÓÈëÏàÓ¦´úÂë(¼ûÏÂÃæ)

¡¡¡¡(7)stdafx.hÖмÓÈë#include

¡¡¡¡Ô´´úÂëÈçÏÂ,·²ÊÇÎÒмӵĴúÂëÖÜΧ¶¼ÓÐ×¢ÊÍ°üΧ£¬ÆäËüÊÇClassWizards×Ô¶¯Ð´µÄ:

¡¡¡¡//stdafx.h:

includefileforstandardsystemincludefiles,

¡¡¡¡//orprojectspecificincludefilesthatareusedfrequently,but

¡¡¡¡//arechangedinfrequently

¡¡¡¡file:

//

¡¡¡¡#if!

defined(AFX_STDAFX_H__5B92DAA8_FE27_4702_8037_A2538343E69D__INCLUDED_)

¡¡¡¡¡¡#defineAFX_STDAFX_H__5B92DAA8_FE27_4702_8037_A2538343E69D__INCLUDED_

¡¡¡¡#if_MSC_VER>1000

¡¡¡¡#pragmaonce

¡¡¡¡#endif//_MSC_VER>1000

¡¡¡¡#defineVC_EXTRALEAN//Excluderarely-usedstufffromWindowsheaders

¡¡¡¡#include//MFCcoreandstandardcomponents

¡¡¡¡#include//MFCextensions

¡¡¡¡#include//MFCsupportforInternetExplorer4CommonControls

¡¡¡¡file:

//¼ÓÈëÍ·ÒýÓÃÖ÷ÒªÊÇCCriticalSection¶ÔÏóµÄ¶¨Òå.

¡¡¡¡#include

¡¡¡¡file:

//¼ÓÈë½áÊø

¡¡¡¡#ifndef_AFX_NO_AFXCMN_SUPPORT

¡¡¡¡#include//MFCsupportforWindowsCommonControls

¡¡¡¡#endif//_AFX_NO_AFXCMN_SUPPORT

¡¡¡¡file:

//{{AFX_INSERT_LOCATION}}

¡¡¡¡//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.

¡¡¡¡#endif//!

defined(AFX_STDAFX_H__5B92DAA8_FE27_4702_8037_A2538343E69D__INCLUDED_)

¡¡¡¡//test01Dlg.h:

headerfile

¡¡¡¡file:

//

¡¡¡¡#if!

defined(AFX_TEST01DLG_H__F3780E23_CCFC_468C_A262_50FFF1D991BC__INCLUDED_)

¡¡¡¡#defineAFX_TEST01DLG_H__F3780E23_CCFC_468C_A262_50FFF1D991BC__INCLUDED_

¡¡¡¡#if_MSC_VER>1000

¡¡¡¡#pragmaonce

¡¡¡¡#endif//_MSC_VER>1000

¡¡¡¡/////////////////////////////////////////////////////////////////////////////

¡¡¡¡//CTest01Dlgdialog

¡¡¡¡classCTest01Dlg:

publicCDialog

¡¡¡¡{

¡¡¡¡¡¡//Construction

¡¡¡¡¡¡public:

¡¡¡¡¡¡file:

//¼ÓÈë

¡¡¡¡¡¡CBitmapbm[2];

¡¡¡¡¡¡CCriticalSectionccs;

¡¡¡¡¡¡CWinThread*pMyThread;

¡¡¡¡¡¡staticUINTMyThreadProc(LPVOIDpParam);

¡¡¡¡¡¡voidDisplayFace(CPointr);

¡¡¡¡¡¡CTest01Dlg(CWnd*pParent=NULL);//standardconstructor

¡¡¡¡¡¡file:

//¼ÓÈë½áÊø

¡¡¡¡¡¡//DialogData

¡¡¡¡¡¡file:

//{{AFX_DATA(CTest01Dlg)

¡¡¡¡¡¡enum{IDD=IDD_TEST01_DIALOG};

¡¡¡¡¡¡//NOTE:

theClassWizardwilladddatamembershere

¡¡¡¡¡¡file:

//}}AFX_DATA

¡¡¡¡¡¡//ClassWizardgeneratedvirtualfunctionoverrides

¡¡¡¡¡¡file:

//{{AFX_VIRTUAL(CTest01Dlg)

¡¡¡¡¡¡protected:

¡¡¡¡¡¡virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

¡¡¡¡¡¡file:

//}}AFX_VIRTUAL

¡¡¡¡¡¡//Implementation

¡¡¡¡¡¡protected:

¡¡¡¡¡¡¡¡HICONm_hIcon;

¡¡¡¡¡¡¡¡//Generatedmessagemapfunctions

¡¡¡¡¡¡¡¡file:

//{{AFX_MSG(CTest01Dlg)

¡¡¡¡¡¡¡¡virtualBOOLOnInitDialog();

¡¡¡¡¡¡¡¡afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

¡¡¡¡¡¡¡¡afx_msgvoidOnPaint();

¡¡¡¡¡¡¡¡afx_msgHCURSOROnQueryDragIcon();

¡¡¡¡¡¡¡¡afx_msgvoidOnButton1();

¡¡¡¡¡¡¡¡afx_msgvoidOnTimer(UINTnIDEvent);

¡¡¡¡¡¡file:

//}}AFX_MSG

¡¡¡¡¡¡DECLARE_MESSAGE_MAP()

¡¡¡¡¡¡};

¡¡¡¡¡¡file:

//{{AFX_INSERT_LOCATION}}

¡¡¡¡¡¡//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.

¡¡¡¡¡¡#endif//!

defined(AFX_TEST01DLG_H__F3780E23_CCFC_468C_A262_50FFF1D991BC__INCLUDED_)

¡¡¡¡¡¡//test01Dlg.cpp:

implementationfile

¡¡¡¡¡¡file:

//

¡¡¡¡¡¡#include"stdafx.h"

¡¡¡¡¡¡#include"test01.h"

¡¡¡¡¡¡#include"test01Dlg.h"

¡¡¡¡¡¡#ifdef_DEBUG

¡¡¡¡¡¡#definenewDEBUG_NEW

¡¡¡¡¡¡#undefTHIS_FILE

¡¡¡¡¡¡staticcharTHIS_FILE[]=__FILE__;

¡¡¡¡¡¡#endif

¡¡¡¡¡¡/////////////////////////////////////////////////////////////////////////////

¡¡¡¡¡¡//CAboutDlgdialogusedforAppAbout

¡¡¡¡¡¡classCAboutDlg:

publicCDialog

¡¡¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡¡¡public:

¡¡¡¡¡¡¡¡¡¡CAboutDlg();

¡¡¡¡¡¡¡¡¡¡//DialogData

¡¡¡¡¡¡¡¡¡¡file:

//{{AFX_DATA(CAboutDlg)

¡¡¡¡¡¡¡¡¡¡enum{IDD=IDD_ABOUTBOX};

¡¡¡¡¡¡¡¡¡¡file:

//}}AFX_DATA

¡¡¡¡¡¡//ClassWizardgeneratedvirtualfunctionoverrides

¡¡¡¡¡¡file:

//{{AFX_VIRTUAL(CAboutDlg)

¡¡¡¡¡¡protected:

¡¡¡¡¡¡virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

¡¡¡¡¡¡file:

//}}AFX_VIRTUAL

¡¡¡¡¡¡//Implementation

¡¡¡¡¡¡protected:

¡¡¡¡¡¡file:

//{{AFX_MSG(CAboutDlg)

¡¡¡¡¡¡file:

//}}AFX_MSG

¡¡¡¡¡¡DECLARE_MESSAGE_MAP()

¡¡¡¡¡¡};

¡¡¡¡¡¡CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡file:

//{{AFX_DATA_INIT(CAboutDlg)

¡¡¡¡¡¡¡¡file:

//}}AFX_DATA_INIT

¡¡¡¡¡¡}

¡¡¡¡¡¡voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

¡¡¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡¡¡CDialog:

:

DoDataExchange(pDX);

¡¡¡¡¡¡¡¡¡¡file:

//{{AFX_DATA_MAP(CAboutDlg)

¡¡¡¡¡¡¡¡¡¡file:

//}}AFX_DATA_MAP

¡¡¡¡¡¡¡¡}

¡¡¡¡BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

¡¡¡¡file:

//{{AFX_MSG_MAP(CAboutDlg)

¡¡¡¡//Nomessagehandlers

¡¡¡¡file:

//}}AFX_MSG_MAP

¡¡¡¡END_MESSAGE_MAP()

¡¡¡¡/////////////////////////////////////////////////////////////////////////////

¡¡¡¡//CTest01Dlgdialog

¡¡¡¡CTest01Dlg:

:

CTest01Dlg(CWnd*pParent/*=NULL*/)

¡¡¡¡:

CDialog(CTest01Dlg:

:

IDD,pParent)

¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡file:

//{{AFX_DATA_INIT(CTest01Dlg)

¡¡¡¡¡¡¡¡//NOTE:

theClassWizardwilladdmemberinitializationhere

¡¡¡¡¡¡¡¡file:

//}}AFX_DATA_INIT

¡¡¡¡¡¡¡¡//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

¡¡¡¡¡¡¡¡m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

¡¡¡¡¡¡¡¡file:

//¼ÓÈë

¡¡¡¡¡¡¡¡pMyThread=NULL;

¡¡¡¡¡¡¡¡file:

//¼ÓÈë½áÊø

¡¡¡¡¡¡}

¡¡¡¡voidCTest01Dlg:

:

DoDataExchange(CDataExchange*pDX)

¡¡¡¡{

¡¡¡¡¡¡CDialog:

:

DoDataExchange(pDX);

¡¡¡¡¡¡file:

//{{AFX_DATA_MAP(CTest01Dlg)

¡¡¡¡¡¡//NOTE:

theClassWizardwilladdDDXandDDVcallshere

¡¡¡¡¡¡file:

//}}AFX_DATA_MAP

¡¡¡¡}

¡¡¡¡BEGIN_MESSAGE_MAP(CTest01Dlg,CDialog)

¡¡¡¡¡¡file:

//{{AFX_MSG_MAP(CTest01Dlg)

¡¡¡¡¡¡¡¡ON_WM_SYSCOMMAND()

¡¡¡¡¡¡¡¡ON_WM_PAINT()

¡¡¡¡¡¡¡¡ON_WM_QUERYDRAGICON()

¡¡¡¡¡¡¡¡ON_BN_CLICKED(IDC_BUTTON1,OnButton1)

¡¡¡¡¡¡¡¡ON_WM_TIMER()

¡¡¡¡¡¡file:

//}}AFX_MSG_MAP

¡¡¡¡¡¡END_MESSAGE_MAP()

¡¡¡¡¡¡/////////////////////////////////////////////////////////////////////////////

¡¡¡¡¡¡//CTest01Dlgmessagehandlers

¡¡¡¡¡¡BOOLCTest01Dlg:

:

OnInitDialog()

¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡CDialog:

:

OnInitDialog();

¡¡¡¡¡¡¡¡//Add"About..."menuitemtosystemmenu.

¡¡¡¡¡¡¡¡//IDM_ABOUTBOXmustbeinthesystemcommandrange.

¡¡¡¡¡¡¡¡ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

¡¡¡¡¡¡¡¡ASSERT(IDM_ABOUTBOX<0xF000);

¡¡¡¡¡¡¡¡CMenu*pSysMenu=GetSystemMenu(FALSE);

¡¡¡¡¡¡¡¡if(pSysMenu!

=NULL)

¡¡¡¡¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡¡¡¡¡CStringstrAboutMenu;

¡¡¡¡¡¡¡¡¡¡¡¡strAboutMenu.LoadString(IDS_ABOUTBOX);

¡¡¡¡¡¡¡¡¡¡¡¡if(!

strAboutMenu.IsEmpty())

¡¡¡¡¡¡¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡¡¡¡¡¡¡pSysMenu->AppendMenu(MF_SEPARATOR);

¡¡¡¡¡¡¡¡¡¡¡¡¡¡pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

¡¡¡¡¡¡¡¡¡¡¡¡}

¡¡¡¡¡¡¡¡¡¡}

¡¡¡¡¡¡¡¡//Settheiconforthisdialog.Theframeworkdoesthisautomatically

¡¡¡¡¡¡¡¡//whentheapplication'smainwindowisnotadialog

¡¡¡¡¡¡¡¡SetIcon(m_hIcon,TRUE);//Setbigicon

¡¡¡¡¡¡¡¡SetIcon(m_hIcon,FALSE);//Setsmallicon

¡¡¡¡¡¡¡¡//TODO:

Addextrainitializationhere

¡¡¡¡¡¡¡¡file:

//¼ÓÈë

¡¡¡¡¡¡¡¡bm[0].LoadBitmap(IDB_BITMAP1);

¡¡¡¡¡¡¡¡bm[1].LoadBitmap(IDB_BITMAP3);

¡¡¡¡¡¡¡¡file:

//¼ÓÈë½áÊø

¡¡¡¡¡¡¡¡returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

¡¡¡¡¡¡}

¡¡¡¡¡¡voidCTest01Dlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡if((nID&0xFFF0)==IDM_ABOUTBOX)

¡¡¡¡¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡¡¡¡¡CAboutDlgdlgAbout;

¡¡¡¡¡¡¡¡¡¡¡¡dlgAbout.DoModal();

¡¡¡¡¡¡¡¡¡¡}

¡¡¡¡¡¡¡¡else

¡¡¡¡¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡¡¡¡¡CDialog:

:

OnSysCommand(nID,lParam);

¡¡¡¡¡¡¡¡¡¡¡¡}

¡¡¡¡¡¡¡¡}

¡¡¡¡¡¡voidCTest01Dlg:

:

OnPaint()

¡¡¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡¡¡if(IsIconic())

¡¡¡¡¡¡¡¡¡¡¡¡{

¡¡¡¡¡¡¡¡¡¡¡¡¡¡CPaintDCdc(this);//devicecontextforpainting

¡¡¡¡¡¡¡¡¡¡¡¡¡¡SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Centericoninclientrectangle

¡¡¡¡¡¡¡¡¡¡¡¡¡¡intcxIcon=GetSystemMetrics(SM_CXICON);

¡¡¡¡¡¡¡¡¡¡¡¡¡¡intcyIcon=GetSystemMetrics(SM_CYICON);

¡¡¡¡¡¡¡¡¡¡¡¡¡¡CRectrect;

¡¡¡¡¡

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1