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

📄 linepro2.cpp

📁 VS2005 MFC 实现的画图程序
💻 CPP
字号:
// LinePro2.cpp : 实现文件
//

#include "stdafx.h"
#include "GDraw.h"
#include "GDrawDoc.h"
#include "LinePro2.h"
#include"MainFrm.h"



// LinePro2

IMPLEMENT_DYNCREATE(LinePro2, CFormView)

LinePro2::LinePro2()
	: CFormView(LinePro2::IDD)
	, m_start_x(0)
	, m_start_y(0)
	, m_end_x(0)
	, m_end_y(0),color(RGB(0,0,0))
	, m_shape(0)
	, m_type(0)
{  
	


}

LinePro2::~LinePro2()
{
}

void LinePro2::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_STRATX, m_start_x);
	DDX_Text(pDX, IDC_STRATY, m_start_y);
	DDX_Text(pDX, IDC_ENDX, m_end_x);
	DDX_Text(pDX, IDC_ENDY, m_end_y);
	DDX_CBIndex(pDX, IDC_type, m_shape);
	DDX_CBIndex(pDX, IDC_big, m_type);
}

BEGIN_MESSAGE_MAP(LinePro2, CFormView)
	ON_BN_CLICKED(IDC_Volor, &LinePro2::OnBnClickedLinePro)
	ON_WM_PAINT()

	ON_WM_KEYDOWN()
	ON_BN_CLICKED(IDC_BUTTON1, &LinePro2::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, &LinePro2::OnBnClickedButton2)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_BN_CLICKED(IDC_BUTTON3, &LinePro2::OnBnClickedButton3)
END_MESSAGE_MAP()


// LinePro2 诊断

#ifdef _DEBUG
void LinePro2::AssertValid() const
{
	CFormView::AssertValid();
}

#ifndef _WIN32_WCE
void LinePro2::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif
#endif //_DEBUG


// LinePro2 消息处理程序

void LinePro2::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
	// TODO: 在此添加专用代码和/或调用基类

	CFormView::OnPrint(pDC, pInfo);
}

void LinePro2::OnPaint()
{
// device context for painting
	// TODO: 在此处添加消息处理程序代码
		CPaintDC dc(this); // device context for painting
	// TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CDialog::OnPaint()
	CWnd *pWnd=GetDlgItem (IDC_Volor);
	CDC *pDC=pWnd->GetDC ();
    CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
	if( draw->select )
	{
		pDC->FillRect (CRect(0,0,102,42),&CBrush(draw->m_ptrGL->color));
		CComboBox *pCB=(CComboBox* )GetDlgItem(IDC_big);
		int big=draw->m_ptrGL->wide;
		int type=draw->m_ptrGL->shape; 
		pCB->SetCurSel (big);
		pCB=(CComboBox* )GetDlgItem(IDC_type);
		pCB->SetCurSel (type);				
		SetDlgItemInt(IDC_STRATX,draw->m_ptrGL->pp[0].x);
		SetDlgItemInt(IDC_STRATY,draw->m_ptrGL->pp[0].y);
		SetDlgItemInt(IDC_ENDX,draw->m_ptrGL->pp[1].x);	
		SetDlgItemInt(IDC_ENDY,draw->m_ptrGL->pp[1].y);
	}
	else
		pDC->FillRect (CRect(0,0,102,42),&CBrush(color));
	ReleaseDC(pDC);

	// 不为绘图消息调用 CFormView::OnPaint()
}
void LinePro2::OnBnClickedLinePro()
{
    CColorDialog ccd;
	COLORREF col;
	if(ccd.DoModal()==IDOK)
	{
		col=ccd.GetColor ();
	 //   color.SetFromCOLORREF (col);	
		color=col;
	}
	CWnd *pWnd=GetDlgItem (IDC_Volor);
	CDC *pDC=pWnd->GetDC ();
	pDC->FillRect (CRect(0,0,102,42),&CBrush(color));
	pWnd->Invalidate ();
	ReleaseDC(pDC);

    CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
    CDC *pdc=draw->GetDC();
    if( draw->select )
	 {
		draw->m_ptrGL->color=color;
		draw->m_ptrGL->fill_color=color;
		draw->ShowGU(pdc,*draw->m_ptrGL);
	 }
	draw->Invalidate();
	draw->dline=0;
	draw->breakline=0;
	ReleaseDC(pdc);
}
void LinePro2::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	 
	switch(nChar)
	{
		case VK_RETURN:
		  UpdateData(true);
		  CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
		  CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
      //    draw-
		break;
	}
	CFormView::OnKeyDown(nChar, nRepCnt, nFlags);
}

void LinePro2::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码

     CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	 CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
	 CDC *pdc=draw->GetDC();
	 if( draw->select )
	 {	
	//	draw->del(pdc,*draw->m_ptrGL);
	//	draw->m_ptrGL=draw->m_ptrGL;
	    UpdateData(true);
		draw->m_ptrGL->pp[0].x=m_start_x;
		draw->m_ptrGL->pp[0].y=m_start_y;
		draw->m_ptrGL->pp[1].x=m_end_x;
		draw->m_ptrGL->pp[1].y=m_end_y;
		draw->m_ptrGL->shape=m_shape;
		draw->m_ptrGL->wide=m_type;
	//	draw->m_ptrGL->color=color;
		//draw->ShowGU(pdc,*draw->m_ptrGL,RGB(255,255,255));
		//draw->ShowGraph(pdc);
		draw->Invalidate();
	 }
 	draw->dline=0;
	draw->breakline=0;
	 ReleaseDC(pdc);

}

void LinePro2::OnBnClickedButton2()
{

}

void LinePro2::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值


	CFormView::OnLButtonDown(nFlags, point);
}

void LinePro2::OnLButtonUp(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
/*

     CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	 CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
	 draw->SetFocus();
	*/
	CFormView::OnLButtonUp(nFlags, point);
}

void LinePro2::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	
	        CComboBox *pCB=(CComboBox* )GetDlgItem(IDC_big);
			wchar_t buf[2]=L"1";
			for(int i=0;i<9;i++)
				{
					pCB->AddString(buf);
					buf[0]++;
				}
				pCB->AddString (L"10");
				pCB->SetCurSel (0);
				pCB->Clear ();

			    pCB=(CComboBox* )GetDlgItem(IDC_type);
				pCB->AddString (L"实线");
				pCB->AddString (L"点虚线");
				pCB->AddString (L"点横线");
				pCB->SetCurSel (0);
				pCB->Clear ();

	// TODO: 在此添加专用代码和/或调用基类
}

void LinePro2::OnBnClickedButton3()
{
	UpdateData(true);
    CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
//	Graph_Union  ps(draw->m_ptrGL->type,draw->m_ptrGL->count,draw->m_ptrGL->wide,draw->m_ptrGL->shape,draw->m_ptrGL->pp,draw->m_ptrGL->color,draw->m_ptrGL->fill_color);
	draw->m_ptrGL->type=-1;
	//draw->m_ptrGL->pp
	draw->m_ptrGL=NULL;
	draw->init();
	draw->OnSelectGraph();
	draw->Invalidate();
	// TODO: 在此添加控件通知处理程序代码
}

⌨️ 快捷键说明

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