版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 可視化程序設(shè)計(jì)語(yǔ)言實(shí)驗(yàn)五SDI應(yīng)用程序設(shè)計(jì)學(xué) 號(hào): 12020229 姓 名: 何博 指導(dǎo)教師: 李家軍 2015 年 5 月作業(yè)題目:實(shí)驗(yàn)五 SDI應(yīng)用程序設(shè)計(jì)(1)任務(wù)描述: 編寫(xiě)一個(gè)SDI風(fēng)格的MFC應(yīng)用程序,要求主窗口菜單項(xiàng)中有一個(gè)菜單項(xiàng)“輸入圖形參數(shù)”,點(diǎn)擊后會(huì)彈出一個(gè)對(duì)話框,其中有標(biāo)簽“輸入圓的半徑”,后面是一個(gè)編輯框控件,下一行是標(biāo)簽“圓心的橫坐標(biāo):”,后面是一個(gè)編輯框,下一行是標(biāo)簽“圓心的縱坐標(biāo):”,后面是一個(gè)編輯框。下一行是兩個(gè)按紐,“確認(rèn)輸入”,“放棄輸入”,電擊“確認(rèn)按紐”后對(duì)話框關(guān)閉,在編輯框中輸入的數(shù)據(jù)應(yīng)該保存到文擋對(duì)象中有關(guān)的變量中,點(diǎn)擊“放棄按紐”后對(duì)話框關(guān)閉,
2、在編輯框中輸入的數(shù)據(jù)不保存到文檔對(duì)象中,如果數(shù)據(jù)發(fā)生變化,在視中指定位置上為中心處,會(huì)顯示出一個(gè)指定半徑的圓,并在圓的正下方顯示:“面積是:xxxx”的字符串。你可以在主菜單中增加選擇畫(huà)筆、畫(huà)刷樣式的菜單項(xiàng),并實(shí)現(xiàn)相應(yīng)的功能。但基本功能應(yīng)保證完成。實(shí)驗(yàn)步驟:1、 創(chuàng)建工程文件,在資源視圖中,添加對(duì)話框資源。為對(duì)話框添加類(lèi),類(lèi)名DlgInput,基類(lèi)CDialog。向?qū)υ捒蛑屑尤?個(gè)編輯窗控件,并分別添加變量X,Y,R。2、 為CMY_SDI類(lèi)添加成員變量m_X,m_Y,m_R。3、 文檔變量初始化CMY_SDIDoc:CMY_SDIDoc(): m_X(200), m_Y(200), m_R(
3、50)/ TODO: 在此添加一次性構(gòu)造代碼BOOL CSDIbookDoc:OnNewDocument()if (!CDocument:OnNewDocument()/ TODO: 在此添加重新初始化代碼/ (SDI 文檔將重用該文檔)m_X=200;m_Y=200;m_R=50;return TRUE;4、 通過(guò)對(duì)話框來(lái)改變CMY_SDIDoc的成員變量m_X,m_Y,m_R在資源視圖中,編輯菜單欄,加入NEW菜單,并加入子菜單改變圖形參數(shù),并添加事件處理向?qū)В㈩?lèi)型選擇COMMAND,類(lèi)列表中選擇CMY_SDIDoc,處理函數(shù)名OnChange。在CMY_SDIDoc,cpp中加入頭文
4、件DlgInput.h。void CSDIbookDoc:OnChange()/ TODO: 在此添加命令處理程序代碼DlgInput dlg;if(dlg.DoModal()=IDOK)/調(diào)用DoModal()函數(shù)顯示該模式對(duì)話框m_R=dlg.R;m_X=dlg.X;m_Y=dlg.Y;UpdateAllViews(NULL);/刷新視圖5、 視圖的輸出在MY_SDI程序視圖類(lèi)CMY_SDIView類(lèi)的OnDraw成員函數(shù)中,添加如下代碼void CSDIbookView:OnDraw(CDC* pDC)CSDIbookDoc* pDoc = GetDocument();ASSERT_VA
5、LID(pDoc);if (!pDoc)return;/ TODO: 在此處為本機(jī)數(shù)據(jù)添加繪制代碼CRect rectClient;GetClientRect(rectClient);CSize sizeClient=rectClient.Size();int R=pDoc->m_R;int X=pDoc->m_X;int Y=pDoc->m_Y;HBRUSH hBrush;HPEN hPen;hPen=CreatePen(PS_SOLID,2,RGB(0,255,0); hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0); /
6、畫(huà)刷(CBrush*)pDC->SelectObject(hBrush);(CPen*)pDC->SelectObject(hPen);pDC->Ellipse(X-R,Y-R,X+R,Y+R);6、 文檔串行化通過(guò)重載CMY_SDIDoc類(lèi)的Serialize函數(shù)來(lái)完成串行化。代碼如下void CSDIbookDoc:Serialize(CArchive& ar)if (ar.IsStoring()/ TODO: 在此添加存儲(chǔ)代碼ar<<m_R;ar<<m_X;ar<<m_Y;else/ TODO: 在此添加加載代碼ar>&
7、gt;m_R;ar>>m_X;ar>>m_Y;程序結(jié)果:初始運(yùn)行初始參數(shù)更改參數(shù)更改后結(jié)果實(shí)驗(yàn)程序/ DlgInput.cpp : 實(shí)現(xiàn)文件/#include "stdafx.h"#include "SDI book.h"#include "DlgInput.h"#include "afxdialogex.h"#include "DlgInput.h"/ DlgInput 對(duì)話框IMPLEMENT_DYNAMIC(DlgInput, CDialog)DlgInput:Dl
8、gInput(CWnd* pParent /*=NULL*/): CDialog(DlgInput:IDD, pParent), R(50), X(200), Y(200)DlgInput:DlgInput()void DlgInput:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, R);DDX_Text(pDX, IDC_EDIT2, X);DDX_Text(pDX, IDC_EDIT3, Y);BEGIN_MESSAGE_MAP(DlgInput, CDialog
9、)ON_EN_CHANGE(IDC_EDIT1, &DlgInput:OnEnChangeEdit1)ON_BN_CLICKED(IDOK, &DlgInput:OnBnClickedOk)ON_BN_CLICKED(IDCANCEL, &DlgInput:OnBnClickedCancel)END_MESSAGE_MAP()/ DlgInput 消息處理程序void DlgInput:OnEnChangeEdit1()/ TODO: 如果該控件是 RICHEDIT 控件,它將不/ 發(fā)送此通知,除非重寫(xiě) CDialog:OnInitDialog()/ 函數(shù)并調(diào)用 CRi
10、chEditCtrl().SetEventMask(),/ 同時(shí)將 ENM_CHANGE 標(biāo)志“或”運(yùn)算到掩碼中。/ TODO: 在此添加控件通知處理程序代碼void DlgInput:OnBnClickedOk()/ TODO: 在此添加控件通知處理程序代碼CDialog:OnOK();void DlgInput:OnBnClickedCancel()/ TODO: 在此添加控件通知處理程序代碼CDialog:OnCancel();/ SDI bookDoc.cpp : CSDIbookDoc 類(lèi)的實(shí)現(xiàn)/#include "stdafx.h"/ SHARED_HANDLE
11、RS 可以在實(shí)現(xiàn)預(yù)覽、縮略圖和搜索篩選器句柄的/ ATL 項(xiàng)目中進(jìn)行定義,并允許與該項(xiàng)目共享文檔代碼。#ifndef SHARED_HANDLERS#include "SDI book.h"#include "DlgInput.h"#endif#include "SDI bookDoc.h"#include <propkey.h>#ifdef _DEBUG#define new DEBUG_NEW#endif/ CSDIbookDocIMPLEMENT_DYNCREATE(CSDIbookDoc, CDocument)BE
12、GIN_MESSAGE_MAP(CSDIbookDoc, CDocument)ON_COMMAND(ID_NEW_32771, &CSDIbookDoc:OnChange)END_MESSAGE_MAP()/ CSDIbookDoc 構(gòu)造/析構(gòu)CSDIbookDoc:CSDIbookDoc(): m_X(200), m_Y(200), m_R(50)/ TODO: 在此添加一次性構(gòu)造代碼CSDIbookDoc:CSDIbookDoc()BOOL CSDIbookDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/
13、 TODO: 在此添加重新初始化代碼/ (SDI 文檔將重用該文檔)m_X=200;m_Y=200;m_R=50;return TRUE;/ CSDIbookDoc 序列化void CSDIbookDoc:Serialize(CArchive& ar)if (ar.IsStoring()/ TODO: 在此添加存儲(chǔ)代碼ar<<m_R;ar<<m_X;ar<<m_Y;else/ TODO: 在此添加加載代碼ar>>m_R;ar>>m_X;ar>>m_Y;#ifdef SHARED_HANDLERS/ 縮略圖的支持vo
14、id CSDIbookDoc:OnDrawThumbnail(CDC& dc, LPRECT lprcBounds)/ 修改此代碼以繪制文檔數(shù)據(jù)dc.FillSolidRect(lprcBounds, RGB(255, 255, 255);CString strText = _T("TODO: implement thumbnail drawing here");LOGFONT lf;CFont* pDefaultGUIFont = CFont:FromHandle(HFONT) GetStockObject(DEFAULT_GUI_FONT);pDefaultGU
15、IFont->GetLogFont(&lf);lf.lfHeight = 36;CFont fontDraw;fontDraw.CreateFontIndirect(&lf);CFont* pOldFont = dc.SelectObject(&fontDraw);dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK);dc.SelectObject(pOldFont);/ 搜索處理程序的支持void CSDIbookDoc:InitializeSearchContent()CString strSea
16、rchContent;/ 從文檔數(shù)據(jù)設(shè)置搜索內(nèi)容。/ 內(nèi)容部分應(yīng)由“;”分隔/ 例如: strSearchContent = _T("point;rectangle;circle;ole object;");SetSearchContent(strSearchContent);void CSDIbookDoc:SetSearchContent(const CString& value)if (value.IsEmpty()RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid);elseCMF
17、CFilterChunkValueImpl *pChunk = NULL;ATLTRY(pChunk = new CMFCFilterChunkValueImpl);if (pChunk != NULL)pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT);SetChunkValue(pChunk);#endif / SHARED_HANDLERS/ CSDIbookDoc 診斷#ifdef _DEBUGvoid CSDIbookDoc:AssertValid() constCDocument:AssertValid(
18、);void CSDIbookDoc:Dump(CDumpContext& dc) constCDocument:Dump(dc);#endif /_DEBUG/ CSDIbookDoc 命令void CSDIbookDoc:OnChange()/ TODO: 在此添加命令處理程序代碼DlgInput dlg;if(dlg.DoModal()=IDOK)m_R=dlg.R;m_X=dlg.X;m_Y=dlg.Y;UpdateAllViews(NULL);/ SDI bookView.cpp : CSDIbookView 類(lèi)的實(shí)現(xiàn)/#include "stdafx.h"
19、;/ SHARED_HANDLERS 可以在實(shí)現(xiàn)預(yù)覽、縮略圖和搜索篩選器句柄的/ ATL 項(xiàng)目中進(jìn)行定義,并允許與該項(xiàng)目共享文檔代碼。#ifndef SHARED_HANDLERS#include "SDI book.h"#endif#include "SDI bookDoc.h"#include "SDI bookView.h"#ifdef _DEBUG#define new DEBUG_NEW#endif/ CSDIbookViewIMPLEMENT_DYNCREATE(CSDIbookView, CView)BEGIN_MESS
20、AGE_MAP(CSDIbookView, CView)/ 標(biāo)準(zhǔn)打印命令ON_COMMAND(ID_FILE_PRINT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CSDIbookView:OnFilePrintPreview)ON_WM_CONTEXTMENU()ON_WM_RBUTTONUP()END_MESSAGE_MAP()/ CSDIbookView 構(gòu)造/析構(gòu)CSDIbookView:CS
21、DIbookView()/ TODO: 在此處添加構(gòu)造代碼CSDIbookView:CSDIbookView()BOOL CSDIbookView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: 在此處通過(guò)修改/ CREATESTRUCT cs 來(lái)修改窗口類(lèi)或樣式return CView:PreCreateWindow(cs);/ CSDIbookView 繪制void CSDIbookView:OnDraw(CDC* pDC)CSDIbookDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)
22、return;/ TODO: 在此處為本機(jī)數(shù)據(jù)添加繪制代碼CRect rectClient;GetClientRect(rectClient);CSize sizeClient=rectClient.Size();int R=pDoc->m_R;int X=pDoc->m_X;int Y=pDoc->m_Y;HBRUSH hBrush;HPEN hPen;hPen=CreatePen(PS_SOLID,2,RGB(0,255,0); hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0); /畫(huà)刷(CBrush*)pDC->S
23、electObject(hBrush);(CPen*)pDC->SelectObject(hPen);pDC->Ellipse(X-R,Y-R,X+R,Y+R);/ CSDIbookView 打印void CSDIbookView:OnFilePrintPreview()#ifndef SHARED_HANDLERSAFXPrintPreview(this);#endifBOOL CSDIbookView:OnPreparePrinting(CPrintInfo* pInfo)/ 默認(rèn)準(zhǔn)備return DoPreparePrinting(pInfo);void CSDIbookVi
24、ew:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 添加額外的打印前進(jìn)行的初始化過(guò)程void CSDIbookView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 添加打印后進(jìn)行的清理過(guò)程void CSDIbookView:OnRButtonUp(UINT /* nFlags */, CPoint point)ClientToScreen(&point);OnContextMenu(this, point);void CSDIbookView
25、:OnContextMenu(CWnd* /* pWnd */, CPoint point)#ifndef SHARED_HANDLERStheApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);#endif/ CSDIbookView 診斷#ifdef _DEBUGvoid CSDIbookView:AssertValid() constCView:AssertValid();void CSDIbookView:Dump(CDumpContext& dc
26、) constCView:Dump(dc);CSDIbookDoc* CSDIbookView:GetDocument() const / 非調(diào)試版本是內(nèi)聯(lián)的ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSDIbookDoc);return (CSDIbookDoc*)m_pDocument;#endif /_DEBUG/ CSDIbookView 消息處理程序?qū)嶒?yàn)六綜合設(shè)計(jì)作業(yè)任務(wù)描述編寫(xiě)一個(gè)電話號(hào)碼管理系統(tǒng),要求:(1) 將聯(lián)系人姓名及電話號(hào)碼存放到數(shù)據(jù)庫(kù)的表格內(nèi);(2) 可以實(shí)現(xiàn):輸入聯(lián)系人姓名,查詢(xún)得到電話號(hào)碼的功能;添加一條聯(lián)系人姓名及
27、電話號(hào)碼記錄的功能;刪除當(dāng)前聯(lián)系人姓名及電話號(hào)碼記錄的功能;(3) 利用MFC的數(shù)據(jù)庫(kù)編程、SDI編程、對(duì)話框與控件的相關(guān)知識(shí)完成設(shè)計(jì)。1、 設(shè)計(jì)步驟(1) 構(gòu)造數(shù)據(jù)庫(kù)用Microsoft Access創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),其中包含一個(gè)數(shù)據(jù)表用來(lái)存放聯(lián)系人的姓名及電話號(hào)碼。記錄及字段名如下:(2) 創(chuàng)建ODBC數(shù)據(jù)源選擇Microsoft Access Driver (*.mdb)驅(qū)動(dòng)程序,安裝數(shù)據(jù)源如下:(3) 在MFC AppWizard中選擇數(shù)據(jù)源用MFC AppWizard創(chuàng)建一個(gè)單文檔應(yīng)用程序;向?qū)崾尽澳瑪?shù)據(jù)庫(kù)嗎?”時(shí),選擇“查看數(shù)據(jù)庫(kù)使用文件支持”,這時(shí),創(chuàng)建的文檔類(lèi)將全面支持文檔操作和數(shù)據(jù)庫(kù)操作;點(diǎn)擊“數(shù)據(jù)源”按鈕,選
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023七年級(jí)英語(yǔ)上冊(cè) Module 2 My family Unit 1 Is this your mum教學(xué)實(shí)錄 (新版)外研版
- 設(shè)備運(yùn)輸承運(yùn)合同
- 九年級(jí)體育 第8周 第15次課教學(xué)實(shí)錄
- 2024年度房地產(chǎn)項(xiàng)目質(zhì)量監(jiān)控與驗(yàn)收合同2篇
- 2024年度虛擬現(xiàn)實(shí)產(chǎn)品研發(fā)及銷(xiāo)售合同2篇
- 個(gè)人店鋪門(mén)面租賃合同
- 2024年度上門(mén)女婿婚姻解除程序全程指導(dǎo)服務(wù)合同2篇
- 2024年度品牌代理合同:商場(chǎng)專(zhuān)柜品牌代理與租賃協(xié)議2篇
- 2024年中國(guó)線路板存放架市場(chǎng)調(diào)查研究報(bào)告
- 2024年度水電材料購(gòu)銷(xiāo)合同范例2篇
- 不穩(wěn)定型心絞痛臨床路徑表單
- 蔬菜大棚溫度控制器設(shè)計(jì)(共20頁(yè))
- 化肥的發(fā)展史
- 水運(yùn)工程施工組織設(shè)計(jì)
- 斑蝥的藥用價(jià)值與養(yǎng)殖
- 三維激光掃描技術(shù)與應(yīng)用實(shí)例(課堂PPT)
- 消防水池施工方案
- 小學(xué)美術(shù)《多變的紙拉花》課件ppt課件
- 《數(shù)據(jù)結(jié)構(gòu)》課程標(biāo)準(zhǔn)
- 譯林版五年級(jí)上冊(cè)英語(yǔ)五上《朗文閱讀》U1-2練習(xí)題
- 鍛造課設(shè)右轉(zhuǎn)向節(jié)臂說(shuō)明書(shū)
評(píng)論
0/150
提交評(píng)論