面向?qū)ο蟪绦蛟O(shè)計C++實驗報告

上傳人:z**** 文檔編號:59829665 上傳時間:2022-03-05 格式:DOC 頁數(shù):36 大?。?24.50KB
收藏 版權(quán)申訴 舉報 下載
面向?qū)ο蟪绦蛟O(shè)計C++實驗報告_第1頁
第1頁 / 共36頁
面向?qū)ο蟪绦蛟O(shè)計C++實驗報告_第2頁
第2頁 / 共36頁
面向?qū)ο蟪绦蛟O(shè)計C++實驗報告_第3頁
第3頁 / 共36頁

本資源只提供3頁預(yù)覽,全部文檔請下載后查看!喜歡就下載吧,查找使用更方便

40 積分

下載資源

資源描述:

《面向?qū)ο蟪绦蛟O(shè)計C++實驗報告》由會員分享,可在線閱讀,更多相關(guān)《面向?qū)ο蟪绦蛟O(shè)計C++實驗報告(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、電子科技大學(xué)信息與軟件工程學(xué)院 標(biāo)準(zhǔn)實驗報告 (實驗)課程名稱:面向?qū)ο蟪绦蛟O(shè)計 C++ 電子科技大學(xué)教務(wù)處制表 學(xué)生姓名:趙天豪 學(xué) 號: 指導(dǎo)教師:李巧勤 實驗地點:信軟學(xué)院實驗室 實驗時間:15/12/21 一、實驗室名稱:信軟學(xué)院軟件實驗室 二、實驗項目名稱: 基于 MFC 的 C++ 桌面應(yīng)用開發(fā) 三、實驗學(xué)時: 16 學(xué)時 四、實驗原理: 本次實驗基于MFC開發(fā)C++桌面應(yīng)用程序,實現(xiàn)可視化操作。 五、 實驗?zāi)康模? 充分運用所學(xué)的C++的數(shù)據(jù)封裝、繼承與派生、多態(tài)等全部核心內(nèi)容,補充 完整一個基于 MFC 的應(yīng)用,使學(xué)生能夠基本掌握 OOA、OOD 方法;

2、熟練掌握 OOP方法;初步了解基于 Windows平臺的桌面圖形化應(yīng)用的開發(fā)過程,掌握編 程工具的使用;初步掌握建模工具的使用;基本掌握閱讀、調(diào)試程序的能力。 六、 實驗內(nèi)容: 一位小學(xué)教師 Ken 希望完成這樣的任務(wù):針對于小學(xué)生正在學(xué)習(xí)四邊形 (quadrangle) 的特性,編寫一個小軟件, 能夠隨機在屏幕上顯示矩形 (rectangle) 正方形(square)、平行 四邊形(parallelogram)、梯形(trapezoid) 和菱形 (diamond) 五種形體之一, 同時顯示該形體的特性和關(guān)鍵數(shù)據(jù) (隨機產(chǎn)生),學(xué)生 復(fù)習(xí)形體的特性, 然后根據(jù)給出的關(guān)鍵數(shù)據(jù)計算形體的面積

3、, 軟件判斷其結(jié)果的 正確性。在學(xué)習(xí)過程中,軟件記錄產(chǎn)生的每一個形體,在學(xué)生選擇不再繼續(xù)后, 將其學(xué)習(xí)的過程重放一遍,用以重溫,加深印象。 根據(jù)上述描述,需要完成: 1) 必做內(nèi)容 根據(jù)Ken老師的要求,需要至少編寫六個類: Rect // 注意:類名不要使用 Rectangle Square Parallelogram Trapezoid Diam ond List (注:這六個類必須以上述名字命名) 其中,前五個類用于描述五種形體。五種形體不用頂點坐標(biāo)的表示形式,而 只是簡單地用它們的特征值表示。例如:矩形、平行四邊形用長和高表示;正方 形用邊長表示;梯形用兩條平行邊

4、長和高表示;菱形用兩條對象線長表示。要求 為這五種形體編寫相應(yīng)的類,每個類的設(shè)計要求如下: (1) Quadrangle類必須成為抽象類,是其它形體類的祖先。它擁有如下 成員: 成員 類型 是否純虛 n ame 數(shù)據(jù) / area 函數(shù) 是 draw 函數(shù) 是 what 函數(shù) 可選 (2) 其它形體類之間的繼承關(guān)系請自行擬定。 其中,Parallelogram 類必 須擁有如下虛成員: Width(); // 返回寬 Height(); // 返回高 (3) 每個形體類必須完成如下操作: [1] 設(shè)置標(biāo)志名屬性name五種形體的標(biāo)志名必須是 Par

5、allelogram、 Rectangle、Diamond Trapezoid 和 Square 之一(第一個字母大寫, 其余小寫); [2] 重載area()成員; [3] 重載draw()成員; [4] 重載Width()成員以返回寬; [5] 重載Height()成員以返回高; [6] 提供Width2()成員以返回第二條平行邊長(僅對梯形) (4) List類必須擁有如下成員函數(shù): size() ; //返回列表中的節(jié)點數(shù) push_back() ; //將數(shù)據(jù)添加到列表末尾 operator]] ; //返回指定下標(biāo)的數(shù)據(jù) traverse() ; // 遍歷,

6、需要一個訪問函數(shù)作為參數(shù) pop_back() // 用來刪除列表的最后一個節(jié)點,其原型為: void pop_back(); ( 5) 重溫過程實際上就是遍歷 List 類對象的過程。 2) 選作內(nèi)容 List 類實際上是一種稱為“容器”的類。除了容納形體指針,其實它還可以 容納任何類型的對象。在本選作內(nèi)容中, ( 1) 請將 List 類改為模板類,使其能容納任何類型的對象; ( 2) 請為 List 類編寫迭代器。要求如下: 該迭代器的類名為 Iterator; 該迭代器必須重載如下運算符: ++:迭代器后移 != :兩個迭代器比較 * :返回迭代器指向節(jié)點的數(shù)據(jù)域中

7、的值,即 quad 指針。 =:兩個迭代器的復(fù)制 +。該運算符函數(shù)的原型為: Iterator operator+(int i); 其功能為:假設(shè)當(dāng)前迭代器(的內(nèi)部指針)指向了第 k 個節(jié)點(從 0 開 始計數(shù)),那么 +運算符返回一個迭代器,該迭代器是在當(dāng)前迭代器的基礎(chǔ)上 向后移動 i 個位置得到的,即該迭代器指向了第 k+i 個節(jié)點。例如: Iterator itr = list.begin() + 5; 那么迭代器 itr 就指向了從列表的頭節(jié)點往后數(shù)第 5 個結(jié)點。 為 Iterator 類編寫 begin() 和 end() 成員。 七、實驗器材(設(shè)備、元器件) :

8、PC計算機、Windows系列操作系統(tǒng)、Visual Studio2013軟件 八、實驗步驟: 1 )完成類的設(shè)計; 2)根據(jù)設(shè)計結(jié)果編寫各種形體類的代碼;完成學(xué)習(xí)模式的編程與測試 3) 完成List類的編碼與測試; 4) 完善程序流程,實現(xiàn)復(fù)習(xí)模式; 5) 對前面完成的所有文件進行整合,生成一個解決方案,并進行調(diào)試; 6) 程序優(yōu)化。 九、實驗程序及結(jié)果分析: Can vas.h: #pragma once #i nclude "quad.h" class Quadrangle; // Can vas 視圖 class Canvas : public CScroll

9、View { DECLARE_DYNCREATE(Ca nvas) //protected: public : Can vas(); //動態(tài)創(chuàng)建所使用的受保護的構(gòu)造函數(shù) virtual ~Ca nvas(); public : #ifdef _DEBUG virtual void AssertValid() const; #ifndef _WIN32_WCE virtual #en dif void Dump(CDumpContext& dc) const; #en dif protected : virtual void On Dra

10、w(CDC* pDC); // 重寫以繪制該視圖 virtual void Onlni tialUpdate(); // 構(gòu)造后的第一次 DECLARE_MESSAGE_MAP() public : static static Can vas * pCa nvas; void drawQuad( const Quadrangle *quad); static bool isLearning; bool toggleMode( void ); double area; private : enum_QUAD_ { para = 0, rect, sqr,

11、 diam, trap }; typedef pair KV; mapvstri ng, _QUAD_> quadMap; }; Diam: #pragma once #include #include #i nclude "Ca nvas.h" #include "para.h" using namespacestd; class Diamond : public Para { public : Diamond(int d1 = 4, int d2 = 8, string nm= "Diamon

12、d") : Para(d1, d2, nn){}; ~Diamo nd(){}; void draw() const{ Para::draw(); }; double area() const { return ( double )width*height/2; }; string what() const { return name; }; int & Width1(){ return d1; }; int & Width2(){ return d2; }; friend ostream&operator<<( ostream& os, const Diamond &c2);

13、 Diamond& operator= ( const Diamond& di) { name = di .name; d1 = di .d2; d2 = di .d2; return * this ; } protected : int d1, d2; }; Experime nt: // experime nt.h : PROJECT_NAME 應(yīng)用程序的主頭文件 // #pragma once #ifndef __AFXWIN_H__ #error "在包含此文件之前包含 “ stdafx.h ”以生成PCH文件" #en dif #include "r

14、esource.h" // 主符號 // Cexperime ntApp: //有關(guān)此類的實現(xiàn),請參閱 experime nt.cpp // class CexperimentApp : public CWinApp { public : Cexperime ntApp(); //重寫 public : virtual BOOL nitl nsta nce(); //實現(xiàn) DECLARE_MESSAGE_)MAP }; exter n Cexperime ntApp theApp; Experime ntdlg.h: // experime ntDlg.h :

15、頭文件 // #pragma once #in clude "ca nvas.h" // Cexperime ntDlg 對話框 class CexperimentDlg : public CDialogEx { //構(gòu)造 public : CexperimentDlg( CWnd pParent = NULL; // 標(biāo)準(zhǔn)構(gòu)造函數(shù) //對話框數(shù)據(jù) en um{ IDD = IDD_EXPERIMENT_DIALQG protected : virtual void DoDataExchange( CDataExchang@ pDX); // DDX/DDV 支持

16、//實現(xiàn) protected : HICONm_hlc on; //生成的消息映射函數(shù) virtual BOOLO nln itDialog(); afx_msg void OnSysCommandUINT nID, LPARAMParam); afx_msg void On Paint(); afx_msg HCURSOOnQueryDraglcon(); DECLARE_MESSAGE_)MAP public : Can vas *pCa nvas; afx_msg void OnBnClickedOk(); double an swer; CString res

17、ult; afx_msg void OnClickedButtonNext(); afx_msg void OnClickedButtonStop(); afx_msg void OnClickedButtonSubmit(); public : QUADPTReateAquad( void ); private : bool lastDone; virtual BOOLOnCommandW/PARAMParam, LPARAMParam); }; List.h: #pragma once #i nclude "quad.h" #inelude

18、#inelude _| //typedef void(*ACCESSFUN)(QUADPTR); // 定義遍歷時節(jié)點處理函數(shù)類型 class List { protected : struct Node { QUADPTRata; Node* next; Node(QUADPTR) :data( d){} } *head, *tail; //鏈表的頭尾指針 //typedef Node* _ran ge; size_t len; //鏈表中節(jié)點的數(shù)目即鏈表的長度 public : List() :head( NULL, tail( NULI){ l

19、en = 0; } // 平凡構(gòu)造函數(shù) List( List con st & l) { head = tail = NULL Node*p = l .head; while (p != NULL { this ->push_back(p->data); p = p_>n ext; } len = 0; | } //復(fù)制構(gòu)造函數(shù) ~List() { Node*p = head, *q; while (p != NULL { q = p; p = p_>n ext; delete q; } }; Node *Tail(){ return tail; }

20、 //size_t size(){ return le n; }; // 獲取鏈表的長度 size_t List ::size() Node*p = head; size_t i = 0; while (p != NULL { p = p_>n ext; ++i; } return i; } void push_back( con st QUADPTRuad) // 尾部添加 { Node*p = new Node( quad); p-> next = NULL if (tail == NULL head = tail = p; else { tail->next

21、 = p; tail = p; } len++; } int pop_back() { if (len == 0) return len; Node*c = head; if (c == tail){ delete c; head = tail = NULL } else { while (c->next != tail) c++; delete tail; tail = c; tail-> next = NULL | } len--; return len; } void traverse( void (* f)( const QUADPT&R) {

22、 Node*p = head; int i = 1; while (p != NULL cout << "第"<< i++ << "個"<< endl; f (p->data); p = p_>n ext; //請自行添加指針移動部分 } }//遍歷 List & operator=( const List & l ) { head = tail = NULL Node*p = l .head; while (p != NULL { this ->push_back(p->data); p = p_>n ext; } len = 0; retur

23、n * this ; } List & operato葉=(const QUADPTSRdata) { Node*p = new Node( data); p-> next = NULL if (tail == NULL head = tail = p; else { tail->n ext = p; tail = p; } len++; return * this ; } QUADPTSRoperator[]( size_t n) { Node*p = head; for ( size_t i = 1; i <= n; i++){ p = p_>n ex

24、t; } return p->data; } }; Para.h: #pragma once #inelude vstring> #inelude #inelude "quad.h" #i nclude "Can vas.h" using namespacestd; class Para : public Quadrangle { public : Para(int w = 5, int h = 7, string nm= "Parallelogram" ) :width( w), height( h),

25、 Quadra ngle (n n){}; ~Para(){}; void draw() const{ Canvas::drawQuad( this ); }; double area() const { return width*height; }; stri ng what() con st { retur n Quadra ngle ::what(); }; int & Width(){ return width; }; //獲取矩形的寬。如果是梯形,還需要一個成員 int& Width2() 來獲取另一條平行邊的長度 int & Height(){ return heig

26、ht; }; // 獲取矩形的高 friend ostream &operator<<( ostream & os, const Para &c3); Para &operator=( const Para&pa) { n ame = pa.n ame; width = pa.width; height = pa.height; return * this ; } protected : int width; int height; }; Quad.h: #pragma once #include | #in clude "Can vas.h"

27、 using namespacestd; class Quadrangle { protected : public : string name; //形體的標(biāo)識 Quadrangle( string nm = "Quadrangle" ) :name( nn){} virtual stri ng double area() const =0; return n ame; }; what() const { virtual void draw() const =0; }; typedef Quadrangle * QUADPTjR Rect.h:

28、#pragma once #include _| #include #include "para.h" #i nclude "Can vas.h" using namespacestd; class Rect : public Para { public : Rect( int w = 4, int h = 8, string nm= "Rectangle" ) : Para( w, h, nn){}; ~Rect(){}; stri ng what() con st { return Para::what(); }; double

29、 area() con st { return Para::area(); } void draw() con st { Can vas::drawQuad( this ); } int Width() con st { return width; } int Height() const{ return height; } friend ostream&operator<<( ostream& os, const Rect &c1); Rect &operator=( const Rect&re) { n ame = re. name; width = re .width;

30、 height = re .height; return * this ; }; Resource*: 〃{{NO_DEPENDENCIES}} // Microsoft Visual C++ gen erated in elude file. // Used by experime nt.rc // #defi ne IDM_ABOUTBOX 0x0010 #defi ne IDD_ABOUTBOX 100 #defi ne IDS_ABOUTBOX 101 #defi ne IDD EXPERIMENT DIALOG 102 #defi ne IDR

31、_MAINFRAME 128 #defi ne IDC_EDIT_ANSWER 1000 #defi ne IDC_BUTTON_SUBMIT 1001 #defi ne IDC_BUTTON_NEXT 1002 #defi ne IDC BUTTON STOP 1003 #defi ne IDC_EDIT_RESULT 1004 #defi ne IDC_STATIC_GROUP 1005 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APS

32、TUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 129 #define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_CONTROL_VALUE 1006 #define _APS_NEXT_SYMED_VALUE 101 #en dif #en dif Squa.h: #pragma once #include #include #include "rect.h" #in clude "Can vas.h" usin

33、g namespacestd; class Square : public Rect { public : ~Square(){}; void draw() const{ Rect::draw(); }; double area() con st { return width*width; }; string what() con st { return Rect::what(); }; int & Width(){ return width; }; friend ostream &operator<<( ostream & os, const Square &c4

34、); Square(int w = 6, string nm= "Square") : Rect(w,w, nn){}; Square&operator=( const Square&sq) { n ame = sq.n ame; width = sq.width; return * this ; } }; Stdafx.h: // stdafx.h : 標(biāo)準(zhǔn)系統(tǒng)包含文件的包含文件, //或是經(jīng)常使用但不常更改的 //特定于項目的包含文件 #pragma once #ifndef _SECURE_ATL #defi ne _SECURE_ATIL #en dif

35、 #ifndef VC_EXTRALEAN #define VC_EXTRALEAN //從 Windows頭中排除極少使用的資料 #en dif #i nclude "targetver.h" #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 構(gòu)造函數(shù)將是顯式的 //關(guān)閉MFC對某些常見但經(jīng)??煞判暮雎缘木嫦⒌碾[藏 #defi ne _AFX_ALL_WARNINGS #include vafxwin.h> // MFC核心組件和標(biāo)準(zhǔn)組件 #include // MFC 擴展 #i

36、n clude // MFC自動化類 #ifndef _AFX_NO_OLE_SUPPORT #i nclude // MFC 對 In ternet Explorer 4 公共控件的支持 #en dif #ifndef _AFX_NO_AFXCMN_SUPPORT #include // MFC 對 Windows 公共控件的支持 #en dif // _AFX_NO_AFXCMN_SUPPORT #include // 功能區(qū)和控件條的 MFC 支持 #ifd

37、ef _UNICODE #if defined _M」X86 #pragma commentlinker, "/manifestdependency:\"type='win32' #elif defined _M_X64 #pragma commentlinker, "/manifestdependency:\"type='win32' publicKeyToke n='6595b64144ccf1df' la nguage='*'\"" ) #else #pragma commentlinker, "/manifestdependency:\"type='win32'

38、 #en dif #en dif #in clude #in elude 〃{{ 你編寫的頭文件都包含在這里 〃}} using namespacestd; Targetver.h: #pragma once //包括SDKDDKVer.h將定義最高版本的可用 Windows平臺。 //如果要為以前的 Windows平臺生成應(yīng)用程序,請包括 WinSDKVer.h,并將 // WIN32_WINNT宏設(shè)置為要支持的平臺,然后再包括 SDKDDKVerh #in clude Trap.h: #pragma

39、 once #include | #include #include "quad.h" #i nclude "Can vas.h" using namespacestd; class Trapezoid : public Quadrangle { public : Trapezoid( int w1 = 5.0, int w2 = 7.0, int h = 8.0, string nm= "Trapezoid" ) :width1( w1), width2( w?,height( h), Quadrangle (nn){}; ~Tra

40、pezoid(); void draw() const{ Canvas::drawQuad( this ); }; double area() const { return ( double )(width1+width2)*height/2; }; string what() const { return name; }; int Width1(){ return width1; }; int Width2(){ return width2; }; int Height(){ return height; }; friend ostream&operator<<( ostrea

41、m& os, const Trapezoid &c5); Trapezoid &operator=( const Trapezoid &tr ) { name = tr .name; width1 = tr .width1; width2 = tr .width2; height = tr .height; return * this ; } private : int widthl; int width2; int height; }; Can vas.cpp: // Can vas.cpp : 實現(xiàn)文件 // #i nclude "stdafx.h" #

42、in clude "experime nt.h" #i nclude "Can vas.h" #include "quad.h" #include "diam.h" #include "list.h" #include "para.h" #include "rect.h" #include "squa.h" #include "trap.h" 〃{{ 外部說明添加到這里 extern List list; 〃}} // Can vas Can vas * Can vas:pCa nvas = NULL bool Canvas::isLearning = false

43、; IMPLEMENT_DYNCREACTfivas, CScrollView ) Can vas:Ca nvas() { pCanvas = this ; quadMap.insert( KV( "Parallelogram" , para)); quadMap.insert( KV( "Rectangle" , rect )); quadMap.insert( KV( "Square" , sqr)); quadMap.insert( KV("Diamond", diam)); quadMap.insert( KV( "Trapezoid" , trap )); }

44、static CString formatString[] = | { _T("寬=%d,高=%d,面積="), _T("對角線1=%d,對角線2=%d,面積="), _T("平行邊1=%d,平行邊2=%d,高=%d,面積=") }; Can vas:~Ca nvas() { } BEGIN_MESSAGE_MCPivas, CScrollView ) END_MESSAGE_MAP // Can vas 繪圖 void Canvas::OnlnitialUpdate() { CScrollView ::OnlnitialUpdate(); //CSize size

45、Total; // TODO:計算此視圖的合計大小 //sizeTotal.cx = sizeTotal.cy = 100; 〃SetScrollSizes(MM_TEXT, sizeTotal); } union _QUADPTR_ { Quadra ngle *q; Para *p; Rect *r; Diam on d*d; Square *s; Trapezoid *t; }; void Canvas::OnDraw( CDC pDC { CDocumen* pDoc = GetDocume nt(); // TODO:在此添加繪制代碼 CRect

46、rect; GetClie ntRect(&rect); | CBrush br( RGI(220, 200, 170)); CBrush * oldBrush = reinterpret_cast ( pDG>SelectObject (&br)); int xc, yc; int vw = rect.Width (), vh = rect.Height (); int sw = static_cast (vw * 0.75 / 2.0), sh = static_cast (vh * 0.75 / 2.0); SIZE ad[5][4

47、]= { { { -sw + 50, -sh }, { sw + 50, -sh }, { sw - 50, sh }, { -sw - 50, sh } }, { { -sw, -sh }, { sw, -sh }, { sw, sh }, { -sw, sh } }, | { { -sh, -sh }, { sh, -sh }, { sh, sh }, { -sh, sh } }, { { 0, -sh }, { sw, 0 }, { 0, sh }, { -sw, 0 } }, { { -sw + 120, -sh }, { sw - 80, -sh }, { sw, sh }

48、, { -sw, sh } }, | }; double ratio = 1.0; int yOffset = 120; if (isLearning) { xc = vw / 2; yc = vh / 2; } else { xc = 80; | yc = 60; ratio = 0.3; } POINTvert[4]; int shape; size_t i, beg in = 0, end = list.size(); if (isLearning) begin = end - 1; _QUADPTR_jad; stri ng n ame; CS

49、tring msg, msg2; for (i = begin; i<= end; ++i) { quad.q = list[i]; n ame = quad.q->what(); area = quad.q->area (); shape = quadMap[ name]; switch (shape) { case trap : msg.Format(formatStri ng[2], quad.t->Width1(), quad.t->Width2(), quad.t->Height()); break; case diam: msg.Format(forma

50、tString[1], quad.p->Width(), quad.p->Height()); break; default : msg.Format(formatString[0], quad.p->Width(), quad.p->Height()); } if (isLearning) msg2 = _T(" ?"); else msg2.Format ( T("%.1lf" ), area); msg += msg2; for ( int i = 0; i < 4; ++i) { vert[i].x = static_cast (xc + (ad[shape

51、][i].cx * ratio)); vert[i].y = static_cast (yc + (ad[shape][i].cy * ratio)); } int tx, ty; if (isLearning) { tx = xc - sw; ty = yc + sh + 8; } else { CBrush br( RGB240, 240, 240)); CBrush *oldbr = reinterpret_cast vCBrush *>( pDG>SelectObject(&br)); CPen*oldpen = reinterpret_cast

52、( pDG>SelectStockObject( NULL_PEN; pDG>Recta ngle (xc - 80, yc - 50, xc + 600, yc + 50); pDG>SelectObject(oldbr); pDG>SelectObject(oldpe n); tx = xc + yOffset - 24; ty = yc - 8; yc += yOffset; } pDOPolygon (vert, 4); pDOSetBkMode ( TRANSPARENT pDOTextOutW (tx, ty, msg); } pDG>SelectOb

53、ject (oldBrush); } void Canvas::drawQuad( const Quadrangle * quad) { if (isLearning) pGanvas->lnvalidate (); } // Can vas 診斷 #ifdef _DEBUG void Canvas::AssertValid() const| { CScrollView ::AssertValid(); } #ifndef _WIN32_WCE void Canvas::Dump( CDumpContex& dc) const { CScrollView ::Dump(

54、dc); } #en dif #en dif 〃_DEBUG bool Canvas::toggleMode( void ) { retur n isLear ning = !isLear ning; Experime nt.cpp: // experime nt.cpp : 定義應(yīng)用程序的類行為。 // #i nclude "stdafx.h" #in elude "experime nt.h" #i nclude "experime ntDIg.h" #ifdef _DEBUG #defi ne n ewDEBUG_NEW #en dif // Cexper

55、ime ntApp BEGIN_MESSAGE_MAP(Cexperime ntApp, CWin App) ON_COMMAND(ID_HELP, &CWin App::O nH elp) END_MESSAGE_MAP() // Cexperime ntApp 構(gòu)造 Cexperime ntApp::Cexperime ntApp() { //支持重新啟動管理器 m_dwRestartMa nagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; // TODO:在此處添加構(gòu)造代碼, //將所有重要的初始化放置在I

56、nitln sta nee 中 } // 唯一的一個 CexperimentApp 對象 Cexperime ntApp theApp; // Cexperime ntApp 初始化 BOOL Cexperime ntApp::l nit In sta nce() { //如果一個運行在Windows XP上的應(yīng)用程序清單指定要 //使用ComCtl32.dll 版本6或更高版本來啟用可視化方式, //則需要InitCommonControlsEx()。否則,將無法創(chuàng)建窗口。 INITCOMMONCONTROLSEX Ini tCtrls; InitCtrls.dwSiz

57、e = sizeof (InitCtrls); //將它設(shè)置為包括所有要在應(yīng)用程序中使用的 //公共控件類。 In itCtrls.dwICC = ICC_WIN95_CLASSES; In itCommo nCon trolsEx (&ln itCtrls); CWin App::I nitI nsta nce(); AfxE nableCo ntrolCo ntain er(); //創(chuàng)建shell管理器,以防對話框包含 //任何shell 樹視圖控件或shell 列表視圖控件。 CShellMa nager *pShellMa nager = n ewCShellMa

58、nager; //標(biāo)準(zhǔn)初始化 //如果未使用這些功能并希望減小 //最終可執(zhí)行文件的大小,則應(yīng)移除下列 //不需要的特定初始化例程 //更改用于存儲設(shè)置的注冊表項 // TODO:應(yīng)適當(dāng)修改該字符串, //例如修改為公司或組織名 SetRegistryKey(_T("應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序")); Cexperime ntDlg dlg; m_pMai nWnd = & dlg; INT_PTR nRespo nse = dlg.DoModal(); if (n Response == IDOK) { // TODO:在此放置處理何時用 // “確定”來關(guān)

59、閉對話框的代碼 } else if (nResponse == IDCANCEL) { // TODO:在此放置處理何時用 // “取消”來關(guān)閉對話框的代碼 //刪除上面創(chuàng)建的shell管理器。 if (pShellManager != NULL) { delete pShellManager; } //由于對話框已關(guān)閉,所以將返回 FALSE以便退岀應(yīng)用程序, // 而不是啟動應(yīng)用程序的消息泵。 return FALSE; } Exprime ntdlg.cpp: // experime ntDlg.cpp : 實現(xiàn)文件 // #i nclude "std

60、afx.h" #in clude "experime nt.h" #i nclude "experime ntDlg.h" #i nclude "afxdialogex.h" #include "quad.h" #include "diam.h" #include "list.h" #include "para.h" #include "rect.h" #include "squa.h"_| #include "trap.h" #ifdef _DEBUG #defi ne n ewDEBUG_NEW #en dif 〃{{ 全局說明添加在這里 List list;

61、 〃}} void access( const QUADPTR& quad) { quad_>draw(); } //用于應(yīng)用程序“關(guān)于”菜單項的CAboutDlg對話框 class CAboutDlg : public CDialogEx { public : CAboutDlg(); //對話框數(shù)據(jù) en um{ IDD = IDD_ABOUTBOX }; protected : virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 //實現(xiàn) protected : DECLARE_ME

62、SSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExcha nge(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // Cexperime ntDlg 對話框 CexperimentDlg::CexperimentDlg(CWnd* pParent /*=N

63、ULL*/ ) :CDialogEx(Cexperime ntDlg::IDD, pPare nt) ,lastDone( false ) { m_hIc on = AfxGetApp()->LoadIco n( IDR_MAINFRAME); an swer = 0.0; result = _T(""); void CexperimentDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExcha nge(pDX); DDX_Text(pDX, IDC_EDIT_ANSWER, an swer); DDV

64、_Mi nMaxDouble(pDX, an swer, 1, 5000); DDX_Text(pDX, IDC_EDIT_RESULT, result); DDV_MaxChars(pDX, result, 30); } BEGIN_MESSAGE_MAP(Cexperime ntDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDOK, & Cexperime ntDlg::O nBn ClickedOk) ON_BN_CLICKED(IDC_BUTTO

65、N_NEXT, & Cexperime ntDlg::O nClickedButt onN ext) ON_BN_CLICKED(IDC_BUTTON_STOP, & Cexperime ntDlg::O nClickedButt on Stop) ON_BN_CLICKED(IDC_BUTTON_SUBMIT, & Cexperime ntDlg::O nClickedButt on Submit) END_MESSAGE_MAP() // Cexperime ntDlg 消息處理程序 BOOL Cexperime ntDlg::O nln itDialog() { CDialogE

66、x::O nlni tDialog(); //將“關(guān)于…”菜單項添加到系統(tǒng)菜單中。 // IDM_ABOUTBOX必須在系統(tǒng)命令范圍內(nèi)。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMe nu* pSysMe nu = GetSystemMe nu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CStri ng strAboutMe nu; bNameValid = strAboutMe nu.LoadStri ng(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.lsEmpty()) { pSysMe nu->Appe ndMe nu(MF_SEPARATOR); pSysMe nu->Appe ndMe nu(MF_STRING, IDM_ABOUTBOX, strAboutMe nu); } } //設(shè)置此對話框的圖標(biāo)。當(dāng)

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(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)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!