![VC++程序设计考试试题作业_第1页](http://file4.renrendoc.com/view12/M00/17/0C/wKhkGWaENvqAbPR0AAGfV5dr-80557.jpg)
![VC++程序设计考试试题作业_第2页](http://file4.renrendoc.com/view12/M00/17/0C/wKhkGWaENvqAbPR0AAGfV5dr-805572.jpg)
![VC++程序设计考试试题作业_第3页](http://file4.renrendoc.com/view12/M00/17/0C/wKhkGWaENvqAbPR0AAGfV5dr-805573.jpg)
![VC++程序设计考试试题作业_第4页](http://file4.renrendoc.com/view12/M00/17/0C/wKhkGWaENvqAbPR0AAGfV5dr-805574.jpg)
![VC++程序设计考试试题作业_第5页](http://file4.renrendoc.com/view12/M00/17/0C/wKhkGWaENvqAbPR0AAGfV5dr-805575.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四、使用MFC编写带菜单和工具栏的文本框编辑程序,支持复制、剪切和粘贴
功能,以及文件打开、保存功能。(20分)
资源列表:
编程资源资源类别标题ID关联变量类型关联变量名称
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
除此之外还实现了全选功能、删除功能,可以全选文本内容和删除内容,还实现了撤销等功
能。
程序主要代码:
〃重载OnCloseO实现X的退出功能
voidCNotePadDlg::OnClose()
{
OnFileExitO;〃这里调用菜单下的退出函数
//EndDialog(IDCANCEL);
//CDialog::OnClose();
)
〃实现菜单栏目下复制的功能
voidCNotePadDlg::OnEditCopy()
(
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);
pEdit->Copy();
)
〃实现菜单栏目下删除的功能
voidCNotePadDlg::OnEditClear()
(
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);
pEdit->Clear();
)
〃实现菜单栏目下撤销的功能
voidCNotePadDlg::OnEditUndo()
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);
pEdit->Undo();
}
〃实现菜单栏目下剪切的功能
voidCNotePadDlg::OnEditCut()
(
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);
pEdit->Cut();
)
〃实现菜单栏目下全选的功能
voidCNotePadDlg::OnEditSelectAll()
(
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);
pEdit->SetSel(0,-1);
)
〃实现菜单栏目下粘贴的功能
voidCNotePadDlg::OnEditPaste()
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);
pEdit->Paste();
)
〃实现菜单栏目下时间的功能
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);
}
〃实现移动窗口大小的功能;记得修改窗口属性当中的值
voidCNotePadDlg::OnSize(UINTnType,intex,intcy)
(
CDialog::0nSize(nType,ex,cy);
CWnd*pEdit=GetDlgItem(IDC_TEXT);
if(pEdit)
pEdit->MoveWindow(0,0,ex,cy);
)
〃实现菜单下退出的功能
voidCNotePadDlg::OnFileExit()
(
if(Prompt()=0)〃如果等于0,代表选择了取消,那么不关闭对话框
(
〃不做任何处理
}
else〃如果不等于0那么代表选择了否直接关闭对话框
(
EndDialog(IDCANCEL);
}
)
〃实现菜单栏目下打开的功能
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());
)
〃实现菜单栏目下保存的功能
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表示文本没有改变;这里直接保存,点击退出的时候不要再提示
改变
)
〃实现菜单栏目下另存为的功能
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);
〃文件写入,第一个参数是要写入的内容,第二个是写入内容的长度
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;〃否则就是现在打开文件的Path
intnRet二MessageBox(str+〃\r\n已经被修改,是否保存?〃,〃提示消息〃,
MB_YESNOCANCEL|MB_ICONEXCLAMATION);
if(IDCANCEL=nRet)/.口果选择了取消,那么不做任何处理,也不关闭对话框(在退出函数
中做处理)
returnFALSE;
if(IDNO==nRet)〃如果选择了否直接关闭对话框(在退出函数当中做处理)
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分)
要求:在“形状”列表框中选择要绘制图形,在“笔颜色”下拉列表框选择画笔的颜色,
在“刷子颜色”下拉列表框中选择画刷的颜色。在“线型”组合框选择画笔的线型,在“填
充类型”中选择画刷填充类型。单击“绘图”按钮按照前面的选项绘制图形,单击“退出”
按钮退出程序。
资源列表:
关联变量
资源名称资源类别标题ID号消息响应函数
变量类型变量名称
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参数绘图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;〃用于保存静态文本框的对象指针
//初始化和双缓冲相关的数据
voidInitialDBB();
〃双缓冲内存上绘图
voidDrawOnMem();
〃在静态区域画图
voidDrawOnStaticArea();
〃更改颜色的消息响应函数
afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);
//生成的消息映射函数
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);
}
)
〃在静态区域画图
voidCfiveDlg::DrawOnStaticArea()
(
CWnd*pWnd=GetDlgItem(IDC_STATIC);〃获得静态文本框的窗口对象
CRectrect;
pWnd->GetClientRect(&rect);
CDC*pDC=pWnd->GetDC();//
DrawOnMem();
//一次性的将内存设备环境上绘制完毕的图形〃贴〃到屏幕上
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)测试数据处理程序,要求有数据输入、保存、读入和绘图功能,
使用菜单和加速键特性,坐标轴依据数据分布而确定。(20分)
典型绘图效果如下:
注意:所有编程题要求为1)代码要有注释,便于理解,规格要正确。2)要列出程序界面
和运行效果。3)列表显示所有编程资源,包括名称,标题,ID号,资源类别,关联变量类
型,关联变量名称,消息响应函数名称。4)程序界面和运行效果可打印,其它全部手写,
打印者扣分。
资源列表:
资源关联变量
资源类名标题ID号消息响应函数
类别变量类型变量名称
CFileDialogdig
CTestData子菜打开txtID_FILE_
CStringfilePathNamevoidCTestDataDrawView::OnFi1eOpen()
DrawView单数据OPEN
CStringfileName
CFileDialogdig
CTestData子菜另存为ID_FILE_
CStringfilePathNamevoidCTestDataDrawView::OnFileSaveAs()
DrawView单txtSAVE_AS
CStringfileName
CTestData子菜ID_MENUI
添加数据AddTestDatadigvoidCTestDataDrawView::OAddTestData()
DrawView单TEM32771
CTestData子菜ID_MENUI
清除数据//voidCTestDataDrawView::OnDataClear()
DrawView单TEM32772
CTestData子菜页面范围ID_MENUI
ViewSetdigvoidCTestDataDrawView::OnViewSet()
DrawView单设置TEM32773
CTestData子菜数据样式ID_MENUI
StyleSetdigvoidCTestDataDrawView::OnStyleSet()
DrawView单设置TEM32774
AddTestDa对话添加测试IDD_DIALdoubleInPutX对话框“添加”按钮对应的消息响应函数:
ta框数据OGIdoubleInPutYvoidAddTestData::0nAdd()
doublev_xmin,v_xmax
对话页面范围IDD_DIAL对话框“确定”按钮对应的消息响应函数:
ViewSet
框设置0G2doublev_ymin,v_ymaxvoidViewSet::0n0K()
COLORREFSetColor对话框“点颜色”按钮对应消息响应函数
对话数据颜色IDD_DIALvoidStyleSet::OnDataColor()
StyleSetCOLORREFs_color
框设置0G3对话框“确定”按钮对应的消息响应函数:
IntS_rvoidStyleSet::0n0K()
程序运行效果:
______________________________________图:程序运行界面
国TestDataDraw-[TestDal]
因文件(日书(E)查看(V)窗C1(W)帮助(H[数—制设置
口尸IH「电色|昌曾
K
A
图:第一步页面范围设置
国TestDataDraw-[TestDal]
囱文件(F)辐(E)查看(V)窗口(Wj帮助(H)数一制设置
图:第二步添加测试数据
笏TestDataDraw-[TestDal]
因文件(F)编本(E)查看(V)窗口(77)帮助(H)数3■制设置
Da;BM电信|昌智
图:添加题目中的5个数据效果图
图:设置点数据的半径和颜色
文件(F)编辑(E)格式(O)帮助(H)
7800^200^1800^200^
5
1891.251888.97
1884.71873
1883.581897.98
1895.111906.45
1906.171912.89
图:将点数据保存为txt格式文件
图:清除数据
9TestDataDraw-[TestDal]|dI!回||次
中文件(F)『(E)查看(V)^窗口(W)帮助(H)数触制设置口网八
口苏口函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(〃数值超出范围〃);
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;//绘图区域大小
doublexMin,xMax,yMin,yMax;//数据区域大小
doublexLower;//x下限
doublexUpper;//x上限
doubleyLower;〃y下限
doubleyUpper;〃y上限
COLORREFm_Color;//colorofanproject
CRectmEnclosingRect;//
intradius;
public:
project();
"project();
voidDraw(CDC*pDC);
voidSetRect(RECTrec);//设置绘图区域
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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 皮毛防蛀处理行业发展全景调研与投资趋势预测研究报告
- 电视会议通信服务行业发展预测分析报告
- 抽水马桶的安装和修理行业发展趋势及前景展望分析报告
- 云出版服务行业发展趋势及前景展望分析报告
- 大班第一学期教学计划15篇
- 扫路机出租行业相关项目经营管理报告
- 小学期中表彰学生发言稿
- 气象信息服务行业相关项目诊断报告
- 小学数学新课标学习心得体会15篇
- 安全防范系统建设与运营服务行业发展趋势及前景展望分析报告
- 2023-2024学年湖北省武汉市洪山区物理八下期末学业质量监测试题及答案解析
- 2024届福建省泉州八年级数学第二学期期末质量检测试题含解析
- 幼儿园园本课题研究课题
- 小升初模拟测试卷(试题)-2023-2024学年人教版数学+六年级下册
- 2024江苏省常州武进国家高新区北区管理处招聘4人历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 汽车车身制造技术 课件 项目一 车身结构与材料
- 线性代数智慧树知到期末考试答案章节答案2024年枣庄学院
- 电缆连接与敷设工程的施工计划与进度控制
- 2024年内蒙古赤峰巴林右旗旗直机关事业单位遴选37人历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 矩形顶管工程技术规程DBJ-T 15-229-2021
- 2024年安全月主题宣贯课件
评论
0/150
提交评论