⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverdrawview.cpp

📁 《Visual C++.NET MFC类库应用详解》程序实例
💻 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 + -