可視化編程作業(yè) SDI應(yīng)用程序設(shè)計(jì)_第1頁
可視化編程作業(yè) SDI應(yīng)用程序設(shè)計(jì)_第2頁
可視化編程作業(yè) SDI應(yīng)用程序設(shè)計(jì)_第3頁
可視化編程作業(yè) SDI應(yīng)用程序設(shè)計(jì)_第4頁
可視化編程作業(yè) SDI應(yīng)用程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 可視化程序設(shè)計(jì)語言實(shí)驗(yàn)五SDI應(yīng)用程序設(shè)計(jì)學(xué) 號: 12020229 姓 名: 何博 指導(dǎo)教師: 李家軍 2015 年 5 月作業(yè)題目:實(shí)驗(yàn)五 SDI應(yīng)用程序設(shè)計(jì)(1)任務(wù)描述: 編寫一個(gè)SDI風(fēng)格的MFC應(yīng)用程序,要求主窗口菜單項(xiàng)中有一個(gè)菜單項(xiàng)“輸入圖形參數(shù)”,點(diǎn)擊后會彈出一個(gè)對話框,其中有標(biāo)簽“輸入圓的半徑”,后面是一個(gè)編輯框控件,下一行是標(biāo)簽“圓心的橫坐標(biāo):”,后面是一個(gè)編輯框,下一行是標(biāo)簽“圓心的縱坐標(biāo):”,后面是一個(gè)編輯框。下一行是兩個(gè)按紐,“確認(rèn)輸入”,“放棄輸入”,電擊“確認(rèn)按紐”后對話框關(guān)閉,在編輯框中輸入的數(shù)據(jù)應(yīng)該保存到文擋對象中有關(guān)的變量中,點(diǎn)擊“放棄按紐”后對話框關(guān)閉,

2、在編輯框中輸入的數(shù)據(jù)不保存到文檔對象中,如果數(shù)據(jù)發(fā)生變化,在視中指定位置上為中心處,會顯示出一個(gè)指定半徑的圓,并在圓的正下方顯示:“面積是:xxxx”的字符串。你可以在主菜單中增加選擇畫筆、畫刷樣式的菜單項(xiàng),并實(shí)現(xiàn)相應(yīng)的功能。但基本功能應(yīng)保證完成。實(shí)驗(yàn)步驟:1、 創(chuàng)建工程文件,在資源視圖中,添加對話框資源。為對話框添加類,類名DlgInput,基類CDialog。向?qū)υ捒蛑屑尤?個(gè)編輯窗控件,并分別添加變量X,Y,R。2、 為CMY_SDI類添加成員變量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、 通過對話框來改變CMY_SDIDoc的成員變量m_X,m_Y,m_R在資源視圖中,編輯菜單欄,加入NEW菜單,并加入子菜單改變圖形參數(shù),并添加事件處理向?qū)?,消息類型選擇COMMAND,類列表中選擇CMY_SDIDoc,處理函數(shù)名OnChange。在CMY_SDIDoc,cpp中加入頭文

4、件DlgInput.h。void CSDIbookDoc:OnChange()/ TODO: 在此添加命令處理程序代碼DlgInput dlg;if(dlg.DoModal()=IDOK)/調(diào)用DoModal()函數(shù)顯示該模式對話框m_R=dlg.R;m_X=dlg.X;m_Y=dlg.Y;UpdateAllViews(NULL);/刷新視圖5、 視圖的輸出在MY_SDI程序視圖類CMY_SDIView類的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); /畫刷(CBrush*)p

6、DC-SelectObject(hBrush);(CPen*)pDC-SelectObject(hPen);pDC-Ellipse(X-R,Y-R,X+R,Y+R);6、 文檔串行化通過重載CMY_SDIDoc類的Serialize函數(shù)來完成串行化。代碼如下void CSDIbookDoc:Serialize(CArchive& ar)if (ar.IsStoring()/ TODO: 在此添加存儲代碼arm_R;arm_X;arm_R;arm_X;arm_Y;程序結(jié)果:初始運(yùn)行初始參數(shù)更改參數(shù)更改后結(jié)果實(shí)驗(yàn)程序/ DlgInput.cpp : 實(shí)現(xiàn)文件/#include stdafx.h#i

7、nclude SDI book.h#include DlgInput.h#include afxdialogex.h#include DlgInput.h/ DlgInput 對話框IMPLEMENT_DYNAMIC(DlgInput, CDialog)DlgInput:DlgInput(CWnd* pParent /*=NULL*/): CDialog(DlgInput:IDD, pParent), R(50), X(200), Y(200)DlgInput:DlgInput()void DlgInput:DoDataExchange(CDataExchange* pDX)CDialog:D

8、oDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, R);DDX_Text(pDX, IDC_EDIT2, X);DDX_Text(pDX, IDC_EDIT3, Y);BEGIN_MESSAGE_MAP(DlgInput, CDialog)ON_EN_CHANGE(IDC_EDIT1, &DlgInput:OnEnChangeEdit1)ON_BN_CLICKED(IDOK, &DlgInput:OnBnClickedOk)ON_BN_CLICKED(IDCANCEL, &DlgInput:OnBnClickedCancel)END_MESSAGE_MAP

9、()/ DlgInput 消息處理程序void DlgInput:OnEnChangeEdit1()/ TODO: 如果該控件是 RICHEDIT 控件,它將不/ 發(fā)送此通知,除非重寫 CDialog:OnInitDialog()/ 函數(shù)并調(diào)用 CRichEditCtrl().SetEventMask(),/ 同時(shí)將 ENM_CHANGE 標(biāo)志“或”運(yùn)算到掩碼中。/ TODO: 在此添加控件通知處理程序代碼void DlgInput:OnBnClickedOk()/ TODO: 在此添加控件通知處理程序代碼CDialog:OnOK();void DlgInput:OnBnClickedCanc

10、el()/ TODO: 在此添加控件通知處理程序代碼CDialog:OnCancel();/ SDI bookDoc.cpp : CSDIbookDoc 類的實(shí)現(xiàn)/#include stdafx.h/ SHARED_HANDLERS 可以在實(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 #ifdef _DEBUG#define new DEBUG_NEW#en

11、dif/ CSDIbookDocIMPLEMENT_DYNCREATE(CSDIbookDoc, CDocument)BEGIN_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:On

12、NewDocument()if (!CDocument:OnNewDocument()return FALSE;/ TODO: 在此添加重新初始化代碼/ (SDI 文檔將重用該文檔)m_X=200;m_Y=200;m_R=50;return TRUE;/ CSDIbookDoc 序列化void CSDIbookDoc:Serialize(CArchive& ar)if (ar.IsStoring()/ TODO: 在此添加存儲代碼arm_R;arm_X;arm_R;arm_X;arm_Y;#ifdef SHARED_HANDLERS/ 縮略圖的支持void CSDIbookDoc:OnDraw

13、Thumbnail(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);pDefaultGUIFont-GetLogFont(&lf);lf.lfHeight = 3

14、6;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 strSearchContent;/ 從文檔數(shù)據(jù)設(shè)置搜索內(nèi)容。/ 內(nèi)容部分應(yīng)由“;”分隔/ 例如: strSearch

15、Content = _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);elseCMFCFilterChunkValueImpl *pChunk = NULL;ATLTRY(pChunk = new CMFCFilterCh

16、unkValueImpl);if (pChunk != NULL)pChunk-SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT);SetChunkValue(pChunk);#endif / SHARED_HANDLERS/ CSDIbookDoc 診斷#ifdef _DEBUGvoid CSDIbookDoc:AssertValid() constCDocument:AssertValid();void CSDIbookDoc:Dump(CDumpContext& dc) constCDocument:Dump(dc);#endif

17、/_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 類的實(shí)現(xiàn)/#include stdafx.h/ SHARED_HANDLERS 可以在實(shí)現(xiàn)預(yù)覽、縮略圖和搜索篩選器句柄的/ ATL 項(xiàng)目中進(jìn)行定義,并允許與該項(xiàng)目共享文檔代碼。#ifndef SHARED_HANDLER

18、S#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_MESSAGE_MAP(CSDIbookView, CView)/ 標(biāo)準(zhǔn)打印命令ON_COMMAND(ID_FILE_PRINT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView:OnFi

19、lePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CSDIbookView:OnFilePrintPreview)ON_WM_CONTEXTMENU()ON_WM_RBUTTONUP()END_MESSAGE_MAP()/ CSDIbookView 構(gòu)造/析構(gòu)CSDIbookView:CSDIbookView()/ TODO: 在此處添加構(gòu)造代碼CSDIbookView:CSDIbookView()BOOL CSDIbookView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: 在此處通過修改/ CREATESTRUCT

20、cs 來修改窗口類或樣式return CView:PreCreateWindow(cs);/ CSDIbookView 繪制void CSDIbookView:OnDraw(CDC* pDC)CSDIbookDoc* pDoc = GetDocument();ASSERT_VALID(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

21、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); /畫刷(CBrush*)pDC-SelectObject(hBrush);(CPen*)pDC-SelectObject(hPen);pDC-Ellipse(X-R,Y-R,X+R,Y+R);/ CSDIbookView 打印void CSDIbookView:OnFilePrintPreview()#ifndef SHARED_HANDLERS

22、AFXPrintPreview(this);#endifBOOL CSDIbookView:OnPreparePrinting(CPrintInfo* pInfo)/ 默認(rèn)準(zhǔn)備return DoPreparePrinting(pInfo);void CSDIbookView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 添加額外的打印前進(jìn)行的初始化過程void CSDIbookView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 添加打印后進(jìn)行的清理

23、過程void CSDIbookView:OnRButtonUp(UINT /* nFlags */, CPoint point)ClientToScreen(&point);OnContextMenu(this, point);void CSDIbookView:OnContextMenu(CWnd* /* pWnd */, CPoint point)#ifndef SHARED_HANDLERStheApp.GetContextMenuManager()-ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);#endif/ C

24、SDIbookView 診斷#ifdef _DEBUGvoid CSDIbookView:AssertValid() constCView:AssertValid();void CSDIbookView:Dump(CDumpContext& dc) 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 /_D

25、EBUG/ CSDIbookView 消息處理程序?qū)嶒?yàn)六綜合設(shè)計(jì)作業(yè)任務(wù)描述編寫一個(gè)電話號碼管理系統(tǒng),要求:(1) 將聯(lián)系人姓名及電話號碼存放到數(shù)據(jù)庫的表格內(nèi);(2) 可以實(shí)現(xiàn):輸入聯(lián)系人姓名,查詢得到電話號碼的功能;添加一條聯(lián)系人姓名及電話號碼記錄的功能;刪除當(dāng)前聯(lián)系人姓名及電話號碼記錄的功能;(3) 利用MFC的數(shù)據(jù)庫編程、SDI編程、對話框與控件的相關(guān)知識完成設(shè)計(jì)。1、 設(shè)計(jì)步驟(1) 構(gòu)造數(shù)據(jù)庫用Microsoft Access創(chuàng)建一個(gè)數(shù)據(jù)庫,其中包含一個(gè)數(shù)據(jù)表用來存放聯(lián)系人的姓名及電話號碼。記錄及字段名如下:(2) 創(chuàng)建ODBC數(shù)據(jù)源選擇Microsoft Access Driver (*.mdb)驅(qū)動程序,安裝數(shù)據(jù)源如下:(3) 在MFC AppWizard中選擇數(shù)據(jù)源用MFC AppWizard創(chuàng)建一個(gè)單文檔應(yīng)用程序;向?qū)崾尽澳瑪?shù)據(jù)庫嗎?”時(shí),選擇“查看數(shù)據(jù)庫使用文件支持”,這時(shí),創(chuàng)建的文檔類將全面支持文檔操作和數(shù)據(jù)庫操作;點(diǎn)擊“數(shù)據(jù)源”按鈕,選擇ODBC數(shù)據(jù)源tel,再將要使用的表tel選中。(4) 編輯實(shí)現(xiàn)各項(xià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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論