第八講-Windows編程機(jī)制課件_第1頁(yè)
第八講-Windows編程機(jī)制課件_第2頁(yè)
第八講-Windows編程機(jī)制課件_第3頁(yè)
第八講-Windows編程機(jī)制課件_第4頁(yè)
第八講-Windows編程機(jī)制課件_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

大家好1面向?qū)ο笳n程組2面向?qū)ο蟪绦蛟O(shè)計(jì)第八講Windows編程機(jī)制3本講要點(diǎn)Windows的編程機(jī)制MFC應(yīng)用程序框架MFC消息管理MFC應(yīng)用實(shí)例4CImageApp程序演示:CImageApp程序5Windows操作系統(tǒng)特點(diǎn)一致的圖形化的用戶界面。使用圖形和圖像來(lái)顯示應(yīng)用程序數(shù)據(jù)。多任務(wù)機(jī)制。Windows是一個(gè)多任務(wù)的圖形窗口操作系統(tǒng)。硬件即插即用功能。Windows提供了各種設(shè)備驅(qū)動(dòng)程序來(lái)支持各種各樣的外部設(shè)備。與設(shè)備無(wú)關(guān)的圖形圖像機(jī)制等等。6Dos程序主要采用順序的、關(guān)聯(lián)的、過(guò)程驅(qū)動(dòng)的程序設(shè)計(jì)方法。程序直接控制時(shí)間和過(guò)程的順序。缺點(diǎn):交互性差,用戶界面不夠友好。結(jié)束開(kāi)始過(guò)程一條件?過(guò)程二過(guò)程三NY7事件驅(qū)動(dòng)程序模型Windows程序由事件的發(fā)生來(lái)控制,允許用戶用各種合理的順序來(lái)安排程序的流程。8消息隊(duì)列及其在應(yīng)用程序中的輪詢處理9Windows應(yīng)用程序消息的來(lái)源輸入消息:包括鍵盤和鼠標(biāo)的輸入。這類消息首先放到消息隊(duì)列中,然后由Windows將它們送入應(yīng)用程序消息隊(duì)列中,由應(yīng)用程序來(lái)處理消息。控制消息:用來(lái)與Windows的控制對(duì)象,如列表框,按鈕等進(jìn)行雙向通信。這類消息一般不經(jīng)過(guò)應(yīng)用程序消息隊(duì)列,而是直接發(fā)送到控制對(duì)象上去。系統(tǒng)消息:對(duì)程序化的事件或系統(tǒng)時(shí)鐘中斷作出反應(yīng)。一些系統(tǒng)消息,如動(dòng)態(tài)數(shù)據(jù)交換(DDE)要通過(guò)系統(tǒng)的消息隊(duì)列,而有些則不通過(guò)系統(tǒng)消息隊(duì)列直接送入應(yīng)用程序的消息隊(duì)列,如創(chuàng)建窗口消息。用戶消息:這是程序員自己定義并在應(yīng)用程序中主動(dòng)發(fā)出的,一般由應(yīng)用程序的某一部分內(nèi)部處理。10

typedefstructtagMSG{ HWNDhWnd; //目標(biāo)窗口句柄

UINTmessage; //消息標(biāo)識(shí)

WPARAMwParam; //消息參數(shù)1(附加信息,16位)

LPARAMlParam; //消息參數(shù)2(附加信息,32位)

DWORDtime; //消息發(fā)送時(shí)間

POINTpt; //消息發(fā)送時(shí)鼠標(biāo)的屏幕坐標(biāo)}MSG;wParam和lParam的具體含義與message成員的值有關(guān)消息用MSG結(jié)構(gòu)表示11消息驅(qū)動(dòng)模型窗口1消息隊(duì)列窗口函數(shù)WndProc消息1消息2用戶交互內(nèi)核USER消息3窗口2消息隊(duì)列窗口函數(shù)WndProc12Windows操作系統(tǒng)包括三個(gè)內(nèi)核基本元件:GDI、Kernel和UserGDI(圖形設(shè)備接口):負(fù)責(zé)在屏幕上繪制像素、打印輸出,繪制用戶界面包括窗口、菜單、對(duì)話框等。Kernel支持和操作系統(tǒng)密切相關(guān)的功能:如進(jìn)程加載,文本切換、文件I/O、內(nèi)存管理、線程管理等。User為所有的用戶界面對(duì)象提供支持,它用于接收和管理所有輸入消息、系統(tǒng)消息并把它們發(fā)送給相應(yīng)的窗口的消息隊(duì)列。13窗口在Windows編程中,程序的基本單位不是過(guò)程和函數(shù),而是窗口。Windows程序以窗口的形式存在,在不同窗口之間傳遞消息是Windows和應(yīng)用程序進(jìn)行交流的主要形式。程序具體功能由不同的窗口函數(shù)實(shí)現(xiàn)。14程序設(shè)計(jì)的重點(diǎn):根據(jù)軟件的功能需要,考慮用戶可能的各種輸入;針對(duì)不同的輸入事件,提供相應(yīng)的消息處理函數(shù)。相似的界面雷同的程序基本結(jié)構(gòu)相似的代碼通用的套路而已15什么是WindowsAPI?Windows為應(yīng)用程序提供了各種服務(wù),每一種服務(wù)就是一個(gè)函數(shù),可以幫應(yīng)用程序達(dá)到開(kāi)啟視窗、描繪圖形、使用周邊設(shè)備等目的。這些服務(wù)被稱為ApplicationProgrammingInterface,簡(jiǎn)稱API函數(shù)。它是應(yīng)用軟件與Windows系統(tǒng)最直接的交互方式。WindowsAPI是Windows操作系統(tǒng)與應(yīng)用程序之間的標(biāo)準(zhǔn)接口,它提供了上千個(gè)標(biāo)準(zhǔn)函數(shù)、宏和數(shù)據(jù)結(jié)構(gòu)的定義。凡是在Windows工作環(huán)境下執(zhí)行的應(yīng)用程序,都可以調(diào)用WindowsAPI。WindowsAPI函數(shù)定義在一些DLL動(dòng)態(tài)鏈接庫(kù)中,其中最主要的DLL是User32.dll、Gdi32.dll和Kernel32.dll三個(gè)庫(kù)文件。16如何對(duì)待WindowsAPI我們對(duì)待API函數(shù)不必刻意去研究每一個(gè)函數(shù)的用法,那也是不現(xiàn)實(shí)的(能用得到的API函數(shù)有幾千個(gè)呢)。不要專門去學(xué),在需要的時(shí)候去查API幫助就足夠了。17Windows應(yīng)用程序生成18SDKWindows程序開(kāi)發(fā)19Windows應(yīng)用程序入口程序【W(wǎng)inMain】構(gòu)建窗口類【W(wǎng)NDCLASS】注冊(cè)窗口類【RegisterClass】創(chuàng)建窗口【CreateWindow】顯示窗口【ShowWindow】更新窗口【UpdateWindow】進(jìn)入消息循環(huán)【while循環(huán)】20HANDLE句柄句柄,是整個(gè)windows編程的基礎(chǔ)。一個(gè)句柄是指使用的一個(gè)唯一的整數(shù)值(四字節(jié)長(zhǎng)的數(shù)值),來(lái)標(biāo)志應(yīng)用程序中的不同對(duì)象和同類對(duì)象中的不同的實(shí)例,例如:一個(gè)窗口,按鈕,圖標(biāo),滾動(dòng)條等。應(yīng)用程序能夠通過(guò)句柄訪問(wèn)相應(yīng)的對(duì)象的信息。windows設(shè)立句柄,源于內(nèi)存管理機(jī)制,即數(shù)據(jù)的地址需要變動(dòng),因此系統(tǒng)用句柄來(lái)記載數(shù)據(jù)地址的變更。數(shù)據(jù)對(duì)象加載進(jìn)入內(nèi)存中之后即獲得了地址,但是這個(gè)地址并不是固定的,數(shù)據(jù)對(duì)象會(huì)根據(jù)需要在內(nèi)存與硬盤之間游弋移動(dòng),因此其物理地址總是變動(dòng)的,那么作為管理者則必須對(duì)管理對(duì)象所發(fā)生的變化了如指掌才行,因此系統(tǒng)為進(jìn)程分配固定的地址(句柄)來(lái)存儲(chǔ)進(jìn)程下的數(shù)據(jù)對(duì)象變化后的地址也就是當(dāng)前的地址。句柄與普通指針的區(qū)別:指針包含的是引用對(duì)象的內(nèi)存地址,而句柄則是由系統(tǒng)所管理的引用標(biāo)識(shí),該標(biāo)識(shí)可以被系統(tǒng)重新定位到一個(gè)內(nèi)存地址上。21構(gòu)建窗口typedefstruct_WNDCLASS{UINT style;WNDPROC lpfnWndProc;int cbClsExtra;int cbWndExtra;HINSTANCE hInstance;HICON hIcon;HCURSOR hCursor;HBRUSH hbrBackground;LPCTSTR lpszMenuName;LPCTSTR lpszClassName;}WNDCLASS,*PWNDCLASS;22注冊(cè)窗口ATOMRegisterClass(CONSTWNDCLASS

*lpWndClass//classdata

);23創(chuàng)建窗口HWNDCreateWindow( LPCTSTR

lpClassName,//registeredclassname LPCTSTR

lpWindowName,//windowname DWORD

dwStyle,//windowstyle int

x,//horizontalpositionofwindow int

y,//verticalpositionofwindow int

nWidth,//windowwidth int

nHeight,//windowheight HWND

hWndParent,//handletoparentorownerwindowHMENU

hMenu,//menuhandleorchildidentifier HINSTANCE

hInstance,//handletoapplicationinstance LPVOID lpParam//window-creationdata);24顯示窗口BOOLShowWindow( HWND

hWnd,//handletowindow int

nCmdShow//showstate);25更新窗口BOOLUpdateWindow( HWND

hWnd//handletowindow);26進(jìn)入消息循環(huán)MSGmsg;while(GetMessage(&msg,NULL,0,0)){ TranslateMessage(&msg); DispatchMessage(&msg);}27BOOLGetMessage( LPMSG

lpMsg,//messageinformation HWND

hWnd,//handletowindow UINT

wMsgFilterMin,//firstmessage UINT

wMsgFilterMax//lastmessage);28BOOLTranslateMessage( CONSTMSG

*lpMsg

//messageinformation);LRESULTDispatchMessage( CONSTMSG

*lpmsg//messageinformation

);29VC++應(yīng)用程序的開(kāi)發(fā)主要有兩種模式:WINAPI方式MFC方式傳統(tǒng)的WINAPI開(kāi)發(fā)方式比較繁瑣,而MFC則是對(duì)WINAPI再次封裝,所以MFC相對(duì)于WINAPI開(kāi)發(fā)更具備效率優(yōu)勢(shì)。30本講要點(diǎn)Windows的編程機(jī)制MFC應(yīng)用程序框架MFC消息管理MFC應(yīng)用實(shí)例31MFC微軟基礎(chǔ)類MFC(MicrosoftFoundationClass)微軟基礎(chǔ)類是一個(gè)由Microsoft公司設(shè)計(jì)的類庫(kù)。應(yīng)用程序的輪廓用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法具體應(yīng)用程序特有的東西MFC建立的應(yīng)用程序:MFCAppWizard創(chuàng)建MFC應(yīng)用程序框架利用ClassWizard對(duì)Windows消息進(jìn)行管理32MFC類宏全局函數(shù)以層次結(jié)構(gòu)方式組織,幾乎每一個(gè)派生層次都與一具體的Windows實(shí)例相對(duì)應(yīng),如文檔類、窗口類和視圖類等。MFC宏主要功能:消息映射、運(yùn)行時(shí)對(duì)象類型服務(wù)、診斷服務(wù)、異常處理。MFC約定:全局函數(shù)以“Afx”為前綴,全局變量以“afx”為前綴。33學(xué)習(xí)MFC的方法了解Windows編程概念和API函數(shù),如WindowsAPI有哪些功能和哪些常用的數(shù)據(jù)結(jié)構(gòu)等。大體上了解MFC的概念、組成和基本約定,從簡(jiǎn)單的類入手,結(jié)合程序設(shè)計(jì),由淺入深,循序漸進(jìn)、日積月累。如果MFC某個(gè)類能完成所需要的功能,可以直接調(diào)用已有類的方法(成員函數(shù))。利用面向?qū)ο蠹夹g(shù)中的“繼承”方法對(duì)MFC類的行為進(jìn)行擴(kuò)充和修改,從MFC中已有的類派生出自己需要的類。理解使用34MFC應(yīng)用程序生成35MFC應(yīng)用程序框架應(yīng)用程序結(jié)構(gòu)應(yīng)用程序源代碼MFC類應(yīng)用程序?qū)ο髏heApp調(diào)用WinMain()主函數(shù)啟動(dòng)程序36應(yīng)用程序向?qū)a(chǎn)生的程序入口程序WinMain構(gòu)建窗口注冊(cè)窗口創(chuàng)建窗口顯示窗口更新窗口進(jìn)入消息循環(huán)MyRegisterClassInitInstance37例.利用VisualC++向?qū)Ыㄒ粋€(gè)單文檔應(yīng)用程序hello。38Hello程序流程程序開(kāi)始初始化全局對(duì)象theAppCHelloApp構(gòu)造函數(shù)CWinApp構(gòu)造函數(shù)1234539MFC應(yīng)用程序運(yùn)行后各函數(shù)的調(diào)用關(guān)系InitInstance()函數(shù)是派生類唯一需要重載的函數(shù),它負(fù)責(zé)應(yīng)用程序的初始化,如初始化數(shù)據(jù)、創(chuàng)建文檔模板、處理命令行以及顯示應(yīng)用程序主窗口。40Hello程序流程41例.利用VisualC++向?qū)Ыㄒ粋€(gè)單文檔應(yīng)用程序SDI,完成簡(jiǎn)單的顯示功能。42SDI應(yīng)用程序?qū)ο笾g的相互訪問(wèn)關(guān)系43例.利用VisualC++向?qū)Ыㄒ粋€(gè)多文檔應(yīng)用程序MDI,完成簡(jiǎn)單的顯示功能。44MDI應(yīng)用程序?qū)ο笾g的相互訪問(wèn)關(guān)系45本講要點(diǎn)Windows的編程機(jī)制MFC應(yīng)用程序框架MFC消息管理MFC應(yīng)用實(shí)例46MFC消息管理MFC應(yīng)用程序框架截取了Windows向應(yīng)用程序發(fā)出的消息,再確定將消息發(fā)送給哪一個(gè)對(duì)象,可以根據(jù)需要利用函數(shù)重載對(duì)消息進(jìn)行處理,但不需要處理的消息將由應(yīng)用程序框架自動(dòng)處理。消息管理包括消息的發(fā)送和處理。對(duì)于消息發(fā)送,MFC提供了類似于API函數(shù)功能的消息發(fā)送函數(shù),而MFC消息處理的內(nèi)部機(jī)制則相對(duì)復(fù)雜一些。從編程的角度出發(fā),我們只需了解其大致的原理。47MFC的消息分類標(biāo)準(zhǔn)Windows消息:以WM_前綴(但不包括WM_COMMAND)開(kāi)始的消息,包括鼠標(biāo)消息、鍵盤消息和窗口消息,如WM_MOVE、WM_PAINT等??丶ㄖ–ontrolNotification)消息:對(duì)控件操作引起的消息,是控件和子窗口向其父窗口發(fā)出的WM_COMMAND通知消息。例如,當(dāng)用戶修改了編輯控件中的文本后,編輯控件向其父窗口發(fā)送WM_COMMAND通知消息。命令(Command)消息:由菜單項(xiàng)、工具欄按鈕、快捷鍵等用戶界面對(duì)象發(fā)出的WM_COMMAND消息。命令消息與其它消息不同,它可被更廣泛的的對(duì)象如文檔、文檔模板、應(yīng)用程序?qū)ο?、窗口和視圖等處理。自定義消息48MFC消息映射機(jī)制MFC采用消息映射機(jī)制取代C/C++語(yǔ)言中的switch-case結(jié)構(gòu)來(lái)處理消息。MFC消息映射機(jī)制包括一組消息映射宏,一條消息映射宏把一個(gè)Windows消息和其消息處理函數(shù)聯(lián)結(jié)起來(lái)。在類定義的結(jié)尾用DECLARE_MESSAGE_MAP()宏來(lái)聲明使用消息映射。在類的實(shí)現(xiàn)源文件中用BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()宏來(lái)定義消息映射。ON_COMMAND宏:消息映射宏的第一個(gè)參數(shù)為消息ID,第二個(gè)參數(shù)為消息處理函數(shù)。如ON_COMMAND(ID_FILE_NEW,CWinApp::OnFileNew)。MFC使用ClassWizard幫助實(shí)現(xiàn)消息映射功能。4950例子:在AppWizard產(chǎn)生的應(yīng)用程序類的源碼中,應(yīng)用程序類的定義(頭文件)包含了類似如下的代碼://{{AFX_MSG(CTttApp)afx_msgvoidOnAppAbout();//}}AFX_MSGDECLARE_MESSAGE_MAP()應(yīng)用程序類的實(shí)現(xiàn)文件中包含了類似如下的代碼:BEGIN_MESSAGE_MAP(CTApp,CWinApp)//{{AFX_MSG_MAP(CTttApp)ON_COMMAND(ID_APP_ABOUT,OnAppAbout)//}}AFX_MSG_MAPEND_MESSAGE_MAP()

51MFC應(yīng)用程序MESSAGE_MAP消息映射形式BEGIN_MESSAGE_MAP(theclass,baseclass) //{{AFX_MSG_MAP(theclass) ON_......//MFC預(yù)定義的消息映射宏

ON_MESSAGE(message,memberFxn)

//用戶自定義的消息映射宏

...... //}}AFX_MSG_MAPEND_MESSAGE_MAP()注意:特殊注解“//{{AFX_MSG_MAP”是ClassWizard類向?qū)в糜诰S護(hù)消息映射宏的標(biāo)記,用戶不要?jiǎng)h除注解輕易修改注解內(nèi)的代碼。52例.利用ClassWizard為框架類添加消息WM_CLOSE、WM_DESTROY及菜單項(xiàng)“Edit|Copy”的消息處理函數(shù),分析ClassWizard完成了哪些工作。

啟動(dòng)ClassWizard,添加要求的三個(gè)消息處理函數(shù),ClassWizard將在類的實(shí)現(xiàn)文件中添加三個(gè)消息映射宏和消息處理函數(shù)。消息映射宏如下:

BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)//{{AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()

//由MFCAppWizard程序向?qū)ё詣?dòng)生成的消息映射

ON_WM_CLOSE()//由ClassWizard類向?qū)砑?/p>

ON_WM_DESTROY()ON_COMMAND(ID_EDIT_COPY,OnEditCopy)//}}AFX_MSG_MAPEND_MESSAGE_MAP()53ClassWizard在類的定義中聲明了消息處理函數(shù)classCMainFrame:CFrameWnd{public:CMainFrame();protected://{{AFX_MSG(CMainFrame) //聲明消息處理函數(shù)原形

afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);

//由程序向?qū)ё詣?dòng)生成

afx_msgvoidOnClose();//由ClassWizard類向?qū)砑?/p>

afx_msgvoidOnDestroy();afx_msgvoidOnEditCopy();//}}AFX_MSGDECLARE_MESSAGE_MAP()//聲明使用消息映射宏};54例.對(duì)前面建的SDI應(yīng)用程序,增加WM_LBUTTONDOWN消息,并彈窗顯示鼠標(biāo)左鍵的點(diǎn)擊次數(shù)。55消息的發(fā)送發(fā)送消息到一個(gè)窗口可以采用傳送(Send)或寄送(Post)方式,這兩種方式之間的主要區(qū)別是消息被接收對(duì)象收到后是否立即被處理。Windows提供了三個(gè)API函數(shù)用于消息的發(fā)送。函數(shù)SendMessage()用于向一個(gè)或多個(gè)窗口傳送消息,該函數(shù)將調(diào)用目標(biāo)窗口的窗口函數(shù),直到目標(biāo)窗口處理完收到的消息,該函數(shù)才返回。函數(shù)PostMessage()用于向一個(gè)或多個(gè)窗口寄送消息,它把消息放在指定窗口創(chuàng)建的線程的消息隊(duì)列中,然后不等消息處理完就返回。函數(shù)SendDlgItemMessage()函數(shù)用于向?qū)υ捒蛑兄付ǖ目丶l(fā)送消息,直到目標(biāo)控件處理完收到的消息,該函數(shù)才返回。56MFC將這三個(gè)函數(shù)封裝為CWnd窗口類的成員函數(shù),封裝了目標(biāo)窗口句柄,它們將向調(diào)用它的窗口對(duì)象發(fā)送或寄送消息,如pMyView->SendMessage()的調(diào)用形式表示向pMyView所指對(duì)象發(fā)送消息。與用戶輸入相關(guān)的消息(如鼠標(biāo)消息和鍵盤消息)通常是以寄送(Post)的方式發(fā)送,以便這些用戶輸入可以由運(yùn)行較緩慢的系統(tǒng)進(jìn)行緩沖處理。而其它消息通常是以傳送(Send)的方式發(fā)送。57手工處理消息映射創(chuàng)建自己的消息映射的具體過(guò)程:定義自己的消息ID:MFC允許用戶自定義消息,常量WM_USER(為0x0400)與第一個(gè)自定義消息值相對(duì)應(yīng),用戶必須為自己的消息定義相對(duì)于WM_USER的偏移值。利用#define語(yǔ)句定義自己的消息,例如:

#defineWM_USER1WM_USER+0 #defineWM_USER2WM_USER+158定義消息映射:在BEGIN_MESSAGE_MAP()之后,END_MESSAGE_MAP()之前加入消息映射語(yǔ)句:

ON_MESSAGE(message,memberFxn)在適當(dāng)?shù)牡胤蕉x消息處理函數(shù),對(duì)消息進(jìn)行響應(yīng):

自定義消息處理函數(shù)的聲明:必須在函數(shù)返回類型前面加上afx_msg標(biāo)識(shí),如:afx_msgLRESULTmemberFxn(WPARAMwParam,LPARAMlParam);其中,參數(shù)wParam、lParam用于傳遞消息的兩個(gè)附加信息。在需要發(fā)送消息的地方發(fā)送消息:可用CWnd::SendMessage()函數(shù)或CWnd::PostMessage()函數(shù)發(fā)送消息。59例.編寫(xiě)一個(gè)自定義消息應(yīng)用程序,程序啟動(dòng)后設(shè)置一個(gè)定時(shí)器,在WM_TIMER的消息處理函數(shù)中發(fā)送一個(gè)用戶自定義消息,在對(duì)應(yīng)的自定義消息處理函數(shù)中以動(dòng)畫(huà)的形式移動(dòng)顯示一行文本?;舅悸罚河肳M_TIMER消息處理函數(shù)發(fā)送消息;啟動(dòng)定時(shí)器銷毀定時(shí)器用自定義消息完成動(dòng)畫(huà)顯示功能。自定義消息ID定義消息映射定義消息處理函數(shù)發(fā)送消息60具體過(guò)程:1.首先利用MFCAppWizard[exe]向?qū)?chuàng)建一個(gè)名為Move的應(yīng)用程序。利用ClassWizard類向?qū)镃MoveView類生成消息WM_CREATE的消息處理函數(shù),通過(guò)設(shè)置定時(shí)器在指定的時(shí)間間隔向窗口發(fā)送WM_TIMER消息。

SetTimer(1,200,NULL);//啟動(dòng)定時(shí)器2.在文件MoveView.cpp開(kāi)始位置定義一個(gè)用戶自定義消息:

#defineWM_MYMESSAGEWM_USER+1

利用ClassWizard為CMoveView類生成消息WM_TIME的消息處理函數(shù):SendMessage(WM_MYMESSAGE);613.在文件MoveView.cpp消息映射BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之間添加自定義消息映射宏:

ON_MESSAGE(WM_MYMESSAGE,OnMyMyessage)在類CMoveView的定義中聲明自定義消息處理函數(shù):

afx_msgLRESULTOnMyMessage(WPARAMwParam,LPARAMlParam);4.在類CMoveView的定義中聲明一個(gè)private屬性、int型的成員變量m_dPositionX,它表示文本顯示X位置,并在類CMoveView的構(gòu)造函數(shù)中初始化:

m_dPositi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論