// lab2View.cpp : Clab2View 类的实现
//
#include "stdafx.h"
// SHARED_HANDLERS 可以在实现预览、缩略图和搜索筛选器句柄的
// ATL 项目中进行定义,并允许与该项目共享文档代码。
#ifndef SHARED_HANDLERS
#include "lab2.h"
#endif
#include "lab2Doc.h"
#include "lab2View.h"
#include "resource.h"
#include "INPUTTEXT.h"
#include "GETDRAWPEN.h"
#include "SETTEXTCAPTION.h"
#include "MainFrm.h"
#include "APRECTELL.h"
#include "APTEXT.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
int ChoMenuID=SET_SEL;
int ChoShapeID;
int ShapeMode;
int DoMode;
bool SizeFla;
int choMenu;
// Clab2View
IMPLEMENT_DYNCREATE(Clab2View, CView)
BEGIN_MESSAGE_MAP(Clab2View, CView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &Clab2View::OnFilePrintPreview)
ON_WM_CONTEXTMENU()
ON_WM_RBUTTONUP()
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDOWN()
ON_COMMAND(ID_DrawLine, &Clab2View::OnDrawline)
ON_COMMAND(ID_DrawELL, &Clab2View::OnDrawell)
ON_COMMAND(ID_DrawRect, &Clab2View::OnDrawrect)
ON_COMMAND(ID_DrawText, &Clab2View::OnDrawtext)
ON_COMMAND(ID_DrawPen, &Clab2View::OnDrawpen)
ON_COMMAND(ID_DrawCol, &Clab2View::OnDrawcol)
ON_COMMAND(ID_FontType, &Clab2View::OnFonttype)
ON_WM_MOUSEMOVE()
ON_COMMAND(ID_LINE_MOVE, &Clab2View::OnLineMove)
ON_COMMAND(ID_LINE_CAPTION, &Clab2View::OnLineCaption)
ON_COMMAND(ID_RECT_MOVE, &Clab2View::OnRectMove)
ON_COMMAND(ID_RECT_CAPTION, &Clab2View::OnRectCaption)
ON_COMMAND(ID_ELL_MOVE, &Clab2View::OnEllMove)
ON_COMMAND(ID_ELL_CAPTION, &Clab2View::OnEllCaption)
ON_COMMAND(ID_TEXT_MOVE, &Clab2View::OnTextMove)
ON_COMMAND(ID_TEXT_CAPTION, &Clab2View::OnTextCaption)
ON_COMMAND(ID_DELETE, &Clab2View::OnDelete)
ON_COMMAND(ID_FILE_OPEN, &Clab2View::OnFileOpen)
ON_COMMAND(ID_FILE_SAVE, &Clab2View::OnFileSave)
ON_COMMAND(ID_CLEAN_ALL, &Clab2View::OnCleanAll)
ON_COMMAND(ID_APP_ABOUT, &Clab2View::OnAppAbout)
ON_COMMAND(ID_SIZE, &Clab2View::OnSize)
ON_UPDATE_COMMAND_UI(ID_CLEAN_ALL, &Clab2View::OnUpdateCleanAll)
ON_UPDATE_COMMAND_UI(ID_DrawELL, &Clab2View::OnUpdateDrawell)
ON_UPDATE_COMMAND_UI(ID_DrawLine, &Clab2View::OnUpdateDrawline)
ON_UPDATE_COMMAND_UI(ID_DrawRect, &Clab2View::OnUpdateDrawrect)
ON_UPDATE_COMMAND_UI(ID_DrawText, &Clab2View::OnUpdateDrawtext)
END_MESSAGE_MAP()
// Clab2View 构造/析构
Clab2View::Clab2View()
{
penW=0;
penCol=0;
BruCol=0;
TextCol=0;
DoMode=0;
ShapeMode=0;
memset(&logFont,0,sizeof(LOGFONT));
SizeFla=false;
choMenu=MenuSel;
}
Clab2View::~Clab2View()
{
}
BOOL Clab2View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式
cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,
LoadCursor( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_CURSOR1) ) ,
(HBRUSH) (COLOR_WINDOW + 1));
return CView::PreCreateWindow(cs);
}
// Clab2View 绘制
// Clab2View 打印
void Clab2View::OnFilePrintPreview()
{
#ifndef SHARED_HANDLERS
AFXPrintPreview(this);
#endif
}
BOOL Clab2View::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默认准备
return DoPreparePrinting(pInfo);
}
void Clab2View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加额外的打印前进行的初始化过程
}
void Clab2View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加打印后进行的清理过程
}
void Clab2View::OnContextMenu(CWnd* /* pWnd */, CPoint point)
{
#ifndef SHARED_HANDLERS
theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);
#endif
}
// Clab2View 诊断
#ifdef _DEBUG
void Clab2View::AssertValid() const
{
CView::AssertValid();
}
void Clab2View::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
Clab2Doc* Clab2View::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(Clab2Doc)));
return (Clab2Doc*)m_pDocument;
}
#endif //_DEBUG
void Clab2View::OnDrawline()
{
drawMode=drawLine;
choMenu=Drawline;
}
void Clab2View::OnDrawell()
{
drawMode=drawEll;
choMenu=Drawell;
}
void Clab2View::OnDrawrect()
{
drawMode=drawRect;
choMenu=Drawrect;
}
void Clab2View::OnDrawtext()
{
drawMode=drawText;
choMenu=Drawtext;
}
void Clab2View::OnDraw(CDC* pDC)
{
Clab2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
for(int i=0;i<pDoc->m_Shapes.GetSize();i++)
{
pDoc->m_Shapes[i]->Show(pDC);
}
}
void Clab2View::OnRButtonUp(UINT nFlags , CPoint point)
{
CMenu menu,*pPopup=NULL;
CPoint point1,point2;
Clab2Doc* pDoc = GetDocument();
CRect Rect;
ASSERT_VALID(pDoc);
if (!pDoc)
return;
ChoShapeID=pDoc->m_Shapes.GetSize()+1;
GetCursorPos(&point1);
ClientToScreen(&Rect);//获取客户区(客户区的左上角)相对于屏幕的位置
point2.x= (point1.x - Rect.left) ;//通过变换的到客户区的坐标
point2.y= (point1.y - Rect.top) ;
for(int i=0;i<pDoc->m_Shapes.GetSize();i++)
{
if(pDoc->m_Shapes[i]->WatchRadio(point2)) //判断是否在该对象区域
{
ChoShapeID=i;
InvalidateRect(NULL); //如果是的话就画出该对象的边框方便选中
break;
}
}
menu.LoadMenu(IDR_MAINFRAME);
pPopup = menu.GetSubMenu(ChoMenuID);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point1.x,point1.y,GetParent());
}
void Clab2View::OnLButtonDown(UINT nFlags, CPoint point)
{
CView::OnLButtonDown(nFlags, point);
FirstPoint=point;
SetCapture();
}
void Clab2View::OnLButtonUp(UINT nFlags, CPoint point)
{
Cshape* pShape=NULL;
INPUTTEXT obin;
int efcX,efcY;
Clab2Doc* pDoc = GetDocument();
CView::OnLButtonUp(nFlags, point);
ReleaseCapture();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
if(!DoMode&&!SizeFla)
{
switch (drawMode)
{
case drawLine:
if((!penW)&&(!penCol))pShape= new CMyline(0,0,FirstPoint,point);
else pShape= new CMyline(penCol,penW,FirstPoint,point);//创建新对象
break;
case drawRect:
if((!penW)&&(!penCol)&&(!BruCol))pShape= new CMyRect(0,0,0,FirstPoint,point);
else pShape= new CMyRect(BruCol,penCol,penW,FirstPoint,point);
break;
case drawEll:
if((!penW)&&(!penCol)&&(!BruCol))pShape= new CMyEll(0,0,0,FirstPoint,point);
else pShape= new CMyEll(BruCol,penCol,penW,FirstPoint,point);
break;
case drawText:
if(obin.DoModal()==IDOK)
pShape= new CMyText(obin.TextIn,logFont,TextCol,FirstPoint,point);
break;
default:break;
}
if(pShape)
{
GetDocument()->m_Shapes.Add(pShape); //将对象加入模板类
InvalidateRect(NULL);
}
}
else if(DoMode)
{
efcX=point.x-FirstPoint.x;
efcY=point.y-FirstPoint.y;
pDoc->m_Shapes[ChoShapeID]->FreshPos(efcX,efcY);
InvalidateRect(NULL);
DoMode=0; //移动flag无效
}
else if(SizeFla)
{
efcX=point.x-FirstPoint.x;
efcY=point.y-FirstPoint.y;
pDoc->m_Shapes[ChoShapeID]->MovePos(efcX,efcY);
InvalidateRect(NULL);
DoMode=0;
SizeFla=false;
}
}
void Clab2View::OnDrawpen()
{
char* buff=NULL;
GETDRAWPEN obin;
if(obin.DoModal()==IDOK)
{
buff=new char[obin.PenWidthGet.GetLength()+1];
strcpy(buff,(LPCSTR)obin.PenWidthGet.GetBuffer(obin.PenWidthGet.GetLength()));
penW=atoi(buff);
penCol=obin.Pencolor;
}
if(buff)delete buff;
drawMode=drawSel;
}
void Clab2View::OnDrawcol()
{
CColorDialog colorDlg(BruCol);
if (colorDlg.DoModal() == IDOK)
{
BruCol = colorDlg.GetColor();
}
drawMode=drawSel;
}
void Clab2View::OnFonttype()
{
SETTEXTCAPTION obin;
if(obin.DoModal()==IDOK)
{
TextCol=obin.tmpColo;
logFont=obin.tmpFont;
}
drawMode=drawSel;
}
void Clab2View::OnMouseMove(UINT nFlags, CPoint point)
{
Cshape* pShape=NULL;
CString strPos;
CView::OnMous
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
lab2.zip (81个子文件)
lab2
lab2.suo 42KB
lab2.exe 215KB
lab2.sln 879B
lab2.sdf 56.33MB
lab2
lab2.vcxproj.filters 4KB
stdafx.cpp 137B
SETTEXTCAPTION.h 540B
lab2.vcxproj.user 143B
UserImages.bmp 8KB
res
ICON1.ico 1KB
Toolbar256.bmp 6KB
lab2.rc2 664B
toolbar1.bmp 1KB
Toolbar.bmp 1KB
lab2Doc.ico 5KB
APRECTELL.cpp 1KB
stdafx.h 2KB
lab2Doc.cpp 2KB
lab2View.cpp 14KB
targetver.h 234B
APTEXT.cpp 1KB
lab2.cpp 5KB
INPUTTEXT.cpp 591B
GETDRAWPEN.h 599B
shape.h 3KB
MainFrm.cpp 6KB
resource.h 6KB
APTEXT.h 510B
lab2.rc 34KB
shape.cpp 9KB
MainFrm.h 1KB
GETDRAWPEN.cpp 1024B
INPUTTEXT.h 423B
lab2.aps 72KB
lab2.vcxproj 7KB
lab2.h 616B
Debug
vc100.idb 1.9MB
lab2.write.1.tlog 0B
lab2.exe.intermediate.manifest 381B
CL.write.1.tlog 5KB
lab2.lastbuildstate 45B
CL.read.1.tlog 50KB
mt.read.1.tlog 424B
rc.write.1.tlog 358B
lab2_manifest.rc 198B
stdafx.obj 616KB
rc.read.1.tlog 3KB
APTEXT.obj 29KB
lab2.pch 32.13MB
APRECTELL.obj 33KB
lab2Doc.obj 74KB
lab2.exe.embed.manifest 667B
shape.obj 52KB
mt.command.1.tlog 522B
cl.command.1.tlog 7KB
link-cvtres.read.1.tlog 2B
SETTEXTCAPTION.obj 33KB
lab2.exe.embed.manifest.res 732B
link.write.1.tlog 1KB
lab2.vcxprojResolveAssemblyReference.cache 713B
lab2.obj 55KB
GETDRAWPEN.obj 34KB
link-cvtres.write.1.tlog 2B
link.command.1.tlog 2KB
rc.command.1.tlog 848B
link.read.1.tlog 5KB
lab2.res 27KB
mt.write.1.tlog 328B
lab2View.obj 121KB
MainFrm.obj 81KB
lab2.log 2KB
INPUTTEXT.obj 26KB
vc100.pdb 3.32MB
1.fig 271B
lab2Doc.h 890B
APRECTELL.h 533B
lab2View.h 3KB
SETTEXTCAPTION.cpp 1KB
ipch
lab2-a4558a65
Debug
lab2.exe 212KB
lab2.ilk 2.01MB
lab2.pdb 5.29MB
共 81 条
- 1
资源评论
qq_39730178
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功