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

📄 ex41view.cpp

📁 visual c++数据库开发基础与应用的源代码
💻 CPP
字号:
// ex41View.cpp : implementation of the CEx41View class
//

#include "stdafx.h"
#include "ex41.h"

#include "ex41Doc.h"
#include "ex41View.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CEx41View
#define BLACK_COLOR RGB(0,0,0)        //黑色
#define BLUE_COLOR  RGB(0,0,255)      //蓝色
#define GREEN_COLOR RGB(0,255,0)      //绿色
#define RED_COLOR   RGB(255,0,0)      //红色
#define YELLOW_COLOR RGB(255,255,0)   //黄色


IMPLEMENT_DYNCREATE(CEx41View, CView)

BEGIN_MESSAGE_MAP(CEx41View, CView)
	//{{AFX_MSG_MAP(CEx41View)
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONUP()
	ON_COMMAND(ID_COL_BLACK, OnColBlack)
	ON_UPDATE_COMMAND_UI(ID_COL_BLACK, OnUpdateColBlack)
	ON_COMMAND(ID_COL_BLUE, OnColBlue)
	ON_UPDATE_COMMAND_UI(ID_COL_BLUE, OnUpdateColBlue)
	ON_COMMAND(ID_COL_GREEN, OnColGreen)
	ON_UPDATE_COMMAND_UI(ID_COL_GREEN, OnUpdateColGreen)
	ON_COMMAND(ID_COL_RED, OnColRed)
	ON_UPDATE_COMMAND_UI(ID_COL_RED, OnUpdateColRed)
	ON_COMMAND(ID_COL_YELLOW, OnColYellow)
	ON_UPDATE_COMMAND_UI(ID_COL_YELLOW, OnUpdateColYellow)
	ON_COMMAND(ID_COL_CUSTOM, OnColCustom)
	ON_UPDATE_COMMAND_UI(ID_COL_CUSTOM, OnUpdateColCustom)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEx41View construction/destruction

CEx41View::CEx41View()
{
	// TODO: add construction code here
	//鼠标没有拖动
	m_isDragging = false;
	m_curCol = BLACK_COLOR;
	m_curID = ID_COL_BLACK;
}

CEx41View::~CEx41View()
{
}

BOOL CEx41View::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CEx41View drawing

void CEx41View::OnDraw(CDC* pDC)
{
	CEx41Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CEx41View diagnostics

#ifdef _DEBUG
void CEx41View::AssertValid() const
{
	CView::AssertValid();
}

void CEx41View::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CEx41Doc* CEx41View::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx41Doc)));
	return (CEx41Doc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CEx41View message handlers

void CEx41View::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	m_ptStart = point;
	m_ptEnd = point;
	//捕获鼠标
	SetCapture();
	//设置鼠标正在拖动
	m_isDragging = true;

	CView::OnLButtonDown(nFlags, point);
}

void CEx41View::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	//设置鼠标在客户区移动时候的光标为十字形
	::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS));
	//当鼠标处于拖动状态的时候 
	if(m_isDragging){
		//获取当前客户区设备环境类
		CClientDC cDC(this);
		//创建一个划虚线的画笔对象
		CPen pen;
		pen.CreatePen(PS_DOT,1,RGB(0,0,0));
		//将画笔选进设备表述表
		cDC.SelectObject(&pen);
		//设置背景模式,间隙不填充颜色
		cDC.SetBkMode(TRANSPARENT);
		//设置当前色的反色
		cDC.SetROP2(R2_NOT);
		//绘制直线擦掉以前的直线
		cDC.MoveTo(m_ptStart);
		cDC.LineTo(m_ptEnd);
		//绘制直线
		cDC.MoveTo(m_ptStart);
		cDC.LineTo(point);	
		m_ptEnd = point;
	}

	CView::OnMouseMove(nFlags, point);
}

void CEx41View::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	//设置拖动状态为false,表示画一条直线结束
	if(m_isDragging){
		//设置一次拖动结束
		m_isDragging = false;
		//结束鼠标捕获
		::ReleaseCapture();
		CClientDC cDC(this);
		CPen pen, *pOldPen;
		//根据当前的颜色创建画笔对象
		pen.CreatePen(PS_SOLID,1,m_curCol);
		//将画笔选进设备表述表,并保存旧的画笔对象
		pOldPen=cDC.SelectObject(&pen);
		//绘制直线
		cDC.MoveTo(m_ptStart);
		cDC.LineTo(point);
		//将旧的画笔对象选进设备描述表
		cDC.SelectObject(pOldPen);
		m_ptEnd = point;
	}
	CView::OnLButtonUp(nFlags, point);
}

void CEx41View::OnColBlack() 
{
	// TODO: Add your command handler code here
	m_curCol = BLACK_COLOR;
	m_curID = ID_COL_BLACK;
}

void CEx41View::OnUpdateColBlack(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_curID == ID_COL_BLACK?1:0);
}

void CEx41View::OnColBlue() 
{
	// TODO: Add your command handler code here
	m_curCol = BLUE_COLOR;
	m_curID = ID_COL_BLUE;
}

void CEx41View::OnUpdateColBlue(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_curID == ID_COL_BLUE?1:0);
}

void CEx41View::OnColGreen() 
{
	// TODO: Add your command handler code here
	m_curCol = GREEN_COLOR;
	m_curID = ID_COL_GREEN;
}

void CEx41View::OnUpdateColGreen(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_curID == ID_COL_GREEN?1:0);
}

void CEx41View::OnColRed() 
{
	// TODO: Add your command handler code here
	m_curCol = RED_COLOR;
	m_curID = ID_COL_RED;
}

void CEx41View::OnUpdateColRed(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_curID == ID_COL_RED?1:0);
}

void CEx41View::OnColYellow() 
{
	// TODO: Add your command handler code here
	m_curCol = YELLOW_COLOR;
	m_curID = ID_COL_YELLOW;
}

void CEx41View::OnUpdateColYellow(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_curID == ID_COL_YELLOW?1:0);
}

void CEx41View::OnColCustom() 
{
	// TODO: Add your command handler code here
	CColorDialog dlg;
	//打开颜色对话框,获取选定的颜色
	if(dlg.DoModal()==IDOK)
		m_curCol=dlg.GetColor();	
	m_curID = ID_COL_CUSTOM;
}

void CEx41View::OnUpdateColCustom(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_curID == ID_COL_CUSTOM?1:0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -