面向?qū)ο蟪绦蛟O(shè)計C++實驗報告
《面向?qū)ο蟪绦蛟O(shè)計C++實驗報告》由會員分享,可在線閱讀,更多相關(guān)《面向?qū)ο蟪绦蛟O(shè)計C++實驗報告(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、電子科技大學信息與軟件工程學院 標準實驗報告 (實驗)課程名稱:面向?qū)ο蟪绦蛟O(shè)計 C++ 電子科技大學教務(wù)處制表 學生姓名:趙天豪 學 號: 指導教師:李巧勤 實驗地點:信軟學院實驗室 實驗時間:15/12/21 一、實驗室名稱:信軟學院軟件實驗室 二、實驗項目名稱: 基于 MFC 的 C++ 桌面應(yīng)用開發(fā) 三、實驗學時: 16 學時 四、實驗原理: 本次實驗基于MFC開發(fā)C++桌面應(yīng)用程序,實現(xiàn)可視化操作。 五、 實驗?zāi)康模? 充分運用所學的C++的數(shù)據(jù)封裝、繼承與派生、多態(tài)等全部核心內(nèi)容,補充 完整一個基于 MFC 的應(yīng)用,使學生能夠基本掌握 OOA、OOD 方法;
2、熟練掌握 OOP方法;初步了解基于 Windows平臺的桌面圖形化應(yīng)用的開發(fā)過程,掌握編 程工具的使用;初步掌握建模工具的使用;基本掌握閱讀、調(diào)試程序的能力。 六、 實驗內(nèi)容: 一位小學教師 Ken 希望完成這樣的任務(wù):針對于小學生正在學習四邊形 (quadrangle) 的特性,編寫一個小軟件, 能夠隨機在屏幕上顯示矩形 (rectangle) 正方形(square)、平行 四邊形(parallelogram)、梯形(trapezoid) 和菱形 (diamond) 五種形體之一, 同時顯示該形體的特性和關(guān)鍵數(shù)據(jù) (隨機產(chǎn)生),學生 復習形體的特性, 然后根據(jù)給出的關(guān)鍵數(shù)據(jù)計算形體的面積
3、, 軟件判斷其結(jié)果的 正確性。在學習過程中,軟件記錄產(chǎn)生的每一個形體,在學生選擇不再繼續(xù)后, 將其學習的過程重放一遍,用以重溫,加深印象。 根據(jù)上述描述,需要完成: 1) 必做內(nèi)容 根據(jù)Ken老師的要求,需要至少編寫六個類: Rect // 注意:類名不要使用 Rectangle Square Parallelogram Trapezoid Diam ond List (注:這六個類必須以上述名字命名) 其中,前五個類用于描述五種形體。五種形體不用頂點坐標的表示形式,而 只是簡單地用它們的特征值表示。例如:矩形、平行四邊形用長和高表示;正方 形用邊長表示;梯形用兩條平行邊
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è)置標志名屬性name五種形體的標志名必須是 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]] ; //返回指定下標的數(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 指針。 =:兩個迭代器的復制 +。該運算符函數(shù)的原型為: Iterator operator+(int i); 其功能為:假設(shè)當前迭代器(的內(nèi)部指針)指向了第 k 個節(jié)點(從 0 開 始計數(shù)),那么 +運算符返回一個迭代器,該迭代器是在當前迭代器的基礎(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é)果編寫各種形體類的代碼;完成學習模式的編程與測試 3) 完成List類的編碼與測試; 4) 完善程序流程,實現(xiàn)復習模式; 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
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; // 標準構(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
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; | } //復制構(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
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
27、 using namespacestd; class Quadrangle { protected : public : string name; //形體的標識 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
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
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 : 標準系統(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核心組件和標準組件
#include
36、n clude
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
39、 once
#include
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
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
51、][i].cx * ratio));
vert[i].y = static_cast
52、
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; //標準初始化 //如果未使用這些功能并希望減小 //最終可執(zhí)行文件的大小,則應(yīng)移除下列 //不需要的特定初始化例程 //更改用于存儲設(shè)置的注冊表項 // TODO:應(yī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è)置此對話框的圖標。當
- 溫馨提示:
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)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險源安全管理制度
- 安全培訓資料:典型建筑火災(zāi)的防治基本原則與救援技術(shù)
- 企業(yè)雙重預(yù)防體系應(yīng)知應(yīng)會知識問答
- 8 各種煤礦安全考試試題
- 9 危險化學品經(jīng)營單位安全生產(chǎn)管理人員模擬考試題庫試卷附答案
- 加壓過濾機司機技術(shù)操作規(guī)程
- 樹脂砂混砂工藝知識總結(jié)
- XXXXX現(xiàn)場安全應(yīng)急處置預(yù)案
- 某公司消防安全檢查制度總結(jié)
- 1 煤礦安全檢查工(中級)職業(yè)技能理論知識考核試題含答案
- 4.燃氣安全生產(chǎn)企業(yè)主要負責人模擬考試題庫試卷含答案
- 工段(班組)級安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫試卷含答案-4
- 建筑起重司索信號工安全操作要點
- 實驗室計量常見的30個問問答題含解析