版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
四、使用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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中秋禮盒銷售合同范本
- 中國抗感染類藥物行業(yè)市場發(fā)展監(jiān)測及投資方向研究報告
- 住宅供暖改造合同范本
- 出口紙張采購合同范本
- 淺析單片機的應用
- 勞務攬承合同范本
- 加工糾紛合同范本
- 公司簽訂私人合同范例
- 勞務及材料合同范本
- 務工勞動合同范例
- 中國傳統(tǒng)聚落景觀基因圖譜的構建與應用研究
- 國家生態(tài)安全教育課例課件
- 精神科常見藥物中毒急救與護理
- 《小兒計劃免疫》課件
- 林下經濟產業(yè)現(xiàn)狀及發(fā)展重點分析
- 消防業(yè)務開拓方案
- 鑄牢中華民族共同體意識自評報告范文
- 漫畫物理之力學
- 單板硬件測試規(guī)范
- 關于市推動高新技術企業(yè)發(fā)展的調研報告
- 學校安防監(jiān)控維保方案
評論
0/150
提交評論