版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Visual C+程序設(shè)計(jì)基礎(chǔ)與實(shí)例分析朱晴婷第1頁(yè),共311頁(yè)。第一章 VC開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境集成平臺(tái)基本操作調(diào)試8/4/20222第2頁(yè),共311頁(yè)。Developer Studio操作界面標(biāo)題欄菜單欄工具欄狀態(tài)欄項(xiàng)目工作區(qū):ClassViewResourceViewFileView編輯區(qū)輸出框8/4/20223第3頁(yè),共311頁(yè)。圖片:操作界面項(xiàng)目工作區(qū)編輯區(qū)輸出框WizardBar8/4/20224第4頁(yè),共311頁(yè)。項(xiàng)目工作區(qū)WorkSpaceDeveloper Studio以項(xiàng)目工作區(qū)的方式來(lái)組織文件、項(xiàng)目、項(xiàng)目配置。創(chuàng)建項(xiàng)目工作區(qū)時(shí),將創(chuàng)建:一個(gè)項(xiàng)目工作區(qū)目錄一個(gè)項(xiàng)目工作區(qū)文件
2、(.dsw)一個(gè)項(xiàng)目文件(.dsp)一個(gè)工作區(qū)選項(xiàng)文件(.opt)要打開(kāi)一個(gè)項(xiàng)目,只需要打開(kāi)對(duì)應(yīng)的項(xiàng)目工作區(qū)文件.dsw8/4/20225第5頁(yè),共311頁(yè)。項(xiàng)目一個(gè)項(xiàng)目是由一組項(xiàng)目配置和一組源文件組成。項(xiàng)目配置:Win32DeBugWin32ReleaseProject/Setting源文件Header FilesSource FilesResource Files8/4/20226第6頁(yè),共311頁(yè)。項(xiàng)目工作區(qū)窗口ClassView:顯示項(xiàng)目中定義的C類Resource View:顯示項(xiàng)目中包含的資源File View:顯示包含在項(xiàng)目工作區(qū)中的文件8/4/20227第7頁(yè),共311頁(yè)。Cl
3、assView類成員變量成員函數(shù)訪問(wèn)類型publicprivateprotected8/4/20228第8頁(yè),共311頁(yè)。RecourceViewAcceleratorDialogIconMenuString TableToolBarVersion8/4/20229第9頁(yè),共311頁(yè)。FileView查看文件增加文件Project/Add to Project/Fles刪除文件文件操作是針對(duì)項(xiàng)目,并不能從物理上刪除或增加一個(gè)文件8/4/202210第10頁(yè),共311頁(yè)。File/New:FilesProjectWorkSpaceothers DocumentsMFC AppWizard(EXE
4、) 創(chuàng)建一個(gè)MFC應(yīng)用程序AppWizardSingle DocumentMultiple DocumentDialog based! 工具按鈕New只是新建一個(gè)文本文件8/4/202211第11頁(yè),共311頁(yè)。類操作向?qū)Чぞ逤lass Wizard:對(duì)話框View/ClassWizardCtrl+W快捷菜單Wizard Bar:工具欄8/4/202212第12頁(yè),共311頁(yè)。ClassWizard的作用支持從應(yīng)用程序框架基類中派生新類 為類添加消息映射函數(shù) 查看和編輯消息處理函數(shù) 創(chuàng)建新類時(shí),自動(dòng)加入方法和屬性 8/4/202213第13頁(yè),共311頁(yè)。集成平臺(tái)基本操作打開(kāi)應(yīng)用程序關(guān)閉應(yīng)用程
5、序編譯運(yùn)行應(yīng)用程序8/4/202214第14頁(yè),共311頁(yè)。任務(wù)1通過(guò)AppWizard,建立MFC應(yīng)用程序框架詳見(jiàn)實(shí)驗(yàn)18/4/202215第15頁(yè),共311頁(yè)。調(diào)試調(diào)試命令設(shè)置斷點(diǎn)使用Variables窗口使用Watch窗口8/4/202216第16頁(yè),共311頁(yè)。調(diào)試命令Start DebugGo(F5)Run to CursorStep IntoStep OverAttach to ProcessStop Debugging8/4/202217第17頁(yè),共311頁(yè)。設(shè)置斷點(diǎn)Location設(shè)置位置中斷Data根據(jù)表達(dá)式的值設(shè)置中斷Message設(shè)置消息中斷8/4/202218第18頁(yè),
6、共311頁(yè)。Variables窗口AutoLocalsthis8/4/202219第19頁(yè),共311頁(yè)。Watch窗口變量表達(dá)式8/4/202220第20頁(yè),共311頁(yè)。任務(wù)2Visual C+ 集成開(kāi)發(fā)環(huán)境下的程序調(diào)試詳見(jiàn)例1-18/4/202221第21頁(yè),共311頁(yè)。聯(lián)機(jī)幫助Help菜單F1MSDN8/4/202222第22頁(yè),共311頁(yè)。任務(wù)3實(shí)驗(yàn)2實(shí)驗(yàn)38/4/202223第23頁(yè),共311頁(yè)。第二章 面向?qū)ο蟪绦蛟O(shè)計(jì)的概念C與C+的差別引用類和對(duì)象構(gòu)造函數(shù)和析構(gòu)函數(shù)第24頁(yè),共311頁(yè)。C對(duì)C的改進(jìn)一般語(yǔ)法的改進(jìn)指針和引用函數(shù)的改進(jìn)8/4/202225第25頁(yè),共311頁(yè)。C的輸入
7、和輸出include “stdio.h”printf(“hello c”);scanf(“%d”,&sum);printf(“sum is %d”,sum);#include”iostream.h”cout sum;cout “sum is ” sum endl;一般語(yǔ)法的改進(jìn)8/4/202226第26頁(yè),共311頁(yè)。注釋/*/一般語(yǔ)法的改進(jìn)8/4/202227第27頁(yè),共311頁(yè)。變量定義變量定義可以位于程序中的任何地方下面的語(yǔ)句有問(wèn)題嗎?for( int i=0; i10; i+)int c; c*=2; int s; 一般語(yǔ)法的改進(jìn)8/4/202228第28頁(yè),共311頁(yè)。符號(hào)常量的定義
8、define NULL 0#define Length 100#define PI 3.1415926const int NULL=0const int Length =100const double PI=3.1415926一般語(yǔ)法的改進(jìn)8/4/202229第29頁(yè),共311頁(yè)。強(qiáng)制轉(zhuǎn)換類型C的強(qiáng)制類型轉(zhuǎn)換法 (類型名)表達(dá)式函數(shù)表示法(僅限簡(jiǎn)單類型) 類型名(表達(dá)式)int i=int(1.35); 一般語(yǔ)法的改進(jìn)8/4/202230第30頁(yè),共311頁(yè)。結(jié)構(gòu)體與枚舉類型的用戶標(biāo)識(shí)名enum traffic red,green,yellow;struct student int num;
9、char name20;traffic Light;student stu1; !不必在一個(gè)結(jié)構(gòu)體名之前加struct,不用在一個(gè)枚舉類型名之前加關(guān)鍵字enum。一般語(yǔ)法的改進(jìn)8/4/202231第31頁(yè),共311頁(yè)。動(dòng)態(tài)內(nèi)存分配newint*p,*q,*s;p=new int; s=new int(200);q=new int10; delete delete p;delete q;一般語(yǔ)法的改進(jìn) #include “iostream.h” void main() int *p; p=new int; *p=10; cout*p; delete p; 8/4/202232第32頁(yè),共311頁(yè)
10、。引用類型的概念引用是指給對(duì)象的地址取個(gè)別名,對(duì)引用的改動(dòng)則是對(duì)目標(biāo)的改動(dòng)。 int int1; int &rint=int1;引用不是值,不占有存儲(chǔ)空間引用必須初始化,并且不再指向其他不同的變量指針和引用8/4/202233第33頁(yè),共311頁(yè)。什么能被引用double &rr=1; double temp; temp=double(1); double& rr=temp;指針變量的引用 int *a; int*&p=a; int b=8; p=&b;指針和引用8/4/202234第34頁(yè),共311頁(yè)。什么不能被引用void &a=3;int a10; int&ra10=a;int&ra=i
11、nt;int&ri=NULL;指針和引用8/4/202235第35頁(yè),共311頁(yè)。引用作為函數(shù)參數(shù)-地址傳遞指針的代碼可讀性差,指針作為參數(shù)傳遞,用戶調(diào)用知道函數(shù)是如何工作的。解決大對(duì)象值傳遞會(huì)產(chǎn)生副本的問(wèn)題程序清單2-3指針和引用8/4/202236第36頁(yè),共311頁(yè)。引用作為函數(shù)參數(shù)-地址傳遞存在的問(wèn)題引用隱藏了函數(shù)所使用的參數(shù)傳遞的類型,應(yīng)避免重載匹配錯(cuò)誤void fn(int s);void fn(int&t);用const 限定引用double fn(const double &pd)指針和引用8/4/202237第37頁(yè),共311頁(yè)。函數(shù)原型例:int func(int,int)
12、;C+ 要求所有函數(shù)都有函數(shù)原型程序的頂部頭文件C提供更強(qiáng)的類型檢查,允許編譯程序?qū)ο铝星闆r報(bào)錯(cuò)誤信息:被調(diào)用函數(shù)參數(shù)類型定義和類型轉(zhuǎn)換非法函數(shù)的參數(shù)個(gè)數(shù)不相符函數(shù)不能返回預(yù)定的數(shù)據(jù)類型函數(shù)的改進(jìn)8/4/202238第38頁(yè),共311頁(yè)。內(nèi)置函數(shù)inline#include void main() int a(8),b(16),c; inline int max(int,int); c=max(a,b); cout”c=”cendl; int max(int x,int y); cout”c=”cendl;8/4/202239第39頁(yè),共311頁(yè)。內(nèi)置函數(shù)inline實(shí)質(zhì):編譯器為inline
13、 函數(shù)創(chuàng)建代碼,在每次碰到該函數(shù)的調(diào)用都用相應(yīng)的一段代碼替換說(shuō)明:關(guān)鍵字inline一般放在函數(shù)聲明的前面inline放在函數(shù)定義的前面時(shí),函數(shù)定義要在調(diào)用函數(shù)的前面限制:不能含有switch,while等復(fù)雜的結(jié)構(gòu)控制語(yǔ)句,遞歸函數(shù)不能被用作inline函數(shù)函數(shù)的改進(jìn)8/4/202240第40頁(yè),共311頁(yè)。inline 與宏定義宏所作的是機(jī)械代換,在參數(shù)為表達(dá)式時(shí)會(huì)產(chǎn)生不可預(yù)知的錯(cuò)誤宏不能作類型檢查 define f(m) m*m 宏定義調(diào)用:f(5+5) 5+5*5+5函數(shù)的改進(jìn)8/4/202241第41頁(yè),共311頁(yè)。函數(shù)的默認(rèn)參數(shù)可以在函數(shù)聲明時(shí),對(duì)參數(shù)賦與默認(rèn)值,調(diào)用沒(méi)有給出實(shí)參時(shí)
14、,就使用默認(rèn)值。void delay(int loops=1000);void delay(int loops)if (loops=0) return; for(int i=0;ix p-ypai.x pai.y8/4/202254第54頁(yè),共311頁(yè)。任務(wù)1類和對(duì)象的定義詳見(jiàn)實(shí)驗(yàn)18/4/202255第55頁(yè),共311頁(yè)。構(gòu)造函數(shù)構(gòu)造函數(shù)的作用是構(gòu)造對(duì)象初始化形式在定義對(duì)象時(shí),由應(yīng)用程序自動(dòng)調(diào)用構(gòu)造函數(shù)是類的一個(gè)特殊成員函數(shù)它的函數(shù)名與類名相同, 沒(méi)有返回類型它可以有任意類型的參數(shù)可以重載8/4/202256第56頁(yè),共311頁(yè)。默認(rèn)構(gòu)造函數(shù)當(dāng)類定義中沒(méi)有用戶定義的構(gòu)造函數(shù)時(shí),系統(tǒng)自動(dòng)產(chǎn)生一
15、個(gè)無(wú)參數(shù)的構(gòu)造函數(shù),稱此構(gòu)造函數(shù)為默認(rèn)構(gòu)造函數(shù)當(dāng)定義一個(gè)對(duì)象時(shí),默認(rèn)構(gòu)造函數(shù)只是簡(jiǎn)單地把對(duì)象中的每個(gè)成員初始化為0或空.8/4/202257第57頁(yè),共311頁(yè)。構(gòu)造函數(shù)的類型無(wú)參構(gòu)造函數(shù)Point();Point p1;帶參構(gòu)造函數(shù)Point(int ,int);Point p2(100,200);復(fù)制構(gòu)造函數(shù)Point(const Point&);Point p3(p2);8/4/202258第58頁(yè),共311頁(yè)??截悩?gòu)造函數(shù)示例class A public: A(int); A(const A&,int i=1);main() A a(1); A b(a,0); A c=b;8/4/20
16、2259第59頁(yè),共311頁(yè)。析構(gòu)函數(shù)析構(gòu)函數(shù)也是類的特殊成員函數(shù),它的函數(shù)名與類名相同,但它的名字前面有一個(gè)“”.它沒(méi)有參數(shù),沒(méi)有返回類型,而且不能重載.8/4/202260第60頁(yè),共311頁(yè)。this 指針this 是一個(gè)指向調(diào)用該函數(shù)的對(duì)象的常量指針。成員函數(shù)可通過(guò)this指針直接使用同類的其它成員this指針是隱含的int get_length()return length;int get_length()return this-length;8/4/202261第61頁(yè),共311頁(yè)。繼承在已有類的基礎(chǔ)上定義新類的過(guò)程稱為繼承?;? base class)和派生類派生類的定義cla
17、ss : . .8/4/202262第62頁(yè),共311頁(yè)。 繼承的方式繼承方式基類成員訪問(wèn)權(quán)限派生類繼承到的訪問(wèn)權(quán)限public(公有繼承)publicprotectedprivatepublicprotected不可訪問(wèn)protected(保護(hù)繼承)publicprotectedprivateprotectedprotected不可訪問(wèn)private( 私有繼承)publicprotectedprivateprivateprivate不可訪問(wèn)8/4/202263第63頁(yè),共311頁(yè)。例2-22 單繼承示例8/4/202264第64頁(yè),共311頁(yè)。多繼承派生類從多個(gè)基類派生,派生類具有多個(gè)基類
18、的特性派生方法:class 派生類名:繼承方式1 基類名1,繼承方式2 基類名2,.繼承方式n 基類名n . .;8/4/202265第65頁(yè),共311頁(yè)。例2-23 多繼承示例8/4/202266第66頁(yè),共311頁(yè)。多態(tài)性在 基類和派生類中使用同樣的函數(shù)名而定義不同的操作,從而實(shí)現(xiàn)“一種接口,多種方法”。類型靜態(tài)多態(tài)性: 編譯時(shí)實(shí)現(xiàn),通過(guò)重載動(dòng)態(tài)多態(tài)性: 運(yùn)行時(shí)實(shí)現(xiàn),通過(guò)派生和虛函數(shù)8/4/202267第67頁(yè),共311頁(yè)。虛函數(shù)在繼承體系中,如果在派生類中要對(duì)所繼承的成員函數(shù)重新定義其功能,該函數(shù)應(yīng)在基類中被定義為虛函數(shù)。虛函數(shù)是指在基類中的成員函數(shù)前加上virtual,然后在派生類中再
19、加以定義的函數(shù)。 當(dāng)用指向派生類的對(duì)象的基類指針對(duì)函數(shù)進(jìn)行訪問(wèn)時(shí),系統(tǒng)將根據(jù)運(yùn)行時(shí)指針?biāo)赶虻膶?shí)際對(duì)象來(lái)確定調(diào)用哪一個(gè)類的成員函數(shù)版本。 8/4/202268第68頁(yè),共311頁(yè)。例2-25 虛函數(shù)示例8/4/202269第69頁(yè),共311頁(yè)。第三章 MFC應(yīng)用程序概述Windows 應(yīng)用程序概述MFC應(yīng)用程序框架文檔/視圖結(jié)構(gòu)消息映射第70頁(yè),共311頁(yè)。 窗口編程基礎(chǔ) 窗口消息和消息隊(duì)列事件驅(qū)動(dòng)的程序設(shè)計(jì)資源管理8/4/202271第71頁(yè),共311頁(yè)。窗口的界面元素垂直滾動(dòng)條標(biāo)題欄菜單欄關(guān)閉按鈕最小化按鈕最大化按鈕水平滾動(dòng)條窗口邊界客戶區(qū)8/4/202272第72頁(yè),共311頁(yè)。窗口窗口
20、是應(yīng)用程序與用戶交互的界面窗口元素以對(duì)象方式組織一個(gè)應(yīng)用程序由多個(gè)窗口組成程序運(yùn)行過(guò)程是窗口之間,窗口與系統(tǒng),窗口與用戶之間交換并處理數(shù)據(jù)的過(guò)程。8/4/202273第73頁(yè),共311頁(yè)。消息和消息隊(duì)列 消息用于通知某個(gè)事件的產(chǎn)生消息機(jī)制MSG消息的類型8/4/202274第74頁(yè),共311頁(yè)。消息機(jī)制應(yīng)用程序1窗口函數(shù)WndProc消息映射默認(rèn)窗口函數(shù)DefWndowProcApp1消息隊(duì)列 App2消息隊(duì)列 App3消息隊(duì)列 系統(tǒng)隊(duì)列輸入消息系統(tǒng)消息postMessageSendMessage8/4/202275第75頁(yè),共311頁(yè)。派送消息消息源1消息源2消息源n否程序開(kāi)始程序結(jié)束捕獲消
21、息處理消息是否退出消息是8/4/202276第76頁(yè),共311頁(yè)。MSGtypedef struct tagMSG HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt;MSG;8/4/202277第77頁(yè),共311頁(yè)。消息的類型輸入消息控件消息系統(tǒng)消息用戶消息8/4/202278第78頁(yè),共311頁(yè)。事件驅(qū)動(dòng)的程序設(shè)計(jì)事件驅(qū)動(dòng)的程序的邏輯順序是按事件的產(chǎn)生而決定的事件的產(chǎn)生不是預(yù)先定義的,有著隨機(jī)性 8/4/202279第79頁(yè),共311頁(yè)。開(kāi)始輸入第一項(xiàng)某運(yùn)動(dòng)員的成績(jī)輸入第二項(xiàng)某運(yùn)動(dòng)員的成績(jī)輸
22、入第三項(xiàng)某運(yùn)動(dòng)員的成績(jī)輸入第四項(xiàng)某運(yùn)動(dòng)員的成績(jī)計(jì)算每個(gè)運(yùn)動(dòng)員的總分按總分排名結(jié)束消息循環(huán)8/4/202280第80頁(yè),共311頁(yè)。資源管理資源的類型用戶自定義資源菜單對(duì)話框工具欄系統(tǒng)資源設(shè)備上下文畫(huà)刷畫(huà)筆字體通信端口資源管理器資源ID資源模板資源文件資源編譯程序資源數(shù)據(jù)結(jié)構(gòu)8/4/202281第81頁(yè),共311頁(yè)。窗口應(yīng)用程序剖析窗口應(yīng)用程序的構(gòu)成一個(gè)應(yīng)用程序是如何開(kāi)始的?8/4/202282第82頁(yè),共311頁(yè)。窗口應(yīng)用程序的構(gòu)成元素代碼 winmain windows procedure用戶界面資源庫(kù)模塊 DLL8/4/202283第83頁(yè),共311頁(yè)。一個(gè)應(yīng)用程序是如何開(kāi)始?操作系統(tǒng)創(chuàng)建
23、一個(gè)新的進(jìn)程和一個(gè)初始線程應(yīng)用程序代碼裝載到內(nèi)存動(dòng)態(tài)鏈接庫(kù)裝載到內(nèi)存(如果需要使用DLL)為數(shù)據(jù)和堆棧分配物理內(nèi)存,并映射到虛擬內(nèi)存應(yīng)用程序開(kāi)始執(zhí)行8/4/202284第84頁(yè),共311頁(yè)。窗口應(yīng)用程序組成 The WinMain function A window procedure functionmessage loop (消息循環(huán))例318/4/202285第85頁(yè),共311頁(yè)。The WinMain Function在操作系統(tǒng)注冊(cè)窗口類。在內(nèi)存中創(chuàng)建窗口,并初始化它的屬性,使窗口正確顯示。創(chuàng)建一個(gè)消息循環(huán),檢查窗口是否產(chǎn)生消息進(jìn)入消息隊(duì)列當(dāng)消息循環(huán)檢測(cè)到關(guān)閉窗口消息WM_QUIT時(shí),
24、終止程序運(yùn)行8/4/202286第86頁(yè),共311頁(yè)。The Window Procedure用戶自定義函數(shù) 決定窗口在客戶區(qū)顯示的內(nèi)容,和窗口對(duì)用戶輸入如何反應(yīng)處理開(kāi)發(fā)者添加的消息處理代碼,如果不存在開(kāi)發(fā)者添加的消息處理代碼,將由 default window procedure函數(shù)處理 。8/4/202287第87頁(yè),共311頁(yè)。消息循環(huán)while (GetMessage(&msg, NULL, 0, 0) if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg) TranslateMessage(&msg);DispatchMessag
25、e(&msg);8/4/202288第88頁(yè),共311頁(yè)。任務(wù)1 分析使用AppWizard生成的Win32窗口程序示例Exam3_2,并修改該程序。詳見(jiàn)例3-2 8/4/202289第89頁(yè),共311頁(yè)。MFC應(yīng)用程序概述MFC類簡(jiǎn)介 構(gòu)建Windows應(yīng)用程序的基本類 文檔/視圖結(jié)構(gòu)剖析MFC SDI的文件結(jié)構(gòu)8/4/202290第90頁(yè),共311頁(yè)。MFC 類application programming interface (API)MFC 封裝了API的主要結(jié)構(gòu)和通用組件8/4/202291第91頁(yè),共311頁(yè)。MFC的特點(diǎn)創(chuàng)建窗口方便,利用程序的應(yīng)用程序框架新的C+的類與早期版本的
26、 MFC兼容大量可重用的C+源代碼與 Visual C+集成 8/4/202292第92頁(yè),共311頁(yè)。MFC的特點(diǎn)支持靈活快速的DAO或ODBC數(shù)據(jù)庫(kù)訪問(wèn)方式支持 ActiveX 和Internet 技術(shù)支持先進(jìn)的數(shù)據(jù)綁定技術(shù)支持窗口消息 API支持多線程 8/4/202293第93頁(yè),共311頁(yè)。 MFC 的繼承關(guān)系MFC 類封裝了 the win32 API 應(yīng)用程序?qū)ο笕纾?documents,views and applictions Activex,database, Internet 特點(diǎn)MFC分類 CObject_derived 類 Non_CObject_derived 類8
27、/4/202294第94頁(yè),共311頁(yè)。CObject派生類CObjectCCmdTargetCWinThreadCWinAppCWndCFrameWndCViewCDocument8/4/202295第95頁(yè),共311頁(yè)。非CObject派生類通用工具類CString CTime CTimeSpanCRectCpointCSizeMFC支持類 CArchiveCDumpContextCRuntimeClassCFileStatusCMemoryStateCTypePointerArray8/4/202296第96頁(yè),共311頁(yè)。構(gòu)建Windows應(yīng)用程序基本類應(yīng)用程序類主框架類8/4/202
28、297第97頁(yè),共311頁(yè)。應(yīng)用程序類CExam1_1App類定義頭文件一個(gè)空的類結(jié)構(gòu)類的實(shí)現(xiàn)文件應(yīng)用程序類的消息映射空的構(gòu)造函數(shù)全局對(duì)象theAppInitInstance函數(shù)定義8/4/202298第98頁(yè),共311頁(yè)。InitInstance創(chuàng)建應(yīng)用程序的主窗口一個(gè)指向有效主窗口的指針 m_pMainWnd8/4/202299第99頁(yè),共311頁(yè)。主框架類CMainFrame管理除視圖之外的其他主窗口部分OnCreatem_wndToolBarm_wndStatusBar8/4/2022100第100頁(yè),共311頁(yè)。任務(wù)2手工編寫(xiě)MFC應(yīng)用程序 詳見(jiàn)實(shí)驗(yàn)18/4/2022101第101頁(yè)
29、,共311頁(yè)。文檔,視圖和應(yīng)用程序框架文檔/視圖結(jié)構(gòu)SDI 和 MDI 應(yīng)用程序在SDI應(yīng)用程序中的對(duì)象非文檔/視圖結(jié)構(gòu)8/4/2022102第102頁(yè),共311頁(yè)。文檔/視圖結(jié)構(gòu)文檔 : a data object with which the user interacts in an editing session視圖 a window object through which the user interacts with the document8/4/2022103第103頁(yè),共311頁(yè)。類名稱基類說(shuō)明CExam1_1AppCWinApp應(yīng)用程序類CMainFrameCFrameWn
30、d窗口框架類CExam1_1DocCDocument文檔類CExam1_1ViewCView視圖類文檔/視圖應(yīng)用程序的構(gòu)成8/4/2022104第104頁(yè),共311頁(yè)。文檔/視圖結(jié)構(gòu)傳遞消息到窗口框架 傳遞消息到視圖 信息在視圖與文檔對(duì)象間雙向傳遞 文檔對(duì)象應(yīng)用程序?qū)ο蟠翱诳蚣軐?duì)象視圖對(duì)象8/4/2022105第105頁(yè),共311頁(yè)。文檔類裝載、存貯、 管理應(yīng)用程序的數(shù)據(jù)每一個(gè)文檔對(duì)象維護(hù)一張與視圖相關(guān)聯(lián)的列表,每一個(gè)視圖對(duì)象維護(hù)與其相關(guān)聯(lián)的指針。主要成員函數(shù)OnOpenDocumentOnNewDocumentSerialize8/4/2022106第106頁(yè),共311頁(yè)。視圖類顯示保存在文
31、檔類中的信息,允許用戶輸入主要成員函數(shù)GetDocumentOnDrawOnInitialUpdateOnUpdate8/4/2022107第107頁(yè),共311頁(yè)。視圖類的類型CScrollViewCFormViewCEditViewCRichEditViewCListViewCTreeViewCRecordViewCCtrlView8/4/2022108第108頁(yè),共311頁(yè)。文檔模板類綁定框架、視圖、文檔和一組應(yīng)用程序資源的類不需要開(kāi)發(fā)者干涉其行為,所以不存在對(duì)應(yīng)的文件CDocTemplate CSingleDocTemplate CMultiDocTemplate8/4/2022109第
32、109頁(yè),共311頁(yè)。文檔模板類層次圖CObjectCCmdTargetCSingleDocTemplateCMultiDocTemplateCDocTemplate8/4/2022110第110頁(yè),共311頁(yè)。SDI 和 MDI 應(yīng)用程序 SDI 只能打開(kāi)一個(gè)文檔窗口畫(huà)圖MDI可以打開(kāi)多個(gè)文檔窗口Excel8/4/2022111第111頁(yè),共311頁(yè)。定義單文檔的文檔模板類型 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME, RUNTIME_CLASS(CExam1_1
33、Doc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CExam1_1View); AddDocTemplate(pDocTemplate); 8/4/2022112第112頁(yè),共311頁(yè)。SDI 應(yīng)用程序組成Application ObjectDocument TemplateDocumentToolbarViewStatus BarMain Frame Window8/4/2022113第113頁(yè),共311頁(yè)。MFC SDI的文件結(jié)構(gòu)工作區(qū)文件、項(xiàng)目文件 Exam1_1.dsw Exam1_1.dsp Exam1_1.clw 應(yīng)用程序源文件和頭文件
34、資源文件Exam1_1RCRESOURCE.HExam1_1.rc2 預(yù)編譯頭文件StdAfx.cppStdAfx.h 8/4/2022114第114頁(yè),共311頁(yè)。消息映射消息的類別及描述消息映射系統(tǒng)消息處理的路徑自定義消息處理8/4/2022115第115頁(yè),共311頁(yè)。消息的類別窗口消息CView和CFrame及其派生類、及自定義窗口類處理窗口消息。 命令消息從基類CCmdTarget派生的類都能處理命令消息 控件消息控件消息由控件所屬的對(duì)話框類處理8/4/2022116第116頁(yè),共311頁(yè)。窗口消息的描述message:WM_XXX wParam和 lParam:隨WM_XXX而變
35、8/4/2022117第117頁(yè),共311頁(yè)。命令消息的描述message :WM_COMMAND wParam:低16位為命令I(lǐng)D、高16位為0lParam:0L 8/4/2022118第118頁(yè),共311頁(yè)??丶⒌拿枋鰉essage:WM_NOTIFY wParam:控件ID lParam:指向NMHDR的指針,NMHDR是包含了消息內(nèi)容的一個(gè)結(jié)構(gòu) 8/4/2022119第119頁(yè),共311頁(yè)。消息宏前綴 前綴消息分類BM按鈕控制消息CB組合框控制消息DMEM默認(rèn)下壓式按鈕控制消息編輯控制消息LBSBMWM列表框控制消息滾動(dòng)條控制消息窗口消息8/4/2022120第120頁(yè),共311頁(yè)
36、。消息映射系統(tǒng)CCmdTarget的派生類每個(gè)子類都定義一個(gè)消息表消息映射表DECLARE_MESSAGE_MAP()BEGIN_MESSAGE_MAP()END_MESSAGE_MAP()8/4/2022121第121頁(yè),共311頁(yè)。MFC消息映射原理應(yīng)用程序開(kāi)始運(yùn)行后有一個(gè)從CWinApp派生的對(duì)象,等待和處理消息的函數(shù)是應(yīng)用程序類的RUN()函數(shù)。RUN() 函數(shù)將接收到的消息都交給主窗口的窗口函數(shù)OnWndMsg(),由OnWndMsg()函數(shù)負(fù)責(zé)將消息分類并交予不同的消息處理函數(shù)去處理。8/4/2022122第122頁(yè),共311頁(yè)。消息映射表MFC在每一個(gè)能夠接收和處理消息類中,定義
37、一個(gè)消息和消息處理函數(shù)靜態(tài)對(duì)照表,該表稱為消息映射表。該類能夠處理的所有的消息及其對(duì)應(yīng)的消息處理函數(shù)的地址都列在該表中。8/4/2022123第123頁(yè),共311頁(yè)。在類中加入靜態(tài)消息映射表在.h 文件中加入: DECLARE_MESSAGE_MAP()在.CPP文件中加入:BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd) ON_WM_PAINT() END_MESSAGE_MAp()8/4/2022124第124頁(yè),共311頁(yè)。消息映射表示例BEGIN_MESSAGE_MAP(CExam1_1App, CWinApp)/AFX_MSG_MAP(CExam1_1A
38、pp)ON_COMMAND(ID_APP_ABOUT, OnAppAbout)/AFX_MSG_MAPON_COMMAND(ID_FILE_NEW, CWinApp:OnFileNew)ON_COMMAND(ID_FILE_OPEN, CWinApp:OnFileOpen)ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp:OnFilePrintSetup)END_MESSAGE_MAP() 8/4/2022125第125頁(yè),共311頁(yè)。消息處理宏格式消息類型宏格式參數(shù)預(yù)定義窗口消息ON_WM_XXX無(wú)命令消息ON_COMMAND命令I(lǐng)D,消息處理函數(shù)名更新命令消息
39、ON_UPDATE_COMMAND_UI命令I(lǐng)D,消息處理函數(shù)名控件消息ON_XXX控件ID,消息處理函數(shù)名用戶自定義消息ON_MESSAGE自定義消息ID,消息處理函數(shù)名8/4/2022126第126頁(yè),共311頁(yè)。例3-3創(chuàng)建一個(gè)單文檔的MFC應(yīng)用程序Exam3_3,并實(shí)現(xiàn)功能:當(dāng)在視圖中雙擊鼠標(biāo)右鍵時(shí),彈出對(duì)話框,顯示鼠標(biāo)的坐標(biāo)。 8/4/2022127第127頁(yè),共311頁(yè)。消息處理路徑窗口消息的處理命令消息的處理控件消息的處理8/4/2022128第128頁(yè),共311頁(yè)。如何處理窗口消息所有基類均沒(méi)定義該消息的處理函數(shù) 窗口類:OnWndMsg(.)是窗口消息搜索窗口類的消息映射表找
40、到 ?繼續(xù)搜索基類消息映射表窗口類:DefWndProc(.)執(zhí)行消息處理函數(shù)命令消息或控件消息處理找到消息處理函數(shù)yesnoyesno8/4/2022129第129頁(yè),共311頁(yè)。窗口消息的處理OnWndMsg()搜索窗口類的消息映射表,如果找到了匹配的消息處理函數(shù),就執(zhí)行消息處理函數(shù) 如果找不到,繼續(xù)搜索該窗口類的基類,如果找到了匹配的消息處理函數(shù),就執(zhí)行消息處理函數(shù);如果還沒(méi)有找到,則把消息交給默認(rèn)窗口函數(shù)DefWindowProc()處理 8/4/2022130第130頁(yè),共311頁(yè)。如何處理命令消息從理論上講,所有從基類 CCmdTarget類派生的類均可處理命令消息,MFC應(yīng)用程序
41、框架將依次檢查基本類的消息映射表。視圖類文檔類文檔模板類框架窗口類應(yīng)用程序類界面變灰8/4/2022131第131頁(yè),共311頁(yè)。命令消息的處理OnWndMsg()函數(shù)會(huì)將命令消息分發(fā)給窗口類的OnCommand()函數(shù)OnCommand()函數(shù)調(diào)用成員函數(shù)OnCmdMsg()函數(shù),該函數(shù)依次搜索視圖類、文檔類、文檔模板類、框架窗口類和應(yīng)用程序類及其基類中的消息映射表,搜索到消息處理函數(shù),搜索到消息處理函數(shù)則執(zhí)行消息處理函數(shù)如果全部查找完畢,依然不能處理,則該命令消息所對(duì)應(yīng)的界面元素變灰。 8/4/2022132第132頁(yè),共311頁(yè)。如何處理控件消息OnWndMsg(.)OnNotify(.
42、) 控件窗口類處理消息控件窗口類能處理?控件的父 窗口類: OnWndMsg(.)yesno8/4/2022133第133頁(yè),共311頁(yè)??丶⒌奶幚戆严⒔唤o控件所屬的類,如果能夠處理,執(zhí)行消息處理函數(shù)如果控件所屬的類不能處理,調(diào)用控件的父窗口對(duì)應(yīng)類的OnCmdMsg(),搜索父窗口對(duì)應(yīng)類的消息映射表,以獲得處理該消息的函數(shù)8/4/2022134第134頁(yè),共311頁(yè)。自定義窗口消息 的方法自定義靜態(tài)窗口消息通過(guò)指定窗口消息對(duì)應(yīng)的整數(shù)值來(lái)獲得自定義窗口消息自定義動(dòng)態(tài)窗口消息通過(guò)定義一個(gè)字符串名稱來(lái)定義 一個(gè)窗口消息8/4/2022135第135頁(yè),共311頁(yè)。自定義靜態(tài)窗口消息首先在為類實(shí)
43、現(xiàn)文件中定義消息#define WM_MYMESSAGE WM_USER+100在類中聲明消息處理函數(shù)Afx_msg LRESULT OnMyMessage(WPARAM wParam,LPARAM lParam)在類的消息映射表中加入映射項(xiàng)ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)在類上實(shí)現(xiàn)消息處理函數(shù) 使用SendMessage函數(shù)或PostMessage發(fā)送消息pView-SendMessage(WM_MYMESSAGE,0L,0L);8/4/2022136第136頁(yè),共311頁(yè)。自定義動(dòng)態(tài)窗口消息首先定義并注冊(cè)消息#define MESSAGE_NAME
44、“2001-8-1-THIS-IS-A-MESSAGE-TEST”UINT WM_MYMESSAGE=:RegisterWndMessage(MESSAGE_NAME) 在類中聲明消息處理函數(shù)在類的消息映射表中加入映射項(xiàng)在類實(shí)現(xiàn)文件中實(shí)現(xiàn)消息處理函數(shù)使用SendMessage函數(shù)或PostMessage函數(shù)發(fā)送消息8/4/2022137第137頁(yè),共311頁(yè)。任務(wù)3實(shí)驗(yàn)3實(shí)驗(yàn)48/4/2022138第138頁(yè),共311頁(yè)。第四章資源和資源編輯器資源符號(hào)和資源編輯器菜單的使用工具欄的使用狀態(tài)欄的使用第139頁(yè),共311頁(yè)。資源加速鍵(Accelerator)位圖(Bitmap)光標(biāo)(Cursor
45、)對(duì)話框(Dialog)圖標(biāo)(Icon)菜單(Menu)字符串表(String Table)工具欄(Toolbar)版本信息(Version Information)8/4/2022140第140頁(yè),共311頁(yè)。資源符號(hào)View/Resource Symbol類 別 資源符號(hào)前綴 代表的資源或?qū)ο?資源IDR_IDD_IDC_IDI_IDB_ 加速鍵或菜單對(duì)話框資源光標(biāo)資源圖表資源位圖資源 菜單項(xiàng)命令控制 IDM_ID_IDC_ 菜單項(xiàng)命令項(xiàng)控件 字符串IDSIDP_ 字符串表中的字符串消息框中使用的字符串 8/4/2022141第141頁(yè),共311頁(yè)。資源編輯器的公共操作查看資源使用資源模板
46、導(dǎo)入和導(dǎo)出資源查看和編輯屬性頁(yè)8/4/2022142第142頁(yè),共311頁(yè)。創(chuàng)建新資源Insert/Resource8/4/2022143第143頁(yè),共311頁(yè)。保存和刪除資源Resource View|*File|Save AllDelete鍵直接刪除8/4/2022144第144頁(yè),共311頁(yè)。菜單編輯器的使用創(chuàng)建標(biāo)準(zhǔn)菜單和命令創(chuàng)建彈出命令設(shè)置快捷鍵、加速鍵和菜單命令項(xiàng)的狀態(tài)欄消息移動(dòng)菜單命令8/4/2022145第145頁(yè),共311頁(yè)。加速鍵編輯器的使用增加、刪除、改變和瀏覽加速鍵列表瀏覽并改變加速鍵表資源ID將一個(gè)加速鍵與一個(gè)菜單命令相聯(lián)系8/4/2022146第146頁(yè),共311頁(yè)。
47、工具欄編輯器的使用創(chuàng)建工具欄和按鈕將位圖轉(zhuǎn)化為工具欄資源創(chuàng)建、移動(dòng)和編輯工具欄按鈕8/4/2022147第147頁(yè),共311頁(yè)。版本信息編輯器的使用文本框的編輯8/4/2022148第148頁(yè),共311頁(yè)。字符串編輯器的使用查找、增加、刪除一個(gè)字符串移動(dòng)一個(gè)字符串到另一個(gè)段移動(dòng)一個(gè)字符串到另一個(gè)資源文件(*.rc)改變一個(gè)字符串或它的ID增加格式或特殊字符到一個(gè)字符串8/4/2022149第149頁(yè),共311頁(yè)。圖形編輯器繪制位圖、圖標(biāo)、鼠標(biāo)繪制工具欄位圖8/4/2022150第150頁(yè),共311頁(yè)。任務(wù)1文本編輯器的使用詳見(jiàn)例418/4/2022151第151頁(yè),共311頁(yè)。菜單的類型頂層菜
48、單(top-level menu)彈出菜單(pop-up menu)下拉菜單(Drop-down menu)子菜單(Submenu)快捷菜單(Shortcut menu)CObjectCMenu8/4/2022152第152頁(yè),共311頁(yè)。菜單編輯器的操作插入菜單項(xiàng)插入分割線增加子菜單刪除菜單項(xiàng)調(diào)整菜單項(xiàng)位置屬性對(duì)話框的填寫(xiě)IDCaptionPrompt8/4/2022153第153頁(yè),共311頁(yè)。 菜單消息命令的處理WMCOMMANDClassWizard8/4/2022154第154頁(yè),共311頁(yè)。 更新菜單命令的處理UPDATE_COMMAND_UICCmdUI類及成員函數(shù)EnableS
49、etCheckSetRadioSetText用戶在選擇有些菜單命令時(shí),希望看到選擇留下的痕跡8/4/2022155第155頁(yè),共311頁(yè)。任務(wù)2更新菜單項(xiàng)舉例詳見(jiàn)例428/4/2022156第156頁(yè),共311頁(yè)。任務(wù)3使用快捷菜單增加一個(gè)快捷菜單快捷菜單命令項(xiàng)命令處理函數(shù)詳見(jiàn)例43使用Component Gallery增加一個(gè)快捷菜單 8/4/2022157第157頁(yè),共311頁(yè)。任務(wù)4在對(duì)話框應(yīng)用程序中添加菜單欄詳見(jiàn)實(shí)驗(yàn)38/4/2022158第158頁(yè),共311頁(yè)。工具欄和狀態(tài)欄CToolBarCStatusBarCMainFrame:OnCreateCObjectCCmdTargetC
50、WndCControlBarCToolBarCStatusBar8/4/2022159第159頁(yè),共311頁(yè)。默認(rèn)工具欄源代碼剖析定義工具欄成員變量CToolBar m_wndToolBar 創(chuàng)建工具欄窗口加載工具欄資源設(shè)置工具欄停靠特性設(shè)置框架窗口??刻匦园压ぞ邫谕?吭诳蚣艽翱诘木唧w位置8/4/2022160第160頁(yè),共311頁(yè)。自定義工具欄的創(chuàng)建創(chuàng)建一個(gè)工具欄資源定義一個(gè)CToolBar的對(duì)象調(diào)用CToolBar:Create創(chuàng)建工具欄窗口調(diào)用CToolBar:LoadToolBar裝載工具欄資源例448/4/2022161第161頁(yè),共311頁(yè)。任務(wù)5生成兩個(gè)自定義的工具欄詳見(jiàn)實(shí)驗(yàn)18
51、/4/2022162第162頁(yè),共311頁(yè)。默認(rèn)狀態(tài)欄源代碼剖析定義狀態(tài)欄成員變量CStatusBarm_wndStatusBar窗格數(shù)組CStatusBar:Create創(chuàng)建狀態(tài)欄窗口CStatusBar:SetIndicator設(shè)置窗格8/4/2022163第163頁(yè),共311頁(yè)。修改狀態(tài)欄的窗格刪除一個(gè)窗格移動(dòng)一個(gè)窗格添加一個(gè)窗格創(chuàng)建一個(gè)dummy menu菜單資源標(biāo)識(shí)窗格在Indicator數(shù)組中增加窗格資源創(chuàng)建窗格ID的命令更新處理程序8/4/2022164第164頁(yè),共311頁(yè)。任務(wù)6在狀態(tài)欄添加時(shí)間顯示詳見(jiàn)例458/4/2022165第165頁(yè),共311頁(yè)。第5章圖形和文本輸出圖
52、形設(shè)備接口CGdiObject對(duì)象CDC文本處理繪圖處理第166頁(yè),共311頁(yè)。圖形設(shè)備接口GDI(graphics device interface)矢量圖形創(chuàng)建線和填充圖形光柵圖形位圖文本輸出以邏輯坐標(biāo)為單位計(jì)算文本輸出位置8/4/2022167第167頁(yè),共311頁(yè)。繪圖工具GDI對(duì)象GdiObjectCGdiObject是一個(gè)抽象類,該類不能直接定義對(duì)象。必須使用它的派生類8/4/2022168第168頁(yè),共311頁(yè)。設(shè)備上下文DCdevice contextGDI創(chuàng)建用來(lái)代表設(shè)備連接的數(shù)據(jù)結(jié)構(gòu)主要功能:允許應(yīng)用程序使用一個(gè)輸出設(shè)備提供窗口應(yīng)用程序,設(shè)備驅(qū)動(dòng),和輸出設(shè)備之間的連接保存當(dāng)
53、前信息,例如在一個(gè)窗口內(nèi)繪圖使用的顏色,畫(huà)筆的寬度、畫(huà)刷的類型等等保存窗口剪取區(qū)域(clipping region),限制程序輸出到輸出設(shè)備中窗口覆蓋的區(qū)域8/4/2022169第169頁(yè),共311頁(yè)。設(shè)備上下文類CDCCObjectCDCCClientDCCMetaFileDCCPanitDCCWindowDC8/4/2022170第170頁(yè),共311頁(yè)。OnDraw函數(shù)void CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native da
54、ta here pDC-TextOut(1,1,”hello world!”);8/4/2022171第171頁(yè),共311頁(yè)。WM_PAINT消息產(chǎn)生WM_PAINT消息的場(chǎng)合通常有 窗口移動(dòng)后及最大化,最小化后的刷新。 被覆蓋區(qū)域的刷新,如下拉菜單覆蓋的區(qū)域。 無(wú)效區(qū)域產(chǎn)生后的刷新,如執(zhí)行滾動(dòng)條操作,將一區(qū)域移動(dòng)至不可見(jiàn)。 8/4/2022172第172頁(yè),共311頁(yè)。WM_PAINT消息人為地生成一個(gè)繪制消息,重繪窗口 的方法:Invalidate(true); CRect rect(1,1,300,300); InvalidateRect(&Rect, true);8/4/2022173
55、第173頁(yè),共311頁(yè)。獲取設(shè)備上下文 的方法接受一個(gè)參數(shù)為指向CDC對(duì)象的指針 void CMyView:OnDraw(CDC* pDC); 構(gòu)造CClientDC對(duì)象 CClientDC dc(this); 8/4/2022174第174頁(yè),共311頁(yè)。接受一個(gè)參數(shù)為指向CDC對(duì)象的指針void CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here /在坐標(biāo)為10,10的位置上畫(huà)一點(diǎn),顏色黑色 pDC-SetPixe
56、l(CPoint(10,10),RGB(0,0,0); 參數(shù)為指向CDC對(duì)象的指針8/4/2022175第175頁(yè),共311頁(yè)。構(gòu)造CClientDC對(duì)象構(gòu)造CClientDC對(duì)象 Void CMyView:OnLButtonDown(UNIT nFlags,CPoint point)/ TODO: add draw code for native data here CClientDC dc(this); /this 指針將CMyView賦值給創(chuàng)建的dc對(duì)象 dc.SetPixel(point,RGB(255,0,0);CView: OnLButtonDown( nFlags,point);
57、 8/4/2022176第176頁(yè),共311頁(yè)。任務(wù)1編寫(xiě)一個(gè)單文檔MFC(EXE)程序,在視圖類增加成員變量,追蹤鼠標(biāo)的左鍵雙擊位置的坐標(biāo),并輸出詳見(jiàn)例5-1 8/4/2022177第177頁(yè),共311頁(yè)。處理文本 設(shè)置文本顏色 設(shè)置文本顯示屬性 設(shè)置字體 格式化文本 文本輸出函數(shù) 圖形和文本并沒(méi)有明顯的界限8/4/2022178第178頁(yè),共311頁(yè)。設(shè)置文本顏色COLORREF SetTextColor(COLORREF crColor); COLORREF SetBkColor(COLORREF crColor); 8/4/2022179第179頁(yè),共311頁(yè)。顏色的表示8/4/202
58、2180第180頁(yè),共311頁(yè)。/基本三元色COLORREF crRed=RGB(255,0,0);COLORREF crGreen=RGB(0,255,0);COLORREF crBlue=RGB(0,0,255)/ 16-color設(shè)備支持顏色const COLORREF g_crBlack = RGB(0,0,0);const COLORREF g_crYellow = RGB(255,255,0);const COLORREF g_crDkYellow = RGB(128,128,0);const COLORREF g_crRed = RGB(255,0,0);const COLORR
59、EF g_ crDkRed = RGB(128,0,0);const COLORREF g_crMagenta = RGB(255,0,255);const COLORREF g_ crDkMagenta = RGB(128,0,128);const COLORREF g_crBlue= RGB(0,0,255);const COLORREF g_ crDkBlue = RGB(0,0,128); 8/4/2022181第181頁(yè),共311頁(yè)。void CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc)
60、;pDC-SetTextColor(RGB(255,0,0);pDC-SetBkColor(RGB(0,0,0);CString str; str.Format(鼠標(biāo)左鍵雙擊的位置是%d,%d,m_LPoint.x, m_LPoint.y); pDC-TextOut(0,0,str); 8/4/2022182第182頁(yè),共311頁(yè)。設(shè)置文本顯示屬性 函數(shù)說(shuō)明SetBkModeGetBkMode設(shè)置和獲取背景模式SetTextAlignGetTextAlign設(shè)置和獲取對(duì)齊方式SetTextJusttification SetTextCharaterExtra調(diào)整文本8/4/2022183第18
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1《白鷺》說(shuō)課稿-2024-2025學(xué)年統(tǒng)編版語(yǔ)文五年級(jí)上冊(cè)
- 2025技術(shù)咨詢合同書(shū)
- 2025大連市住宅小區(qū)物業(yè)管理委托合同
- 2024年五年級(jí)品社下冊(cè)《同是炎黃子孫》說(shuō)課稿 山東版001
- 5《玲玲的畫(huà)》說(shuō)課稿-2024-2025學(xué)年語(yǔ)文二年級(jí)上冊(cè)統(tǒng)編版
- 2023二年級(jí)數(shù)學(xué)下冊(cè) 6 有余數(shù)的除法第5課時(shí) 解決問(wèn)題(1)說(shuō)課稿 新人教版
- 27我的伯父魯迅先生(說(shuō)課稿)-2024-2025學(xué)年六年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版001
- 2024-2025學(xué)年高中地理下學(xué)期第4周說(shuō)課稿(世界的自然資源)
- 2023三年級(jí)數(shù)學(xué)上冊(cè) 一 動(dòng)物趣聞-克、千克、噸的認(rèn)識(shí) 信息窗2噸的認(rèn)識(shí)說(shuō)課稿 青島版六三制
- 蕪湖廠房推拉棚施工方案
- 糖尿病足的多學(xué)科聯(lián)合治療
- 小龍蝦啤酒音樂(lè)節(jié)活動(dòng)策劃方案課件
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第五章運(yùn)動(dòng)中的中樞控制
- 財(cái)務(wù)部規(guī)范化管理 流程圖
- 蘇教版2023年小學(xué)四年級(jí)數(shù)學(xué)下冊(cè)教學(xué)計(jì)劃+教學(xué)進(jìn)度表
- 小學(xué)作文指導(dǎo)《難忘的一件事》課件
- 斷絕關(guān)系協(xié)議書(shū)范文參考(5篇)
- 量子力學(xué)課件1-2章-波函數(shù)-定態(tài)薛定諤方程
- 最新變態(tài)心理學(xué)課件
- 【自考練習(xí)題】石家莊學(xué)院概率論與數(shù)理統(tǒng)計(jì)真題匯總(附答案解析)
- 農(nóng)村集體“三資”管理流程圖
評(píng)論
0/150
提交評(píng)論