📄 serverdrawview.cpp
字号:
// ServerDrawView.cpp : CServerDrawView 类的实现
//
#include "stdafx.h"
#include "ServerDraw.h"
#include "afxodlgs.h"
#include "ServerDrawDoc.h"
#include "ServerDrawView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CServerDrawView
IMPLEMENT_DYNCREATE(CServerDrawView, CScrollView)
BEGIN_MESSAGE_MAP(CServerDrawView, CScrollView)
ON_COMMAND(ID_CANCEL_EDIT_SRVR, OnCancelEditSrvr)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_COMMAND(ID_OLEBUSYDIALOG, OnOlebusydialog)
ON_COMMAND(ID_OLECHANGEICONDIALOG, OnOlechangeicondialog)
ON_COMMAND(ID_OLELINKSDIALOG, OnOlelinksdialog)
END_MESSAGE_MAP()
// CServerDrawView 构造/销毁
CServerDrawView::CServerDrawView()
{
// TODO: 在此处添加构造代码
m_Drag=0;
m_HCursor=AfxGetApp()->LoadStandardCursor(IDC_CROSS);
}
CServerDrawView::~CServerDrawView()
{
}
BOOL CServerDrawView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,0,(HBRUSH)::GetStockObject(WHITE_BRUSH),0);
return CScrollView::PreCreateWindow(cs);
}
// CServerDrawView 绘制
void CServerDrawView::OnDraw(CDC* pDC)
{
CServerDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: 在此处为本机数据添加绘制代码
int index=pDoc->GetDrawNumber();
for(int i=0;i<index;i++)
pDoc->GetDraw (i)->Drawing(pDC);
pDoc->UpdateAllItems(0);
}
// OLE 服务器支持
// 以下命令处理程序提供了标准键盘
// 用户界面以取消就地编辑会话。此处,
// 服务器(而不是容器)将导致停用
void CServerDrawView::OnCancelEditSrvr()
{
GetDocument()->OnDeactivateUI(FALSE);
}
// CServerDrawView 诊断
#ifdef _DEBUG
void CServerDrawView::AssertValid() const
{
CScrollView::AssertValid();
}
void CServerDrawView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CServerDrawDoc* CServerDrawView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CServerDrawDoc)));
return (CServerDrawDoc*)m_pDocument;
}
#endif //_DEBUG
// CServerDrawView 消息处理程序
void CServerDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC dc(this);
OnPrepareDC(&dc);
dc.DPtoLP(&point);
m_pPrev=point;
m_pOrigin=point;
SetCapture();
m_Drag=1;
RECT rect;
GetClientRect(&rect);
ClientToScreen(&rect);
ClipCursor(&rect);
CScrollView::OnLButtonDown(nFlags, point);
}
void CServerDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC dc(this);
OnPrepareDC(&dc);
dc.DPtoLP(&point);
if(m_Drag)
{
m_Drag=0;
ReleaseCapture();
ClipCursor(NULL);
CServerDrawDoc *pDoc=GetDocument();
pDoc->AddDraw(m_pOrigin,point);
pDoc->UpdateAllViews(NULL);
pDoc->UpdateAllItems(0);
}
CScrollView::OnLButtonUp(nFlags, point);
}
void CServerDrawView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC dc(this);
OnPrepareDC(&dc);
dc.DPtoLP(&point);
SetCursor(m_HCursor);
if(m_Drag)
{
dc.SetROP2(R2_NOT);
dc.MoveTo(m_pOrigin);
dc.LineTo(m_pPrev);
dc.MoveTo(m_pOrigin);
dc.LineTo(point);
m_pPrev=point;
}
CScrollView::OnMouseMove(nFlags, point);
}
void CServerDrawView::OnInitialUpdate()
{
SIZE size={640,480};
SetScrollSizes(MM_TEXT,size);
CScrollView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
}
void CServerDrawView::OnOlebusydialog()
{
// TODO: 在此添加命令处理程序代码
HTASK htaskBusy=NULL;
COleBusyDialog busyDlg(htaskBusy);
busyDlg.DoModal();
}
void CServerDrawView::OnOlechangeicondialog()
{
// TODO: 在此添加命令处理程序代码
COleClientItem* pItem=NULL;
COleChangeIconDialog changeiconDlg(pItem);
changeiconDlg.DoModal();
}
void CServerDrawView::OnOlelinksdialog()
{
// TODO: 在此添加命令处理程序代码
CServerDrawDoc *pDoc=GetDocument();
COleLinksDialog linkDlg(pDoc,this);
linkDlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -