Visual C++程序設(shè)計(jì)課件_第1頁
Visual C++程序設(shè)計(jì)課件_第2頁
Visual C++程序設(shè)計(jì)課件_第3頁
Visual C++程序設(shè)計(jì)課件_第4頁
Visual C++程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VisualC++程序設(shè)計(jì)

VisualC++程序設(shè)計(jì)Windows的編程模式基于MFC的VisualC++編程模式Windows的編程模式Windows操作系統(tǒng)的特點(diǎn)Windows應(yīng)用程序設(shè)計(jì)的基本概念Windows應(yīng)用程序的結(jié)構(gòu)框架Windows應(yīng)用程序的工作模式Windows應(yīng)用程序的開發(fā)流程Windows操作系統(tǒng)的特點(diǎn)Windows是Microsoft公司開發(fā)的一種基于窗口的操作系統(tǒng),主要用于個(gè)人計(jì)算機(jī)系統(tǒng)其中最重要的是以下:1.友好的用戶界面2.高性能的搶占式多任務(wù)操作3.動(dòng)態(tài)鏈接庫4.有效的應(yīng)用程序設(shè)計(jì)接口(API)Win32APIWindows應(yīng)用程序Windows應(yīng)用程序…Windows應(yīng)用程序Win32子系統(tǒng)系統(tǒng)服務(wù)硬件層用戶態(tài)核心態(tài)Win32API主要由Win32子系統(tǒng)的三個(gè)動(dòng)態(tài)鏈接庫實(shí)現(xiàn):

·USER32.DLL:負(fù)責(zé)處理用戶接口,包括鍵盤和鼠標(biāo)輸入、窗口和菜單管理等

·GDI32.DLL:負(fù)責(zé)在圖形設(shè)備(包括顯示器和打印機(jī))上執(zhí)行繪圖操作

·KERNEL32.DLL:操作系統(tǒng)核心功能服務(wù),包括進(jìn)程和線程控制、內(nèi)存管理和文件訪問等Windows應(yīng)用程序設(shè)計(jì)的基本概念Windows應(yīng)用程序是面向?qū)ο蟮?。它的這些面向?qū)ο蟮奶卣魍ㄟ^其特有程序設(shè)計(jì)模式表現(xiàn)出來。這種特有的程序設(shè)計(jì)模式主要包含如下三方面的內(nèi)容:

·窗口為核心的用戶界面;

·以事件驅(qū)動(dòng)為動(dòng)力的程序運(yùn)行機(jī)制;

·程序代碼與用戶界面分別處理。窗口窗口是由應(yīng)用程序創(chuàng)建的、系統(tǒng)顯示器上的一個(gè)用于接收用戶輸入和顯示輸出的矩形區(qū)域進(jìn)一步說,窗口涉及如下一些概念:

·應(yīng)用程序只能通過窗口訪問系統(tǒng)顯示器,并且與其他應(yīng)用程序共享顯示器

·同一時(shí)間只有一個(gè)窗口是活動(dòng)的;

·Windows允許應(yīng)用程序創(chuàng)建多個(gè)窗口,但每個(gè)應(yīng)用程序至少要?jiǎng)?chuàng)建一個(gè)窗口——主窗口作為用戶與應(yīng)用程序的主要接口;其他的窗口用于完成相關(guān)任務(wù),如對(duì)話框、消息框等;

·一旦創(chuàng)建了一個(gè)窗口,Windows就提供該窗口所對(duì)應(yīng)的各種交互信息,并負(fù)責(zé)為應(yīng)用程序管理屏幕,控制窗口的位置和顯示,確保不會(huì)有兩個(gè)應(yīng)用程序的窗口沖突。

·一個(gè)應(yīng)用程序的窗口一般由標(biāo)題欄、菜單欄、工具欄、邊框、客戶區(qū)、滾動(dòng)條等部件組成面向?qū)ο骔indows程序設(shè)計(jì)是面向?qū)ο蟮?,凡是與程序有關(guān)的實(shí)體,都稱為對(duì)象。為了對(duì)這眾多的對(duì)象進(jìn)行管理,Windows在內(nèi)部為每個(gè)程序的對(duì)象要建立一個(gè)索引表。索引表的索引,就稱為“句柄”(Handle)。句柄的值是一個(gè)數(shù)字公共Windows對(duì)象及其句柄對(duì)

柄對(duì)

柄快捷鍵表

HACCEL位圖

HBITMAP畫刷

HBRUSH光標(biāo)

HCURSOR設(shè)備描述表

HDC文件

HFILE字體

HFONT圖標(biāo)

HICON菜單

HMENU調(diào)色板

HPALETTE畫筆

HPEN區(qū)域

HRGN窗口

HWND事件驅(qū)動(dòng)一般地說,程序執(zhí)行的進(jìn)程是由某種機(jī)制驅(qū)動(dòng)進(jìn)行的。目前可以把程序執(zhí)行進(jìn)程的驅(qū)動(dòng)分為兩種類型:1)過程驅(qū)動(dòng)2)事件驅(qū)動(dòng)過程驅(qū)動(dòng)采用過程驅(qū)動(dòng)的程序一般由一系列的函數(shù)或過程組成。這些函數(shù)或過程具有預(yù)定的初始化、中間處理和輸出序列,以此控制程序的基本流程。由于這些序列是預(yù)定的,因此它具有面向系統(tǒng)性和主動(dòng)性,在程序的執(zhí)行過程中,用戶的干預(yù)空間較小事件驅(qū)動(dòng)采用事件驅(qū)動(dòng)的程序不給程序預(yù)先規(guī)定一個(gè)執(zhí)行順序,程序一旦啟動(dòng),就處于等待狀態(tài),等待某種事件的發(fā)生;只要有用戶輸入事件發(fā)生,它就立刻接收事件并做出響應(yīng);處理完畢又立刻返回等待下一個(gè)事件的發(fā)生。這種循環(huán)等待方式,具有面向用戶性和被動(dòng)性,可以給用戶提供較大的干預(yù)空間,讓用戶以各種合理的和可能的順序來安排程序的流程,特別適合交互性強(qiáng)的程序消息與消息循環(huán)Windows是一個(gè)多任務(wù)的操作系統(tǒng)環(huán)境。在這個(gè)平臺(tái)上,多個(gè)程序所以能有秩序地交織運(yùn)行,就在于它采用了“消息傳送”(MessagePassing)機(jī)制消息處理是Windows應(yīng)用程序的核心。所有的Windows應(yīng)用程序都是消息驅(qū)動(dòng)的。在Windows環(huán)境下,所有的外部輸入都被系統(tǒng)先攔截,轉(zhuǎn)換成消息之后,再傳送給程序中的目標(biāo)。目標(biāo)系統(tǒng)再根據(jù)消息的具體內(nèi)容進(jìn)行相應(yīng)的處理Windows消息機(jī)制應(yīng)用程序1消息循環(huán)WinMain()窗口函數(shù)1窗口函數(shù)m…應(yīng)用程序隊(duì)列1應(yīng)用程序n消息循環(huán)WinMain()窗口函數(shù)1窗口函數(shù)m…應(yīng)用程序隊(duì)列n……系統(tǒng)消息隊(duì)列Windows事件發(fā)生檢索消息發(fā)送消息檢索消息發(fā)送消息Windows程序和消息的基本流程初始化

開始執(zhí)行

當(dāng)前消息是“退出”消息從消息隊(duì)列取得一個(gè)消息

終止執(zhí)行

是否當(dāng)前程序要處理的消息處理消息默認(rèn)處理

是消息分類在Windows中,操作系統(tǒng)的各部分之間以及應(yīng)用程序之間,通過消息進(jìn)行通信據(jù)統(tǒng)計(jì)大約有近千種消息,但從分布來說,可以分為系統(tǒng)消息和應(yīng)用程序消息兩種類型。其中系統(tǒng)消息可分為如下三類

a)標(biāo)準(zhǔn)Windows消息

b)控件消息

c)命令消息消息的數(shù)據(jù)結(jié)構(gòu)消息定義成如下的一個(gè)結(jié)構(gòu)體:

a)目標(biāo)窗口句柄

b)消息標(biāo)識(shí)

c)參數(shù)wParam和lParam

Windows應(yīng)用程序的結(jié)構(gòu)框架Windows應(yīng)用程序的基本結(jié)構(gòu)具有固定性: 入口點(diǎn)函數(shù)WinMain

窗口函數(shù)構(gòu)成了Windows應(yīng)用程序的基本框架WinMain函數(shù)WinMain函數(shù)是Windows應(yīng)用程序的入口點(diǎn)WinMain函數(shù)用于完成一些特別的功能,其中最主要的是創(chuàng)建該應(yīng)用程序的主窗口,為此,多數(shù)程序需要執(zhí)行如下4部分操作:

1)注冊(cè)窗口類

2)創(chuàng)建窗口

3)顯示窗口

4)建立消息循環(huán)WinMain的例子#include<windows.h>LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函數(shù)說明intWINAPIWinMain

( HINSTANCE hInstance, //應(yīng)用程序當(dāng)前實(shí)例句柄

HINSTANCE hPrevInst, //應(yīng)用程序其他實(shí)例句柄

LPSTR lpszCmdLine, //指向程序命令行參數(shù)的指針

int

nCmdShow

//應(yīng)用程序執(zhí)行時(shí)窗口顯示方式的標(biāo)識(shí)) { HWND hwnd; MSG Msg; //窗口類標(biāo)題

WNDCLASS wndclass; char lpszClassName[]=“示例窗口”;//窗口類名char lpszTitle[]=“窗口示例程序”; //窗口類標(biāo)題//-------------------注冊(cè)窗口類----------------------//wndclass.style=0; //窗口類型為缺省類型wndclass.lpfnWndProc=WndProc; //窗口處理函數(shù)為WndProcwndclass.cbClsExtra=0; //窗口類無擴(kuò)展wndclass.cbWndExtra=0; //窗口實(shí)例無擴(kuò)展wndclass.hInstance=hInstance; //當(dāng)前實(shí)例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//使用缺省圖標(biāo)wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口采用箭頭光標(biāo)wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景白色wndclass.lpszMenuName=NULL; //窗口中無菜單wndclass.lpszClassName=lpszClassName; //窗口類名為“窗口示例”if(!RegisterClass(&wndclass)){ //若注冊(cè)失敗則發(fā)出警告聲音MessageBeep(0);returnFALSE;}//----------------------創(chuàng)建窗口-----------------------//

hwnd=CreateWindow(

lpszClassName, //窗口類名

lpszTitle, //窗口實(shí)例標(biāo)題名

WS_OVERLAPPEDWINDOW, //窗口的風(fēng)格

CW_USEDEFAULT,CW_USEDEFAULT, //窗口左上角坐標(biāo)為缺省值

CW_USEDEFAULT,CW_USEDEFAULT, //窗口的高和寬為缺省值

NULL, //此窗口無父窗口

NULL, //此窗口無主菜單

hIstance, //應(yīng)用程序的當(dāng)前例句

NULL); //不使用該值

//-----------------------顯示窗口----------------------//

ShowWindow(hwnd,nCmdShow); //顯示窗口

UpdateWindow(hwnd); //繪制用戶區(qū)

//----------------------建立消息循環(huán)---------------------//while(GetMessage(&Msg,NULL,0,0)){ //消息循環(huán)

TranslateMessage(&Msg);

DispatchMessage(&Msg);}returnMsg.wParam; //程序終止時(shí)將信息返回系統(tǒng)}窗口函數(shù)每個(gè)窗口必須有一個(gè)窗口函數(shù)(或稱窗口過程)。窗口函數(shù)主要執(zhí)行兩方面的操作:

1)從Windows接收消息:這些消息或是由WinMain中通過消息循環(huán)發(fā)送的輸入消息,或是直接來自Windows系統(tǒng)的窗口管理消息 2)檢查每一條消息,進(jìn)行相應(yīng)的處理:窗口函數(shù)由一系列的case語句組成,用于根據(jù)消息的類型執(zhí)行相應(yīng)的程序段窗口函數(shù)示例LRESULTCALLBACKWndProc(HWNDhwnd,UINT

message,WPARAM

wParam,LPARAM

lparam){switch(message){ caseWM_DESTROY: PostQuitMessage(0);//調(diào)用該函數(shù)發(fā)出WM_QUIT消息

default://缺省消息處理函數(shù)

returnDefWindowProc(hwnd,message,wParam,lparam);} return(0);}Windows應(yīng)用程序的工作模式應(yīng)用程序1消息循環(huán)WinMain()窗口函數(shù)1窗口函數(shù)m…應(yīng)用程序隊(duì)列1…系統(tǒng)消息隊(duì)列Windows用戶鍵入xxWindows應(yīng)用程序的過程1用戶利用中斷將鍵入字符x送入系統(tǒng)隊(duì)列2系統(tǒng)將字符x送入應(yīng)用程序隊(duì)列3應(yīng)用程序檢索應(yīng)用程序隊(duì)列4消息循環(huán)接收字符x5Windows從應(yīng)用程序得到譯成ANSI字符消息的WM_CHAR6Windows將WM_CHAR與原鍵盤消息發(fā)給窗口函數(shù)7窗口函數(shù)發(fā)出請(qǐng)求8Windows將字符x輸出到對(duì)應(yīng)的窗口Windows應(yīng)用程序的開發(fā)流程.LIB.BMP對(duì)話框編輯器資源編譯器文本編輯器.H圖象編輯器字體編輯器.ICO.CUR.FON.CPP.DLG.RCC++編譯器.OBJ.RES.DEF鏈接器.EXE源代碼編輯用戶界面資源編輯編輯編譯鏈接注釋.H 頭文件.CPP C++源代碼文件.OBJ 目標(biāo)文件.DLG 對(duì)話框文件(二進(jìn)制).BMP 位圖文件(二進(jìn)制).ICO 圖標(biāo)文件(二進(jìn)制).CUR 光標(biāo)文件(二進(jìn)制).FON 字體文件(二進(jìn)制).RC 資源描述文件.RES 資源文件(二進(jìn)制).LIB 庫文件(二進(jìn)制).DEF 模塊定義文件.EXE 可執(zhí)行文件(二進(jìn)制)基于MFC的VisualC++編程模式集成開發(fā)環(huán)境DeveloperStudio用MFCAppWizard生成一個(gè)簡單程序的過程VisualC++應(yīng)用程序結(jié)構(gòu)MFC應(yīng)用程序的控制MFC類庫層次結(jié)構(gòu)

基于MFC的VisualC++編程模式VisualC++是在Windows操作系統(tǒng)支持下的一種C++程序開發(fā)平臺(tái)。它的優(yōu)勢(shì)是它提供了一個(gè)集成有編輯、編譯、連接、調(diào)試等程序開發(fā)工具,更重要的是提供了全方位的自動(dòng)編程服務(wù)工具——編程向?qū)izard的集成開發(fā)環(huán)境——DeveloperStudio它是基于MFC的。類庫是一個(gè)可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的C++類的集合。MFC不僅包含了C++的基類,還包含了WinMain函數(shù)以及其他一些支持標(biāo)準(zhǔn)菜單、常見消息處理、窗口滾動(dòng)等功能的元素和API函數(shù),功能涉及到整個(gè)Windows操作系統(tǒng)MFC類庫不僅是預(yù)定義的類的集合,而且是一個(gè)應(yīng)用框架。它定義了應(yīng)用程序的結(jié)構(gòu),這個(gè)結(jié)構(gòu)把應(yīng)用程序與Windows的接口部分和應(yīng)用程序的其他部分結(jié)合成一個(gè)整體,有許多通用代碼是由系統(tǒng)自動(dòng)生成的,不須程序員自己編寫,只要把非通用代碼填入指定的位置即可集成開發(fā)環(huán)境DeveloperStudioDeveloperStudio的特點(diǎn)DeveloperStudio的特點(diǎn)程序的開發(fā)過程,是由應(yīng)用程序向?qū)б龑?dǎo)完成的,便于學(xué)習(xí)掌握每個(gè)應(yīng)用程序都有大致相同的結(jié)構(gòu),這些相同的部分用同樣的代碼描述提供了一套功能強(qiáng)大的基礎(chǔ)類庫,即微軟基礎(chǔ)類庫MFC引入了文檔-視圖結(jié)構(gòu)在MFC中用指針來標(biāo)識(shí)對(duì)象提供強(qiáng)有力的資源管理功能以項(xiàng)目作為應(yīng)用程序開發(fā)的基本單位AppWizard可以建立三種類型的應(yīng)用程序結(jié)構(gòu)MDI:多文檔界面,允許同時(shí)打開多個(gè)文檔,多用于像Word,Excel那樣的規(guī)模比較大的應(yīng)用程序SDI:單文檔界面,一次只允許打開一個(gè)文檔DialogbasedDialogbased:基于對(duì)話的應(yīng)用程序,不支持文檔/視圖結(jié)構(gòu),僅顯示一個(gè)簡單的對(duì)話框,主要用于編寫小程序

多文檔與單文檔界面應(yīng)用程序的外觀DeveloperStudio界面狀態(tài)態(tài)項(xiàng)目窗口信息窗口用戶操作窗口文件頁、資源頁、類頁間切換DeveloperStudio包含了標(biāo)題、菜單、工具條、狀態(tài)條等部件。此外,還配置了項(xiàng)目工作窗口(項(xiàng)目工作區(qū))、用戶操作窗口、信息窗口等3個(gè)窗口:①項(xiàng)目工作窗口(Projectworkspace):包含正在開發(fā)的項(xiàng)目的信息,能夠分頁顯示當(dāng)前項(xiàng)目中的類(Class)、文件(Files)、資源(Resource)等構(gòu)造情況②用戶操作窗口:對(duì)在項(xiàng)目工作窗口中選中的內(nèi)容進(jìn)行源程序或資源的編輯等操作③信息窗口:進(jìn)行編譯及鏈接操作時(shí),給出編譯、鏈接情況的信息(如,構(gòu)成項(xiàng)目的每個(gè)程序名,錯(cuò)誤信息等)用MFCAppWizard生成一個(gè)簡單程序的過程使用MFCAppWizard[exe]制作程序框架在OnDraw(CDC*pDC)函數(shù)中增加代碼制作程序框架的操作步驟準(zhǔn)備:確定項(xiàng)目名和項(xiàng)目目錄創(chuàng)建程序框架制作可執(zhí)行文件運(yùn)行程序確定項(xiàng)目名和存儲(chǔ)目錄

選擇projects項(xiàng)輸入項(xiàng)目名

輸入目錄名

選擇平臺(tái)

選擇應(yīng)用向?qū)?chuàng)建框架程序的步驟

選擇文檔界面

選擇資源語言界面樣本

進(jìn)入下一步創(chuàng)建框架程序的步驟在菜單條中選擇Projects在Projects菜單窗口中選擇MFC向?qū)г贚ocation

對(duì)話框中輸入存放項(xiàng)目的工作目錄名在ProjectName對(duì)話框中輸入項(xiàng)目名,項(xiàng)目名就是最終的應(yīng)用程序名從Platforms列表框中選擇可用的目標(biāo)平臺(tái)單擊OK按鈕創(chuàng)建程序框架完成MFC向?qū)нM(jìn)行的操作選擇數(shù)據(jù)庫支持選擇復(fù)合文檔支持附加功能設(shè)置選擇是否在由向?qū)Ъ邦愊驅(qū)傻脑创a中附加注釋和鏈接庫的類型確定由AppWizard生成的類名和文件名創(chuàng)建框架的步驟之4、5創(chuàng)建框架的步驟之6框架程序的組成信息制作可執(zhí)行文件在項(xiàng)目工作窗口的下端單擊“File..”(FilesView)按鈕點(diǎn)擊OutTextFiles,便展示出從“OutTextFiles”生長出的一個(gè)幫助文件ReadMe.txt和三個(gè)文件夾:

·SourceFiles(源程序文件夾)

·HeaderFiles(頭文件文件夾)

·ResourceFiles(資源文件文件夾)在DeveloperStudio窗口中單擊菜單項(xiàng)的Build打開Build菜單,再單擊BuildOutText.exe

(或者直接按F7鍵),DeveloperStudio便開始編譯和鏈接,同時(shí)在輸出窗口中顯示出編譯和鏈接的信息制作可執(zhí)行文件

制作可執(zhí)行文件(包含編譯和鏈接)執(zhí)行文件程序)

展示OutTextFiles文件夾源程序文件夾頭文件文件夾資源文件文件夾幫助文件單擊“File..按鈕編譯和鏈接信息運(yùn)行程序運(yùn)行程序的方法有3種:

·在DeveloperStudio窗口中打開Build菜單,單擊ExecuteOutText.exe

·在DeveloperStudio集成環(huán)境中按Ctrl+F5鍵

·不在DeveloperStudio集成環(huán)境中時(shí),可在資源管理器中進(jìn)入OutText文件夾,再進(jìn)入Debug子文件夾,雙擊圖標(biāo)表示的文件框架程序的執(zhí)行結(jié)果主窗口標(biāo)題欄菜單條工具條執(zhí)行New操作打開的子窗口執(zhí)行Open操作打開的對(duì)話框OnDraw(CDC*pDC)函數(shù)中增加代碼在項(xiàng)目工作區(qū)依次執(zhí)行:單擊FilesView

按鈕→雙擊OutTextfiles

選擇項(xiàng)→雙擊SourceFiles→雙擊OutTextView.cpp,在客戶編輯窗口中就會(huì)顯示出OutTextView.cpp的源文件代碼插入上面所示的一行代碼后,將項(xiàng)目OutText

重新編譯、鏈接(單擊Build打開Build菜單,再單擊BuildSteleton.exe

或者直接按F7鍵)就生成了可執(zhí)行文件OutText.EXE

文本輸出程序的結(jié)果VisualC++應(yīng)用程序結(jié)構(gòu)VisualC++應(yīng)用程序的邏輯構(gòu)件——對(duì)象VisualC++應(yīng)用程序的存儲(chǔ)結(jié)構(gòu)——文件應(yīng)用程序的邏輯構(gòu)件——對(duì)象面向?qū)ο蟮某绦蛴蓪?duì)象組成。程序設(shè)計(jì)的任務(wù)是根據(jù)給定的問題對(duì)涉及到的對(duì)象進(jìn)行分類,接下來的任務(wù)就是定義各對(duì)象類,并書寫實(shí)現(xiàn)這些類的代碼以及實(shí)現(xiàn)對(duì)象間消息傳遞的代碼VisualC++主要的組成部分

文檔對(duì)象:用于存放應(yīng)用程序的數(shù)據(jù)和文件視圖對(duì)象:管理視圖窗口,顯示用戶數(shù)據(jù),接收用戶對(duì)數(shù)據(jù)的鼠標(biāo)、鍵盤操作,并傳送給文檔類對(duì)象。文檔類對(duì)象必須通過視圖類對(duì)象才能實(shí)現(xiàn)與用戶的交互應(yīng)用程序?qū)ο螅嚎刂茟?yīng)用程序的所有對(duì)象,包括文檔、視圖和邊框窗口,并完成應(yīng)用程序的初始化工作和程序退出的清除工作主窗口對(duì)象:主要用于管理主程序的窗口,顯示標(biāo)題欄、工具欄、狀態(tài)欄,處理窗口操作消息應(yīng)用程序類構(gòu)成一個(gè)對(duì)話框應(yīng)用程序由一個(gè)應(yīng)用程序類和一個(gè)對(duì)話框類構(gòu)成一個(gè)SDI應(yīng)用程序由應(yīng)用程序類、框架類、文檔類和視圖類構(gòu)成一個(gè)MDI應(yīng)用程序由應(yīng)用程序類、主框架類、子框架類、文檔類和視圖類構(gòu)成名為Xxxx的MDI應(yīng)用程序?yàn)槔龖?yīng)用程序類(由CWinApp類派生)文檔類(由CDocument類派生)視圖類(由CView類派生)主框架類(由CMDIFrameWnd類派生)子框架類(由CMDIChildWnd類派生)應(yīng)用程序類缺省的名字:

·類名:CXxxxApp ·類的頭文件名:Xxxx.h ·類的實(shí)現(xiàn)文件名:Xxxx.cpp功能:

·控制應(yīng)用程序的所有對(duì)象

·應(yīng)用程序的初始化

·創(chuàng)建主窗口

·處理消息循環(huán),從Windows操作系統(tǒng)中獲取信息分發(fā)給程序窗口

·退出應(yīng)用程序

·關(guān)閉應(yīng)用文檔類

缺省的名字: 類名:CXxxxDoc

類的頭文件(定義該類)名:XxxxDoc.h

類的實(shí)現(xiàn)文件名:XxxxDoc.cpp功能:存放程序數(shù)據(jù)并實(shí)現(xiàn)文件保存和裝載視圖類缺省的名字: 類名:CXxxxView

類的頭文件名:XxxxView.h

類的實(shí)現(xiàn)文件名:XxxxView.cpp功能:指定用戶與文檔間的交互形式主框架類缺省的名字:

·類名:CMainFrame ·類的頭文件名:MainFrm.h ·類的實(shí)現(xiàn)文件名:MainFrm.cpp功能:管理應(yīng)用程序窗口,顯示標(biāo)題欄、菜單欄、工具欄、狀態(tài)欄、控制菜單和控制按鈕,包容子框架窗口子框架類缺省的名字:

·類名:CChildFrame ·類的頭文件名:ChildFrm.h ·類的實(shí)現(xiàn)文件名:ChildFrm.cpp功能:管理應(yīng)用程序窗口,無自己的菜單欄、工具欄、狀態(tài)欄,但可與主框架類共享應(yīng)用程序的存儲(chǔ)結(jié)構(gòu)——文件從物理上來看,VisualC++程序是由一些文件組成的4個(gè)主要組成部分各自由不同的文件描述。一般說來,每一個(gè)主要的類都由兩類文件支持:一類的后綴為.h,主要用于該類的定義(派生關(guān)系以及組成成員)等一類的后綴為.cpp,主要用于描述該類的實(shí)現(xiàn)(寫成員函數(shù)的代碼)等AppWizard生成一系列文件自述文件ReadMe.txt

項(xiàng)目文件(PRJNAME.dsp

、PRJNAME.clw

)應(yīng)用程序源文件和頭文件資源文件預(yù)定義的文件:STDAFX.h和STDAFX.cpp

上下文敏感的幫助文件按可選項(xiàng)增加的AppWizard文件應(yīng)用程序源文件和頭文件PRJNAME.h:應(yīng)用程序的應(yīng)用程序類的頭文件PRJNAME.cpp:應(yīng)用程序的應(yīng)用程序類的實(shí)現(xiàn)文件,包含應(yīng)用類的具體實(shí)現(xiàn)代碼和消息映射MainFrame.h:應(yīng)用程序框架窗口類的頭文件MainFrame.cpp:應(yīng)用程序框架窗口類的實(shí)現(xiàn)文件ChildFrm.h:應(yīng)用程序子框架窗口類的頭文件ChildFrm.cpp:應(yīng)用程序子框架窗口類的實(shí)現(xiàn)文件PRJNADoc.h:應(yīng)用程序文檔類的頭文件PRJNADoc.cpp:應(yīng)用程序文檔類的實(shí)現(xiàn)文件,實(shí)現(xiàn)文檔的初始化、保存、裝入、調(diào)試診斷PRJNAView.h:應(yīng)用程序視圖類的頭文件PRJNAView.cpp:應(yīng)用程序視圖的實(shí)現(xiàn)文件,實(shí)現(xiàn)文檔數(shù)據(jù)的顯示、打印資源文件PRJNAME.rc:項(xiàng)目的資源文件Resource.h:資源頭文件,包含了標(biāo)準(zhǔn)MFC的資源——標(biāo)準(zhǔn)的菜單、加速鍵和字符串表res\

PRJNAME.ico:應(yīng)用程序的圖標(biāo)文件res\

PRJNDoc.ico:MDI應(yīng)用程序的子窗口圖標(biāo)文件res\TOOLBAR.hmp:位圖文件,指定了支持工具條時(shí),用于創(chuàng)建級(jí)聯(lián)圖象res\PRJNAME.rc2:AppStudio尚未建立和編輯的資源的資源文件MFC應(yīng)用程序的控制文檔模板應(yīng)用程序的控制文檔模板MFC用文檔模板(DocumentTemplate)類的對(duì)象來存儲(chǔ)程序文檔、視圖和框架窗口有關(guān)的信息,提供MFC用來將文檔、視圖和框架結(jié)合在一起的框架結(jié)構(gòu),以協(xié)調(diào)框架窗口、文檔對(duì)象和視圖對(duì)象之間的關(guān)系MFC類庫提供有兩種文檔模板:

·CSingleDocTemplate:用于SDI應(yīng)用程序,每次只能創(chuàng)建和管理一個(gè)文檔。

·CMultiDocTemplate:用于MDI應(yīng)用程序,每次可以創(chuàng)建和管理多個(gè)文檔。應(yīng)用程序的控制應(yīng)用程序啟動(dòng)//創(chuàng)建全局對(duì)象CxxxApptheApp;CXxxApp(){}InitInstance(){創(chuàng)建并注冊(cè)程序窗口、文檔模板、文檔、視圖等}CWinApp(){//建立全局指針,用于調(diào)用//WinApp成員函數(shù)}Run(){消息循環(huán)}ExitIstance(){終止應(yīng)用程序的一副本}初始化應(yīng)用程序應(yīng)用程序運(yùn)行應(yīng)用程序結(jié)束///入口函數(shù)AfxWinMain(){

調(diào)用調(diào)用調(diào)用}應(yīng)用程序處理內(nèi)容Xxx.cppWindows系統(tǒng)CXxxApp類基類CWinApp類說明初始化:AfxWinMain()調(diào)用CXxxApp類對(duì)象的成員函數(shù)InitInstance(),初始化應(yīng)用程序,構(gòu)造文檔模板,產(chǎn)生最初的文檔、視圖和主框架窗口等運(yùn)行應(yīng)用程序:AfxWinMain()調(diào)用CXxxApp類對(duì)象的成員函數(shù)Run(),處理消息循環(huán)結(jié)束應(yīng)用程序:AfxWinMain()調(diào)用CXxxApp類對(duì)象的成員函數(shù)ExitInstance()一個(gè)簡單的MFC程序的執(zhí)行流程

intAFXAPIAfxWinMain

(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,int

nCmdShow){ASSERT(hPrevInstance==NULL);int

nReturnCode=-1;CWinThread*pThread=AfxGetThread(); CWinApp*pApp=AfxGetApp();//AFXinternalinitializationif(!AfxWinInit(hInstance,hPrevInstance,lpCmdLine,nCmdShow))

goto

InitFailure;//Appglobalinitializations(rare)if(pApp!=NULL&&!pApp->InitApplication())

goto

InitFailure;//Performspecificinitializationsif(!pThread->InitInstance()) //注1{

溫馨提示

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