




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
四、使用MFC編寫帶菜單和工具欄的文本框編輯程序,支持復(fù)制、剪切和粘貼
功能,以及文件打開、保存功能。(20分)
資源列表:
編程資源資源類別標(biāo)題ID關(guān)聯(lián)變量類型關(guā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
菜單-復(fù)制子菜單復(fù)制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)
這是文本編輯器
復(fù)制、粘貼、,剪切效果:
?NotePad—□X
文件(F)否(E)格式(0)幫助(H)
1^^撤銷(UCtrl+Z)------------------------------------------------------------------
里切(X)Ctrl+X
復(fù)制(C)Ctrl+C
粘貼(P)Ctrl+V
刪除(D)DEL
遺Ctrl+A
日期(D)F5
除此之外還實現(xiàn)了全選功能、刪除功能,可以全選文本內(nèi)容和刪除內(nèi)容,還實現(xiàn)了撤銷等功
能。
程序主要代碼:
〃重載OnCloseO實現(xiàn)X的退出功能
voidCNotePadDlg::OnClose()
{
OnFileExitO;〃這里調(diào)用菜單下的退出函數(shù)
//EndDialog(IDCANCEL);
//CDialog::OnClose();
)
〃實現(xiàn)菜單欄目下復(fù)制的功能
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)移動窗口大小的功能;記得修改窗口屬性當(dāng)中的值
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,代表選擇了取消,那么不關(guān)閉對話框
(
〃不做任何處理
}
else〃如果不等于0那么代表選擇了否直接關(guān)閉對話框
(
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當(dāng)中
OpenFile(filedig.GetPathName(),filedig.GetFileName());
)
〃實現(xiàn)菜單欄目下保存的功能
voidCNotePadDlg::OnFileSave()
(
〃如果要保存的文件是第一次保存,那么就轉(zhuǎn)換到另存為
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控件里面的內(nèi)容
file.Write(szText,szText.GetLength());〃寫入file對象
file.Close();〃關(guān)閉對象
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;
}
〃當(dāng)前文件為該文件,保存下來
m_szCurrentFile二szFile;
CStringstrText;
〃得到IDCJTEXT控件里面的內(nèi)容
GetDlgltemText(IDC_TEXT,strText);
〃文件寫入,第一個參數(shù)是要寫入的內(nèi)容,第二個是寫入內(nèi)容的長度
file.Write(strText,strText.GetLength0);
file.Flush();〃上面的解釋跟清除了,我看這個就明白了,相信你也一樣
file.Close。;〃關(guān)閉文件,刪除對象!
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())〃如果當(dāng)前的文件為空,則str二無標(biāo)題
str二〃無標(biāo)題〃;
else
str=m_szCurrentFile;〃否則就是現(xiàn)在打開文件的Path
intnRet二MessageBox(str+〃\r\n已經(jīng)被修改,是否保存?〃,〃提示消息〃,
MB_YESNOCANCEL|MB_ICONEXCLAMATION);
if(IDCANCEL=nRet)/.口果選擇了取消,那么不做任何處理,也不關(guān)閉對話框(在退出函數(shù)
中做處理)
returnFALSE;
if(IDNO==nRet)〃如果選擇了否直接關(guān)閉對話框(在退出函數(shù)當(dāng)中做處理)
returnTRUE;
else〃如果選擇了是保存文件
OnFileSave();
}
returnTRUE;
)
〃設(shè)置上面的標(biāo)題
voidCNotePadDlg::SetTitle0
(
CStringstr;
if(m_szCurrentFile.IsEmpty())
str=〃無標(biāo)題";
else
str=m_szCurrentFile;
inti=str.ReverseFind(,W);〃反向找到\\
if(i>0)
str=str.Mid(i+1);〃從\\位置處截出str后面的內(nèi)容
SetWindowText(str);
五、使用API編寫繪圖程序如下圖。(20分)
要求:在“形狀”列表框中選擇要繪制圖形,在“筆顏色”下拉列表框選擇畫筆的顏色,
在“刷子顏色”下拉列表框中選擇畫刷的顏色。在“線型”組合框選擇畫筆的線型,在“填
充類型”中選擇畫刷填充類型。單擊“繪圖”按鈕按照前面的選項繪制圖形,單擊“退出”
按鈕退出程序。
資源列表:
關(guān)聯(lián)變量
資源名稱資源類別標(biāo)題ID號消息響應(yīng)函數(shù)
變量類型變量名稱
afx_msgvoid
繪圖形狀列表框控件形狀I(lǐng)DC_LIST1CStringm_DrawType;
OnSelchangeLis11();
afx_msgvoid
筆顏色下拉框控件筆顏色I(xiàn)DC_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兼容的內(nèi)存DC
CBitmapm_Bnip;〃位圖
CWnd*m_pDrawWnd;〃用于保存靜態(tài)文本框的對象指針
//初始化和雙緩沖相關(guān)的數(shù)據(jù)
voidInitialDBB();
〃雙緩沖內(nèi)存上繪圖
voidDrawOnMem();
〃在靜態(tài)區(qū)域畫圖
voidDrawOnStaticArea();
〃更改顏色的消息響應(yīng)函數(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;
//內(nèi)填充凝色
CStringm_inColor;
COLORREFoutColor;
COLORREFinColor;
CPenmyPen;
CBrushmyBrush;
其他主要代碼:
〃雙緩沖內(nèi)存上繪圖
voidCfiveDlg::DrawOnMem()
(
CRectrect;
〃畫圖部分-------------------------------------------------------------
if(isDraw二二true)
(
CBrush*pOldBrush二m_memDC.SelectObject(&myBrush);
〃設(shè)置繪制圖形
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();
//一次性的將內(nèi)存設(shè)備環(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();//獲取當(dāng)前選中列表項
m_ShapeList.GetText(nCurSel,strText);//獲取選中列表項的字符串
m_DrawType=strText;〃賦給變量
)
//combobox1畫筆顏色切換選擇事件
voidCfiveDlg::OnCbnSelchangeCombol()
(
//TODO:在此添加控件通知處理程序代碼
CStringstrText;
intnCurSel;
nCurSel=m_Comboboxl.GetCurSel();//獲取當(dāng)前選中列表項
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();//獲取當(dāng)前選中列表項
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ù)輸入、保存、讀入和繪圖功能,
使用菜單和加速鍵特性,坐標(biāo)軸依據(jù)數(shù)據(jù)分布而確定。(20分)
典型繪圖效果如下:
注意:所有編程題要求為1)代碼要有注釋,便于理解,規(guī)格要正確。2)要列出程序界面
和運行效果。3)列表顯示所有編程資源,包括名稱,標(biāo)題,ID號,資源類別,關(guān)聯(lián)變量類
型,關(guān)聯(lián)變量名稱,消息響應(yīng)函數(shù)名稱。4)程序界面和運行效果可打印,其它全部手寫,
打印者扣分。
資源列表:
資源關(guān)聯(lián)變量
資源類名標(biāo)題ID號消息響應(yīng)函數(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單設(shè)置TEM32773
CTestData子菜數(shù)據(jù)樣式ID_MENUI
StyleSetdigvoidCTestDataDrawView::OnStyleSet()
DrawView單設(shè)置TEM32774
AddTestDa對話添加測試IDD_DIALdoubleInPutX對話框“添加”按鈕對應(yīng)的消息響應(yīng)函數(shù):
ta框數(shù)據(jù)OGIdoubleInPutYvoidAddTestData::0nAdd()
doublev_xmin,v_xmax
對話頁面范圍IDD_DIAL對話框“確定”按鈕對應(yīng)的消息響應(yīng)函數(shù):
ViewSet
框設(shè)置0G2doublev_ymin,v_ymaxvoidViewSet::0n0K()
COLORREFSetColor對話框“點顏色”按鈕對應(yīng)消息響應(yīng)函數(shù)
對話數(shù)據(jù)顏色I(xiàn)DD_DIALvoidStyleSet::OnDataColor()
StyleSetCOLORREFs_color
框設(shè)置0G3對話框“確定”按鈕對應(yīng)的消息響應(yīng)函數(shù):
IntS_rvoidStyleSet::0n0K()
程序運行效果:
______________________________________圖:程序運行界面
國TestDataDraw-[TestDal]
因文件(日書(E)查看(V)窗C1(W)幫助(H[數(shù)—制設(shè)置
口尸IH「電色|昌曾
K
A
圖:第一步頁面范圍設(shè)置
國TestDataDraw-[TestDal]
囪文件(F)輻(E)查看(V)窗口(Wj幫助(H)數(shù)一制設(shè)置
圖:第二步添加測試數(shù)據(jù)
笏TestDataDraw-[TestDal]
因文件(F)編本(E)查看(V)窗口(77)幫助(H)數(shù)3■制設(shè)置
Da;BM電信|昌智
圖:添加題目中的5個數(shù)據(jù)效果圖
圖:設(shè)置點數(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ù)觸制設(shè)置口網(wǎng)八
口蘇口函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;
〃點坐標(biāo)為實際坐標(biāo)
classproject
(
public:
CStringm_projectName;//4
intprojectNameLength;
BOOLm_projectDisplay;//4
std::vector<double>yArray;
std::vector<double>xArray;
intactiveLayerlndex;〃當(dāng)前激活圖層序號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);//設(shè)置繪圖區(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;
//---------------繪制坐標(biāo)軸----------------------〃
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)系上傳者。文件的所有權(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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度股東在公司設(shè)立前公司名稱及商標(biāo)使用協(xié)議
- 滌綸長絲機織物企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 風(fēng)電運維企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 二零二五年度房地產(chǎn)開發(fā)項目工程款抵房款協(xié)議
- 2025年度知識產(chǎn)權(quán)股份代持與許可使用協(xié)議
- 2025年度物流倉儲代理服務(wù)協(xié)議書
- 2025年度飯店短期勞務(wù)合同-客房服務(wù)員職業(yè)發(fā)展規(guī)劃與管理協(xié)議
- 二零二五年度個人勞務(wù)輸出與績效考核協(xié)議
- 二零二五年度休閑漁業(yè)養(yǎng)魚合同書
- 二零二五年度房屋租賃使用安全責(zé)任及租戶入住培訓(xùn)合同
- (完整版)第五章養(yǎng)殖場環(huán)境保護
- 祖國版圖知識主題班會
- 2025年上半年東方電氣集團科學(xué)技術(shù)研究院限公司公開招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 高中不同主題閱讀理解高頻詞匯清單-2025屆高三下學(xué)期英語一輪復(fù)習(xí)專項
- 2025年上半年高郵市國資產(chǎn)投資運營限公司(國企業(yè))公開招聘工作人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年高考地理二輪復(fù)習(xí):地球運動(講義)解析版
- 2024年金華金開招商招才服務(wù)集團有限公司招聘筆試真題
- 【地理】亞洲的自然環(huán)境第3課時 2024-2025學(xué)年七年級地理下冊同步課件(人教版2024)
- 2024年江蘇護理職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 《國別和區(qū)域研究專題》教學(xué)大綱
-
評論
0/150
提交評論