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

📄 polpro.cpp

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

#include "stdafx.h"
#include "GDraw.h"
#include "PolPro.h"
#include "GDrawDoc.h"
#include"MainFrm.h"
#include"math.h"


// CPolPro

IMPLEMENT_DYNCREATE(CPolPro, CFormView)

CPolPro::CPolPro()
	: CFormView(CPolPro::IDD)
	, m_px(0)
	, m_py(0)
	, col(RGB(255,0,255))
	, col1(RGB(0,0,0))
{

	num=0;
	y=0;
}

CPolPro::~CPolPro()
{
}

void CPolPro::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_px);
	DDV_MinMaxInt(pDX, m_px, 0, 1024);
	DDX_Text(pDX, IDC_EDIT2, m_py);
	DDV_MinMaxInt(pDX, m_py, 0, 1024);
	DDX_Control(pDX, IDC_LIST1, m_list);
}

BEGIN_MESSAGE_MAP(CPolPro, CFormView)
    ON_BN_CLICKED(IDC_FILSHOW1, &CPolPro::OnBnClickedFilshow1)
	ON_BN_CLICKED(IDC_FILSHOW2, &CPolPro::OnBnClickedFilshow2)
	ON_STN_CLICKED(IDC_FILSHOW2, &CPolPro::OnStnClickedFilshow2)
	ON_LBN_SELCHANGE(IDC_LIST1, &CPolPro::OnLbnSelchangeList1)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_BUTTON1, &CPolPro::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, &CPolPro::OnBnClickedButton2)
	ON_BN_CLICKED(IDC_BUTTON3, &CPolPro::OnBnClickedButton3)
END_MESSAGE_MAP()


// CPolPro 诊断

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

#ifndef _WIN32_WCE
void CPolPro::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

void CPolPro::OnBnClickedFilshow1()
{
	CColorDialog cd;
	CWnd *pWnd=GetDlgItem(IDC_FILSHOW1);
	CDC *pDC = pWnd->GetDC();
	if(cd.DoModal() == IDOK)
	{
		col = cd.GetColor();
	}
	pDC->FillRect(CRect(2,2,96,32),&CBrush(col));
	pWnd->Invalidate();
	ReleaseDC(pDC);
	CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
	if( draw->fill_choice )
	{
		draw->m_ptrGL->fill_color=col;
		draw->Invalidate();
	}
}

void CPolPro::OnBnClickedFilshow2()
{
    CColorDialog cd;
	CWnd *pWnd=GetDlgItem(IDC_FILSHOW2);
	CDC *pDC = pWnd->GetDC();
	if(cd.DoModal() == IDOK)
	{
		col1 = cd.GetColor();
	}
	pDC->FillRect(CRect(2,2,96,32),&CBrush(col1));
	pWnd->Invalidate();
	ReleaseDC(pDC);
	CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
	if( draw->fill_choice )
	{
		draw->m_ptrGL->color=col1;
		draw->Invalidate();
	}
}

#endif
#endif //_DEBUG


// CPolPro 消息处理程序

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

void CPolPro::OnLbnSelchangeList1()
{
	// TODO: 在此添加控件通知处理程序代码
	 CString   str;   
	 num=m_list.GetCurSel();
     m_list.GetText(num,str);   
    // AfxMessageBox(strTemp);
	 UpdateData(true);
	 int x=0,y=0;
	 int len=str.GetLength();;
	 int i=0;
	 while(str[i]!=' ') i++;
	 for( int j=0;j<i;j++)
		 x+=(int(str[j]-'0'))*(int)pow(10.0,i-j-1);
	 for( i+=3;i<len;i++)
		 y+=(int(str[i]-'0'))*(int)pow(10.0,len-i-1);
	 SetDlgItemInt(IDC_EDIT1,x);
}
void CPolPro::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	// TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CFormView::OnPaint()
	CListBox* pLB;
	pLB = (CListBox*)GetDlgItem(IDC_LIST1);
	CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
	if( draw->fill_choice )
	{	CWnd *pWnd=GetDlgItem (IDC_FILSHOW2);
	    CDC *pDC=pWnd->GetDC ();
		pDC->FillRect(CRect(2,2,96,32),&CBrush(draw->m_ptrGL->color));
	    ReleaseDC(pDC);
        CWnd *pWnds=GetDlgItem (IDC_FILSHOW1);
	    CDC *pDCs=pWnds->GetDC ();
		pDCs->FillRect(CRect(2,2,96,32),&CBrush(draw->m_ptrGL->fill_color));
	    ReleaseDC(pDCs);
	}
	else
	{
		CWnd *pWnd=GetDlgItem (IDC_FILSHOW2);
	    CDC *pDC=pWnd->GetDC ();
		pDC->FillRect(CRect(2,2,96,32),&CBrush(col1));
	    ReleaseDC(pDC);
        CWnd *pWnds=GetDlgItem (IDC_FILSHOW1);
	    CDC *pDCs=pWnds->GetDC ();
		pDCs->FillRect(CRect(2,2,96,32),&CBrush(col));
        ReleaseDC(pDCs);
	}
	int si;
//	pLB->Default
	if( y==0) 
	{
	for(  si=0;si<draw->m_ptrGL->count;si++)
	{  
	    CString str=L"";
		str.Format(L"%d , %d",draw->m_ptrGL->pp[si].x,draw->m_ptrGL->pp[si].y);
	    pLB->AddString(str);
	}
	y=1;
	}
//	else y=1;

	pLB->SetCurSel(num);
	SetDlgItemInt(IDC_EDIT1,draw->m_ptrGL->pp[num].x);
	SetDlgItemInt(IDC_EDIT2,draw->m_ptrGL->pp[num].y);
}

void CPolPro::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);
	CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
	CString str;

	draw->m_ptrGL->pp[num].x=m_px;
	draw->m_ptrGL->pp[num].y=m_py;
	draw->Invalidate();
	str.Format(L"%d , %d",draw->m_ptrGL->pp[num].x,draw->m_ptrGL->pp[num].y);
	m_list.DeleteString(num);
    m_list.InsertString(num, str);
}

void CPolPro::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);
	CMainFrame*   MainFrame = (CMainFrame*)AfxGetMainWnd();
	CGDrawView  *draw=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
	CString str;
	int s=draw->m_ptrGL->count;
	if( s>3 )
	{
        for(int  i=num;i<s-1;i++)
		{
			draw->m_ptrGL->pp[i]=draw->m_ptrGL->pp[i+1];
		}
		draw->m_ptrGL->count--;
	  draw->Invalidate();
	  m_list.DeleteString(num);
	}
	num=0;
    m_list.SetCurSel(num);
	SetDlgItemInt(IDC_EDIT1,draw->m_ptrGL->pp[num].x);
	SetDlgItemInt(IDC_EDIT2,draw->m_ptrGL->pp[num].y);
	//str.Format(L"%d , %d",draw->m_ptrGL->pp[num].x,draw->m_ptrGL->pp[num].y);
}

void CPolPro::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
		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();
}

⌨️ 快捷键说明

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