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

📄 setdlg.cpp

📁 用Visual C++实现的绘制函数图像的程序。给定任意函数表达式
💻 CPP
字号:
// SetDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MyPaint.h"
#include "SetDlg.h"
#include "MyPaintDoc.h"
#include "MyPaintView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSetDlg dialog
BYTE focus,fov;
extern CMyPaintView* dcpoint;
extern BOOL flag_focus;
extern COLORREF color_net,color_cordn,color_bk,color_text;
CSetDlg::CSetDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSetDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetDlg)
	m_focus_sw = 0;
	m_fov_sw = 0;
	m_flag_focus = FALSE;
	//}}AFX_DATA_INIT
}


void CSetDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetDlg)
	DDX_Control(pDX, IDC_FOV, m_fov);
	DDX_Control(pDX, IDC_FOCUS, m_focus);
	DDX_Text(pDX, IDC_FOCUS_SW, m_focus_sw);
	DDX_Text(pDX, IDC_FOV_SW, m_fov_sw);
	DDX_Check(pDX, IDC_CHECK1, m_flag_focus);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetDlg, CDialog)
	//{{AFX_MSG_MAP(CSetDlg)
	ON_NOTIFY(NM_CUSTOMDRAW, IDC_FOCUS, OnCustomdrawFocus)
	ON_NOTIFY(NM_CUSTOMDRAW, IDC_FOV, OnCustomdrawFov)
	ON_BN_CLICKED(IDC_CHECK1, OnCheck1)
	ON_WM_PAINT()
	ON_WM_LBUTTONDOWN()
	ON_BN_CLICKED(IDC_SET_SAVE, OnSetSave)
	ON_BN_CLICKED(IDC_RESET, OnReset)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetDlg message handlers

BOOL CSetDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();	
	temp_focus=m_focus_sw=focus;
	temp_fov=m_fov_sw=fov;
	temp_color_bk=color_bk;
	temp_color_text=color_text;
	temp_color_cordn=color_cordn;
	temp_color_net=color_net;
	UpdateData(FALSE);
	m_focus.SetRange(10,50);
	m_fov.SetRange(20,70);
	m_focus.SetPos(focus);
	m_fov.SetPos(fov);/////////////////////
	CWnd *pFocus=GetDlgItem(IDC_FOCUS),
		 *pFocus_SW=GetDlgItem(IDC_FOCUS_SW);
	temp_flag=flag_focus;
	m_flag_focus=!flag_focus;
	UpdateData(FALSE);
	if(!m_flag_focus)
	{
		pFocus->EnableWindow(TRUE);
		pFocus_SW->EnableWindow(TRUE);		
	}		
	else
	{
		pFocus->EnableWindow(FALSE);
		pFocus_SW->EnableWindow(FALSE);
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSetDlg::OnCustomdrawFocus() 
{
	focus=m_focus_sw=(BYTE)m_focus.GetPos();	
	UpdateData(FALSE);
	dcpoint->Invalidate(TRUE);
	
}

void CSetDlg::OnCustomdrawFov() 
{
	fov=m_fov_sw=(BYTE)m_fov.GetPos();
	UpdateData(FALSE);
	dcpoint->Invalidate(TRUE);
}

void CSetDlg::OnOK() 
{
	extern BOOL flag_setdlg;	
	flag_setdlg=0;
	DestroyWindow();
}

void CSetDlg::OnCancel() 
{
	extern BOOL flag_setdlg;
	focus=temp_focus;
	fov=temp_fov;
	flag_focus=temp_flag;
	color_bk=temp_color_bk;
	color_text=temp_color_text;
	color_cordn=temp_color_cordn;
	color_net=temp_color_net;
	dcpoint->Invalidate(TRUE);
	flag_setdlg=0;
	DestroyWindow();
}

void CSetDlg::OnCheck1() 
{
	UpdateData(TRUE);
	CWnd *pFocus=GetDlgItem(IDC_FOCUS),
		 *pFocus_SW=GetDlgItem(IDC_FOCUS_SW);	
	flag_focus=!m_flag_focus;
	if(!m_flag_focus)
	{
		pFocus->EnableWindow(TRUE);
		pFocus_SW->EnableWindow(TRUE);		
	}		
	else
	{
		pFocus->EnableWindow(FALSE);
		pFocus_SW->EnableWindow(FALSE);
	}
	dcpoint->Invalidate(TRUE);
}

void CSetDlg::OnPaint() 
{
	CPaintDC dc(this);
	CBrush Brush;
	CWnd  *pWnd;
	CRect rcClient;
	CDC *cdc;////////////////		
	//////////////////////
	pWnd=GetDlgItem(IDC_COLOR_BK);
	pWnd->UpdateWindow();
	cdc=pWnd->GetDC();
	Brush.CreateSolidBrush(color_bk);
	cdc->SelectObject(Brush);
	pWnd->GetClientRect(rcClient);
	cdc->Rectangle(rcClient);
	Brush.DeleteObject();
	//////////////////////
	pWnd=GetDlgItem(IDC_COLOR_CORDN);
	pWnd->UpdateWindow();
	cdc=pWnd->GetDC();
	Brush.CreateSolidBrush(color_cordn);
	cdc->SelectObject(Brush);
	pWnd->GetClientRect(rcClient);
	cdc->Rectangle(rcClient);
	Brush.DeleteObject();
	//////////////////////
	pWnd=GetDlgItem(IDC_COLOR_TEXT);
	pWnd->UpdateWindow();
	cdc=pWnd->GetDC();
	Brush.CreateSolidBrush(color_text);
	cdc->SelectObject(Brush);
	pWnd->GetClientRect(rcClient);
	cdc->Rectangle(rcClient);
	Brush.DeleteObject();
	//////////////////////
	pWnd=GetDlgItem(IDC_COLOR_NET);
	pWnd->UpdateWindow();
	cdc=pWnd->GetDC();
	Brush.CreateSolidBrush(color_net);
	cdc->SelectObject(Brush);
	pWnd->GetClientRect(rcClient);
	cdc->Rectangle(rcClient);
	Brush.DeleteObject();
	//////////
	ReleaseDC(cdc);
}

void CSetDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	if(point.x>80&&point.x<130&&point.y>30&&point.y<45)
	{
		CColorDialog choose(color_bk,0,this);
		if(choose.DoModal()==IDOK)
		{
			color_bk=choose.GetColor();
			this->OnPaint();
			dcpoint->Invalidate(TRUE);
		}
	}
	else
	if(point.x>80&&point.x<130&&point.y>48&&point.y<63)
	{
		CColorDialog choose(color_text,0,this);
		if(choose.DoModal()==IDOK)
		{
			color_text=choose.GetColor();
			this->OnPaint();
			dcpoint->Invalidate(TRUE);
		}
	}
	else
	if(point.x>80&&point.x<130&&point.y>66&&point.y<81)
	{
		CColorDialog choose(color_cordn,0,this);
		if(choose.DoModal()==IDOK)
		{
			color_cordn=choose.GetColor();
			this->OnPaint();
			dcpoint->Invalidate(TRUE);
		}
	}
	else
	if(point.x>80&&point.x<130&&point.y>84&&point.y<99)
	{
		CColorDialog choose(color_net,0,this);
		if(choose.DoModal()==IDOK)
		{
			color_net=choose.GetColor();
			this->OnPaint();
			dcpoint->Invalidate(TRUE);
		}
	}
	CDialog::OnLButtonDown(nFlags, point);
}


void CSetDlg::OnSetSave() 
{
	CFile fp;
	if(fp.Open("set.ini",CFile::modeWrite|CFile::modeCreate)==FALSE)
	{
		MessageBox("错误","文件创建失败!",MB_OK);
		return;
	}
	fp.Write(&color_bk,sizeof(COLORREF));
	fp.Write(&color_net,sizeof(COLORREF));
	fp.Write(&color_cordn,sizeof(COLORREF));
	fp.Write(&color_text,sizeof(COLORREF));
	fp.Write(&flag_focus,sizeof(BOOL));
	fp.Write(&focus,sizeof(BYTE));
	fp.Write(&fov,sizeof(BYTE));
	fp.Close();
}

void CSetDlg::OnReset() 
{
	color_net=RGB(192,192,192);
    color_cordn=RGB(0,0,0);
	color_bk=RGB(255,255,255);
	color_text=RGB(0,0,0);
	flag_focus=1;
	focus=20;
	fov=40;
	dcpoint->Invalidate(TRUE);
	CFile fp;
	if(fp.Open("set.ini",CFile::modeWrite|CFile::modeCreate)==FALSE)
	{
		MessageBox("错误","文件创建失败!",MB_OK);
		return;
	}
	fp.Write(&color_bk,sizeof(COLORREF));
	fp.Write(&color_net,sizeof(COLORREF));
	fp.Write(&color_cordn,sizeof(COLORREF));
	fp.Write(&color_text,sizeof(COLORREF));
	fp.Write(&flag_focus,sizeof(BOOL));
	fp.Write(&focus,sizeof(BYTE));
	fp.Write(&fov,sizeof(BYTE));
	fp.Close();	
}

⌨️ 快捷键说明

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