VC++程序設計考試試題作業(yè)_第1頁
VC++程序設計考試試題作業(yè)_第2頁
VC++程序設計考試試題作業(yè)_第3頁
VC++程序設計考試試題作業(yè)_第4頁
VC++程序設計考試試題作業(yè)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

四、使用MFC編寫帶菜單和工具欄的文本框編輯程序,支持復制、剪切和粘貼

功能,以及文件打開、保存功能。(20分)

資源列表:

編程資源資源類別標題ID關聯(lián)變量類型關聯(lián)變量名稱

MENU菜單IDR_MENU1MENU

DIALOG對話框NotePadIDD_NOTEPAD_DIALOGCNotePadDlg

DIALOG

菜單-打開子菜單打開ID_FILE_OPENCFileDialogfiledig

菜單-保存子菜單保存ID_FILE_SAVECFilefile

菜單-另存子菜單另存為ID_FILE_SAVE_CFileDialogfiledig

為ASCFilefile

菜單-退出子菜單退出ID_FILE_EXITEndDialogEndDialog

菜單-復制子菜單復制ID_EDIT_COPYCEdit*pEdit

菜單-粘貼子菜單粘貼ID_EDIT_PASTECEdit*pEdit

菜單-剪切子菜單剪切ID_EDIT_CUTCEdit*pEdit

菜單-刪除子菜單刪除ID_EDIT_CLEARCEdit*pEdit

菜單-撤銷子菜單撤銷ID_EDIT_UNDOCEdit*pEdit

程序運行效果:

主界面:

?NotePad—□X

文件(F)編輯(E)的(。)幫助(H)

這是文本編輯器!1

V

打開、保存、另存為效果:

?NotePad

文件(F)編輯(E)格式(O)幫助(H)

?NotePad

文件(F)購(E)鵬(0)幫助(H)

這是文本編輯器

復制、粘貼、,剪切效果:

?NotePad—□X

文件(F)否(E)格式(0)幫助(H)

1^^撤銷(UCtrl+Z)------------------------------------------------------------------

里切(X)Ctrl+X

復制(C)Ctrl+C

粘貼(P)Ctrl+V

刪除(D)DEL

遺Ctrl+A

日期(D)F5

除此之外還實現(xiàn)了全選功能、刪除功能,可以全選文本內容和刪除內容,還實現(xiàn)了撤銷等功

能。

程序主要代碼:

〃重載OnCloseO實現(xiàn)X的退出功能

voidCNotePadDlg::OnClose()

{

OnFileExitO;〃這里調用菜單下的退出函數(shù)

//EndDialog(IDCANCEL);

//CDialog::OnClose();

)

〃實現(xiàn)菜單欄目下復制的功能

voidCNotePadDlg::OnEditCopy()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Copy();

)

〃實現(xiàn)菜單欄目下刪除的功能

voidCNotePadDlg::OnEditClear()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Clear();

)

〃實現(xiàn)菜單欄目下撤銷的功能

voidCNotePadDlg::OnEditUndo()

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Undo();

}

〃實現(xiàn)菜單欄目下剪切的功能

voidCNotePadDlg::OnEditCut()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Cut();

)

〃實現(xiàn)菜單欄目下全選的功能

voidCNotePadDlg::OnEditSelectAll()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->SetSel(0,-1);

)

〃實現(xiàn)菜單欄目下粘貼的功能

voidCNotePadDlg::OnEditPaste()

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Paste();

)

〃實現(xiàn)菜單欄目下時間的功能

voidCNotePadDlg::OnEditDate()

(

CTimet=CTime::GetCurrentTime();

CStringstr二t.Format(,Z%Y年%8月%d日%H:%M:%S〃);

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->ReplaceSel(str,TRUE);

}

〃實現(xiàn)移動窗口大小的功能;記得修改窗口屬性當中的值

voidCNotePadDlg::OnSize(UINTnType,intex,intcy)

(

CDialog::0nSize(nType,ex,cy);

CWnd*pEdit=GetDlgItem(IDC_TEXT);

if(pEdit)

pEdit->MoveWindow(0,0,ex,cy);

)

〃實現(xiàn)菜單下退出的功能

voidCNotePadDlg::OnFileExit()

(

if(Prompt()=0)〃如果等于0,代表選擇了取消,那么不關閉對話框

(

〃不做任何處理

}

else〃如果不等于0那么代表選擇了否直接關閉對話框

(

EndDialog(IDCANCEL);

}

)

〃實現(xiàn)菜單欄目下打開的功能

voidCNotePadDlg::0nFile0pen()

〃過濾器

LPCTSTRszFilter="文本文件(*.txt)|*.txt|所有文件

〃打開一個文件選擇對話框TRUE代表打開文件

CFileDialogfiledlg(TRUE,"txt","11",OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST,

szFilter);

if(IDCANCEL==filedig.DoModalO)

return;

〃打開文件并顯示到IDC_TEXT當中

OpenFile(filedig.GetPathName(),filedig.GetFileName());

)

〃實現(xiàn)菜單欄目下保存的功能

voidCNotePadDlg::OnFileSave()

(

〃如果要保存的文件是第一次保存,那么就轉換到另存為

if(m_szCurrentFile.GetLength0--0)

(

OnFileSaveAs();

return;

}

CFilefile;

if(file.Open(m_szCurrentFile,CFile::modeWrite|CFile::modeCreate)==0)

(

OnFileSaveAs();

return;

CStringszText;

GetDlgltemText(IDC_TEXT,szText);〃得到Edit控件里面的內容

file.Write(szText,szText.GetLength());〃寫入file對象

file.Close();〃關閉對象

CEdit*pEdit=(CEdit*)GetDlgltem(IDC_TEXT);

pEdit->SetModify(FALSE);〃FALSE表示文本沒有改變;這里直接保存,點擊退出的時候不要再提示

改變

)

〃實現(xiàn)菜單欄目下另存為的功能

voidCNotePadDlg::OnFileSaveAs0

(

LPCTSTRszFilter=〃文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||〃;

〃初始化文件對話框FALSE代表保存文件

CFileDialogfiledlg(FALSE,〃11〃,0FN_0VERWRITEPROMPT|OFN_PATHMUSTEXIST|

OFN_FILEMUSTEXIST|OFN_CREATEPROMPT,szFilter);

〃打開文件對話框

if(IDCANCEL==filedig.DoModal())

return;

〃得到文件對話框中選擇文件的路徑名

CStringszFile=filedig.GetPathName0;

〃聲明一個CFile對象

CFilefile;

〃打開文件

if(file.Open(szFile,CFile::modeWrite|CFile::modeCreate)==0)

(

MessageBox(filedig.GetFileName()+〃保存文件時失??!〃,NULL,MB_ICONEXCLAMATION);

return;

}

〃當前文件為該文件,保存下來

m_szCurrentFile二szFile;

CStringstrText;

〃得到IDCJTEXT控件里面的內容

GetDlgltemText(IDC_TEXT,strText);

〃文件寫入,第一個參數(shù)是要寫入的內容,第二個是寫入內容的長度

file.Write(strText,strText.GetLength0);

file.Flush();〃上面的解釋跟清除了,我看這個就明白了,相信你也一樣

file.Close。;〃關閉文件,刪除對象!

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->SetModify(FALSE);

SetTitle();

)

〃處理文件修改的情況

BOOLCNotePadDlg::Prompt()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

if(pEdit->GetModify())〃如果文件被修改

(

CStringstr;

if(m_szCurrentFile.IsEmpty())〃如果當前的文件為空,則str二無標題

str二〃無標題〃;

else

str=m_szCurrentFile;〃否則就是現(xiàn)在打開文件的Path

intnRet二MessageBox(str+〃\r\n已經被修改,是否保存?〃,〃提示消息〃,

MB_YESNOCANCEL|MB_ICONEXCLAMATION);

if(IDCANCEL=nRet)/.口果選擇了取消,那么不做任何處理,也不關閉對話框(在退出函數(shù)

中做處理)

returnFALSE;

if(IDNO==nRet)〃如果選擇了否直接關閉對話框(在退出函數(shù)當中做處理)

returnTRUE;

else〃如果選擇了是保存文件

OnFileSave();

}

returnTRUE;

)

〃設置上面的標題

voidCNotePadDlg::SetTitle0

(

CStringstr;

if(m_szCurrentFile.IsEmpty())

str=〃無標題";

else

str=m_szCurrentFile;

inti=str.ReverseFind(,W);〃反向找到\\

if(i>0)

str=str.Mid(i+1);〃從\\位置處截出str后面的內容

SetWindowText(str);

五、使用API編寫繪圖程序如下圖。(20分)

要求:在“形狀”列表框中選擇要繪制圖形,在“筆顏色”下拉列表框選擇畫筆的顏色,

在“刷子顏色”下拉列表框中選擇畫刷的顏色。在“線型”組合框選擇畫筆的線型,在“填

充類型”中選擇畫刷填充類型。單擊“繪圖”按鈕按照前面的選項繪制圖形,單擊“退出”

按鈕退出程序。

資源列表:

關聯(lián)變量

資源名稱資源類別標題ID號消息響應函數(shù)

變量類型變量名稱

afx_msgvoid

繪圖形狀列表框控件形狀IDC_LIST1CStringm_DrawType;

OnSelchangeLis11();

afx_msgvoid

筆顏色下拉框控件筆顏色IDC_C0MB01CStringmoutColoronRadioBtnGrouplClickedO;

刷子顏afx_msgvoid

刷子顏色下拉框控件IDC_C0MB02CStringm_inColor

色onRadioBtnGroup2Clicked();

RadioIDM_LINE_STYL

實線

buttonE_S0LID

RadioIDM_LINE_STYL

虛線

線型buttonE_DASHafx_msgvoid

Intm_penType

RadioIDM_LINE_STYLonRadioBtnGroupIClickedO;

點線

buttonE_D0T

RadioIDM_LINE_STYL

點劃線

buttonE_DASHD0T

Radio實體刷

PS_S0LID

button子

Radio

交叉線HS_CROSS

buttonafx_msgvoid

填充類型Intm_brushType

Radio主對角onRadioBtnGroup2C1ieked();

HS_FDIAGONAL

button線型

Radio附對角

HS_BDIAGONAL

button線型

程序運行效果:(以黑色為背景)

繪制線:

?SOM?SolidBrush

ODashOCross

UDotOFDiagonal

|繪圖|取消

°DashDotOBDiagonal

繪制圓:

繪制矩形:

4參數(shù)繪圖X

⑥Sold@SoMBrush

ODashOCross

ODot

OFDiagonal

ODashDot繪圖取消

OBDiagonal

繪制圓角矩形

4參駿圖x

?Solid@SolidBrush

ODashOCross

ODot

OFDiagonal

繪圖|取消

ODashDot

OBDiagonal□

程序代碼:

變量定義部分:

protected:

EICONm_hlcon;

CBrushmjmish;〃用于自定義顏色

CDCm_memDC;〃屏幕DC兼容的內存DC

CBitmapm_Bnip;〃位圖

CWnd*m_pDrawWnd;〃用于保存靜態(tài)文本框的對象指針

//初始化和雙緩沖相關的數(shù)據(jù)

voidInitialDBB();

〃雙緩沖內存上繪圖

voidDrawOnMem();

〃在靜態(tài)區(qū)域畫圖

voidDrawOnStaticArea();

〃更改顏色的消息響應函數(shù)

afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);

//生成的消息映射函數(shù)

virtualBOOLOnlnitDialogO;

afx_msgvoidOnSysCommand(UINTnID,LPARAM1Param);

afx_msgvoidOnPaint0;

afx_msgHCURSOROnQueryDraglconO;

DECLARE_MESSAGE_MAP()

public:

//控制筆顏色的下拉框列表變量

CComboBoxm_Comboboxl;

//控制刷子曲色的下拉框列表變量

CComboBoxm_Combobox2;

//形狀列表

CListBoxm_ShapeList;

//畫筆類感即輪廓(索引)

intm_penType;

//畫前類型,即填充顏色類型

intmbrushType;

afx_msgvoidOnBnClickedOk();

afx_msgvoidOnBnClickedCancel();

afx_msgvoidonRadioBtnGrouplClicked0;

afx_msgvoidonRadioBtnGroup2Clicked0;

//繪制的圖形類型

CStringmDrawType;

afx_msgvoidOnSelchangeListl();

afx_msgvoidOnCbnSe1changeCombo1();

afx_msgvoidOnCbnSe1changeCombo2();

//bool變量,用于控制繪圖按鈕點擊后繪圖

boolisDraw;

//外輪廓顏色

CStringmoutColor;

//內填充凝色

CStringm_inColor;

COLORREFoutColor;

COLORREFinColor;

CPenmyPen;

CBrushmyBrush;

其他主要代碼:

〃雙緩沖內存上繪圖

voidCfiveDlg::DrawOnMem()

(

CRectrect;

〃畫圖部分-------------------------------------------------------------

if(isDraw二二true)

(

CBrush*pOldBrush二m_memDC.SelectObject(&myBrush);

〃設置繪制圖形

CRectdrawRect;

drawRect.left=rect.left+30;

drawRect.right=rect.right-30;

drawRect.top=rect.top+30;

drawRect.bottom=rect.bottom-30;

if(m_DrawType=="Circle")

(

m_inemDC.Ellipse(drawRect);〃畫橢圓

}

if(m_DrawType=="Rectangle")

(

m_inemDC.Rectangle(drawRect);〃畫矩形

}

if(m_DrawType==〃Line〃)〃畫線

(

m_inemDC.MoveTo(rect.right-40,rect.bottom-40);

m_memDC.LineTo(rect.left+40,rect.top+40);

}

if(m_DrawType==,/RoundRectangle,/)〃畫圓角矩形

(

CRectr;

r=CRect(CPoint(40,40),CSize(150,12));

m_memDC.RoundRect(drawRect,CPoint(50,50));//CPoint(50,50))表示圓角的幅度

}

m_memDC.SelectObject(pOldPen);

m_memDC.SelectObject(pOldBrush);

}

)

〃在靜態(tài)區(qū)域畫圖

voidCfiveDlg::DrawOnStaticArea()

(

CWnd*pWnd=GetDlgItem(IDC_STATIC);〃獲得靜態(tài)文本框的窗口對象

CRectrect;

pWnd->GetClientRect(&rect);

CDC*pDC=pWnd->GetDC();//

DrawOnMem();

//一次性的將內存設備環(huán)境上繪制完畢的圖形〃貼〃到屏幕上

pDC->BitBlt(0,0,rect.Width0,rect.Height(),&m_memDC,0,0,SRCCOPY);

pWnd->ReleaseDC(pDC);//

)

〃繪圖按鈕

voidCfiveDlg::0nBnClicked0k()

//TODO:在此添加控件通知處理程序代碼

isDraw=true;〃點擊繪制按鈕后,才繪制圖形

OnSelchangeListl0;

OnCbnSe1changeCombo1();

0nCbnSelchangeCombo2();

onRadioBtnGrouplClicked();

onRadioBtnGroup2Clicked();

Invalidate();〃重繪窗口

ACDialogEx::0n0K();*/

)

〃取消按鈕

voidCfiveDlg::OnBnClickedCancel()

(

//TODO:在此添加控件通知處理程序代碼

isDraw=false;

CDialogEx::0nCancel();

)

//radio畫筆樣式切換選擇事件

voidCfiveDlg::onRadioBtnGroup1C1ieked0

(

//TODO:在此添加控件通知處理程序代碼

UpdateData(true);〃更新界面值到變量中,必須有這句話,值才變化

switch(m_penType)

(

case0:

myPen.CreatePen(PS_SOLID,3,outColor);

break;

case1:

myPen.CreatePen(PS_DASH,3,outColor);

break;

case2:

myPen.CreatePen(PS_DOT,3,outColor);

break;

case3:

myPen.CreatePen(PS_DASHDOT,3,outColor);

break;

default:

break;

}

)

//radio刷子樣式切換選擇事件

voidCfiveDlg::onRadioBtnGroup2C1ieked0

(

//TODO:在此添加控件通知處理程序代碼

UpdateData(true);〃更新界面值到變量中,必須有這句話,值才變化

switch(mbrushType)

{

case0:

myBrush.CreateSolidBrush(inColor);

break;

case1:

myBrush.CreateHatchBrush(HS_CROSS,inColor);

break;

case2:

myBrush.CreateHatchBrush(HS_FDIAGONAL,inColor);

break;

case3:

myBrush.CreateHatchBrush(HS_BDIAGONAL,inColor);

break;

)

)

〃listBox切換選擇事件

voidCfiveDlg::OnSelchangeListl()

(

//TODO:在此添加控件通知處理程序代碼

CStringstrText;

intnCurSel;

nCurSel=m_ShapeList.GetCurSel();//獲取當前選中列表項

m_ShapeList.GetText(nCurSel,strText);//獲取選中列表項的字符串

m_DrawType=strText;〃賦給變量

)

//combobox1畫筆顏色切換選擇事件

voidCfiveDlg::OnCbnSelchangeCombol()

(

//TODO:在此添加控件通知處理程序代碼

CStringstrText;

intnCurSel;

nCurSel=m_Comboboxl.GetCurSel();//獲取當前選中列表項

m_Comboboxl.GetLBText(nCurSel,strText);//獲取選中列表項的字符串

moutColor=strText;

if(m_outColor二二〃Red〃)

outColor=RGB(255,0,0);

elseif(m_outColor==〃Blue〃)

outColor=RGB(0,0,255);

elseif(m_outColor==〃Green〃)

outColor=RGB(0,255,0);

else

outColor=RGB(0,0,0);

)

//combobox2刷子顏色切換選擇事件

voidCfiveDlg::0nCbnSelchangeCombo2()

(

//TODO:在此添加控件通知處理程序代碼

CStringstrText;

intnCurSel;

nCurSel=m_Combobox2.GetCurSel();//獲取當前選中列表項

m_Combobox2.GetLBText(nCurSel,strText);//獲取選中列表項的字符串

m_inColor=strText;

if(m_inColor==〃Red〃)

inColor=RGB(255,0,0);

elseif(m_inColor二二〃Blue〃)

inColor=RGB(0,0,255);

elseif(m_inColor==〃Green〃)

inColor=RGB(0,255,0);

else

inColor=RGB(0,0,0);

)

六、編寫MFC單因子y=f(x)測試數(shù)據(jù)處理程序,要求有數(shù)據(jù)輸入、保存、讀入和繪圖功能,

使用菜單和加速鍵特性,坐標軸依據(jù)數(shù)據(jù)分布而確定。(20分)

典型繪圖效果如下:

注意:所有編程題要求為1)代碼要有注釋,便于理解,規(guī)格要正確。2)要列出程序界面

和運行效果。3)列表顯示所有編程資源,包括名稱,標題,ID號,資源類別,關聯(lián)變量類

型,關聯(lián)變量名稱,消息響應函數(shù)名稱。4)程序界面和運行效果可打印,其它全部手寫,

打印者扣分。

資源列表:

資源關聯(lián)變量

資源類名標題ID號消息響應函數(shù)

類別變量類型變量名稱

CFileDialogdig

CTestData子菜打開txtID_FILE_

CStringfilePathNamevoidCTestDataDrawView::OnFi1eOpen()

DrawView單數(shù)據(jù)OPEN

CStringfileName

CFileDialogdig

CTestData子菜另存為ID_FILE_

CStringfilePathNamevoidCTestDataDrawView::OnFileSaveAs()

DrawView單txtSAVE_AS

CStringfileName

CTestData子菜ID_MENUI

添加數(shù)據(jù)AddTestDatadigvoidCTestDataDrawView::OAddTestData()

DrawView單TEM32771

CTestData子菜ID_MENUI

清除數(shù)據(jù)//voidCTestDataDrawView::OnDataClear()

DrawView單TEM32772

CTestData子菜頁面范圍ID_MENUI

ViewSetdigvoidCTestDataDrawView::OnViewSet()

DrawView單設置TEM32773

CTestData子菜數(shù)據(jù)樣式ID_MENUI

StyleSetdigvoidCTestDataDrawView::OnStyleSet()

DrawView單設置TEM32774

AddTestDa對話添加測試IDD_DIALdoubleInPutX對話框“添加”按鈕對應的消息響應函數(shù):

ta框數(shù)據(jù)OGIdoubleInPutYvoidAddTestData::0nAdd()

doublev_xmin,v_xmax

對話頁面范圍IDD_DIAL對話框“確定”按鈕對應的消息響應函數(shù):

ViewSet

框設置0G2doublev_ymin,v_ymaxvoidViewSet::0n0K()

COLORREFSetColor對話框“點顏色”按鈕對應消息響應函數(shù)

對話數(shù)據(jù)顏色IDD_DIALvoidStyleSet::OnDataColor()

StyleSetCOLORREFs_color

框設置0G3對話框“確定”按鈕對應的消息響應函數(shù):

IntS_rvoidStyleSet::0n0K()

程序運行效果:

______________________________________圖:程序運行界面

國TestDataDraw-[TestDal]

因文件(日書(E)查看(V)窗C1(W)幫助(H[數(shù)—制設置

口尸IH「電色|昌曾

K

A

圖:第一步頁面范圍設置

國TestDataDraw-[TestDal]

囪文件(F)輻(E)查看(V)窗口(Wj幫助(H)數(shù)一制設置

圖:第二步添加測試數(shù)據(jù)

笏TestDataDraw-[TestDal]

因文件(F)編本(E)查看(V)窗口(77)幫助(H)數(shù)3■制設置

Da;BM電信|昌智

圖:添加題目中的5個數(shù)據(jù)效果圖

圖:設置點數(shù)據(jù)的半徑和顏色

文件(F)編輯(E)格式(O)幫助(H)

7800^200^1800^200^

5

1891.251888.97

1884.71873

1883.581897.98

1895.111906.45

1906.171912.89

圖:將點數(shù)據(jù)保存為txt格式文件

圖:清除數(shù)據(jù)

9TestDataDraw-[TestDal]|dI!回||次

中文件(F)『(E)查看(V)^窗口(W)幫助(H)數(shù)觸制設置口網八

口蘇口函1昌2

Y

A

圖:打開保存的txt文件

源代碼:

voidCTestDataDrawView::OAddTestData()

//TODO:Addyourcommandhandlercodehere

AddTestDatadig;

if(IDOK==dig.DoModal())

if(dig.InPutX>pro->xMin&&dig.InPutX<pro->xMax&&dig.InPutY>pro->yMin&&

dig.InPutY<pro->yMax)

(

pro->xArray.push_back(dlg.InPutX);

pro->yArray.push_back(dlg.InPutY);

}

else

(

MessageBox(〃數(shù)值超出范圍〃);

return;

}

Invalidate();

}

voidCTestDataDrawView::OnViewSet()

(

//TODO:Addyourcommandhandlercodehere

ViewSetdig;

if(IDOK==dig.DoModal())

(

pro->xMin=dig.v_xmin;

pro->xMax=dig.v_xmax;

pro->yMin=dig.v_ymin;

pro->yMax=dig.v_ymax;

}

Invalidate();

)

voidCTestDataDrawView::OnStyleSet0

(

//TODO:AddyourcommandhandlercodehereDataStyleSetdigs;

StyleSetdig;

if(IDOK==dig.DoModal())

(

pro->m_Color=dig.s_color;

pro->radius=dig.s_r;

}

Invalidate();

)

voidCTestDataDrawView::OnDataClear()

(

//TODO:Addyourcommandhandlercodehere

pro->xArray.clear();

pro->yArray.clear();

Invalidate();

)

voidCTestDataDrawView::0nFileOpen0

{

//TODO:Addyourcommandhandlercodehere

CFileDialogdig(TRUE);

dig.m_ofn.IpstrDefExt二〃txt〃;

dig.m_ofn.IpstrFiIter二〃DrawingFiles(*.txt)\0*.txt\0〃;

if(dlg.DoModal0!=ID0K)

return;

CStringfilePathName=dlg.GetFileName0;

CStringfileName=filePathName.GetBuffer(filePathName.GetLengthO);

pro->ReadFromTextFile(fileName);

Invalidate();

voidCTestDataDrawView::OnFileSaveAs()

(

//TODO:Addyourcommandhandlercodehere

CFileDialogdig(FALSE);

dig.m_ofn.IpstrDefExt二〃txt〃;

dig.m_ofn.IpstrFiIter二〃DrawingFiles(*.txt)\0*.txt\0〃;

if(dlg.DoModal0!=ID0K)

return;

CStringfilePathName=dlg.GetFileName0;

CStringfileName=filePathName.GetBuffer(filePathName.GetLengthO);

pro->WriteToTextFile(fileName);

)

ttpragmaonce

#include<vector>

usingnamespacestd;

classCMyTestDataDrawView;

〃點坐標為實際坐標

classproject

(

public:

CStringm_projectName;//4

intprojectNameLength;

BOOLm_projectDisplay;//4

std::vector<double>yArray;

std::vector<double>xArray;

intactiveLayerlndex;〃當前激活圖層序號4

RECTrect;//繪圖區(qū)域大小

doublexMin,xMax,yMin,yMax;//數(shù)據(jù)區(qū)域大小

doublexLower;//x下限

doublexUpper;//x上限

doubleyLower;〃y下限

doubleyUpper;〃y上限

COLORREFm_Color;//colorofanproject

CRectmEnclosingRect;//

intradius;

public:

project();

"project();

voidDraw(CDC*pDC);

voidSetRect(RECTrec);//設置繪圖區(qū)域

intGetActiveLayerlndex()

returnactiveLayerlndex;

voidWriteToTextFile(CStringfilename);

voidReadFromTextFile(CStringfilename);

);

ttinclude〃stdafx.h〃

ttinclude^TestDataDraw.h〃

ttinclude“project.h〃

ttinclude^TestDataDrawView.h〃

ttinclude<fstream>

project::project()

(

m_projectName=〃myproject〃;

m_projectDisplay=TRUE;

activeLayerIndex=0;

xMax=100;

xMin=0;

yMax=100;

yMin=0;

m_Color=RGB(255,0,0);//colorofanproject

radius=5;

)

project::project()

(

intnum=xArray.size();

if(num>0)

(

doublex=NULL;

doubley=NULL;

for(inti=num-l;i>-l;i--)

(

x=xArray.at(i);

y=yArray.at(i);

}

xArray.clear();

yArray.clear();

}

);

voidproject::SetRect(RECTrec)

(

rect=rec;

}

voidproject::Draw(CDC*pDC)

(

CPen*newPen=newCPen(0,1,RGB(0,0,0));

CPen*oldPen=pDC->Select0bject(newPen);

LOGFONTfont;

font.IfHeight=-20;

font.IfEscapement=0;

font.Ifltalic=1;

font.IfWeight=FW_B0LD;〃加粗

font.IfUnderline=0;//不加下劃線

font.IfStrikeOut=0;//無刪除線

font.IfCharSet=0;//選擇字符集

pDC->SelectObject(CreateFontIndirect(&font));

pDC->SetBkMode(0);

intx,y;

//---------------繪制坐標軸----------------------〃

font.IfHeight=-16;

font.IfCharSet=134;

pDC->SelectObject(CreateFontIndirect(&font));

〃\**********y軸

pDC->MoveTo(rect.left+(rect.right-rect.left)/2,rect.bottom-50);

pDC->LineTo(rect.left+(rect.right-rect.left)/2,rect.top+50);

pDC->Text0ut(rect.left+(rect.right-rect.left)/2,rect.top+30,〃Y〃);

//箭頭

pDC->MoveTo(rect.left+(rect.right-rect.left)/2,rect.top+50);

pDC->LineTo(rect.left+(rect.right-rect.left)/2+5,rect.top+60);

pDC->MoveTo(rect.left+(rect.right-rect.left)/2,rect.top+50);

pDC->LineTo(rect.left+(rect.right一rect.left)/2-5,rect.top+60);

〃\**********x軸

pDC->MoveTo(rect.left+60,rect.bottom-(rect.bottom-rect.top)/2);

pDC->LineTo(rect.right-60,rect.bottom-(rect.bottom-rect.top)/2);

pDC->Text0ut(rect.right-50,rect.bottom-(rect.bottom-rect.top)/2,〃X〃);

//箭頭

pDC->MoveTo(rect.right-60,rect.bottom-(rect.bottom-rect.top)/2);

pDC->LineTo(rect.right-70,rect.bottom-(rect.bottom-rect.top)/2+5);

pDC->MoveTo(rect.right-60,rect.bottom-(rect.bottom-rect.top)/2);

p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論