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

📄 pensetting.cpp

📁 使用MFC编写的实现绘图功能的程序源代码
💻 CPP
字号:
// PenSetting.cpp : implementation file
//

#include "stdafx.h"
#include "SingleDraw.h"
#include "PenSetting.h"
#include "MainFrm.h"
#include "SingleDrawView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPenSetting dialog


CPenSetting::CPenSetting(CWnd* pParent /*=NULL*/)
	: CDialog(CPenSetting::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPenSetting)
	//}}AFX_DATA_INIT
}


void CPenSetting::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPenSetting)
	DDX_Control(pDX, IDC_SCROLLBAR_RED, m_scrollBarRed);
	DDX_Control(pDX, IDC_SCROLLBAR_BLUE, m_scrollBarBlue);
	DDX_Control(pDX, IDC_SCROLLBAR_PEN_WIDTH, m_ScrollBarPenWidth);
	DDX_Control(pDX, IDC_SCROLLBAR_GREEN, m_scrollBarGreen);
	DDX_Scroll(pDX, IDC_SCROLLBAR_GREEN, m_nGreen);
	DDX_Scroll(pDX, IDC_SCROLLBAR_BLUE, m_nBlue);
	DDX_Scroll(pDX, IDC_SCROLLBAR_RED, m_nRed);
	DDX_Scroll(pDX, IDC_SCROLLBAR_PEN_WIDTH, m_nPenWidth);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPenSetting, CDialog)
	//{{AFX_MSG_MAP(CPenSetting)
	ON_BN_CLICKED(ID_DEFAULT, OnDefault)
	ON_WM_VSCROLL()
	ON_WM_HSCROLL()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPenSetting message handlers

void CPenSetting::OnDefault() 
{
	// TODO: Add your control notification handler code here
	m_nBlue = 0;
	m_nGreen = 0;
	m_nRed = 0;
	m_nPenWidth = 1;

	CString str;
	str.Format("%d", m_nPenWidth);
	SetDlgItemText(IDC_PEN_WIDTH, str);

	str.Format("%d", m_nRed);
	SetDlgItemText(IDC_STATIC_RED, str);
	
	str.Format("%d", m_nGreen);
	SetDlgItemText(IDC_STATIC_GREEN, str);

	str.Format("%d", m_nBlue);
	SetDlgItemText(IDC_STATIC_BLUE, str);

	UpdateData(false);
}

void CPenSetting::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	CString str;

	if(pScrollBar == &m_scrollBarRed)
	{	
		switch(nSBCode)
		{
		case SB_LINEDOWN:
			
			if(m_nRed < 255)	m_nRed++;
			str.Format("%d", m_nRed);
			SetDlgItemText(IDC_STATIC_RED, str);
			break;

		case SB_LINEUP:

			if(m_nRed > 0)		m_nRed--;
			str.Format("%d", m_nRed);
			SetDlgItemText(IDC_STATIC_RED, str);
			break;

		case SB_THUMBTRACK:

			m_nRed = nPos;
			str.Format("%d", m_nRed);
			SetDlgItemText(IDC_STATIC_RED, str);
			break;

		case SB_THUMBPOSITION:

			m_nRed = nPos;
			str.Format("%d", m_nRed);
			SetDlgItemText(IDC_STATIC_RED, str);
			break;

		default:	1;

		}	
		m_scrollBarRed.SetScrollPos(m_nRed);
	}
	else if(pScrollBar == &m_scrollBarGreen)
	{
		switch(nSBCode)
		{
		case SB_LINEDOWN:
			
			if(m_nGreen < 255)	m_nGreen++;
			str.Format("%d", m_nGreen);
			SetDlgItemText(IDC_STATIC_GREEN, str);
			break;

		case SB_LINEUP:

			if(m_nGreen > 0)		m_nGreen--;
			str.Format("%d", m_nGreen);
			SetDlgItemText(IDC_STATIC_GREEN, str);
			break;

		case SB_THUMBTRACK:

			m_nGreen = nPos;
			str.Format("%d", m_nGreen);
			SetDlgItemText(IDC_STATIC_GREEN, str);
			break;

		case SB_THUMBPOSITION:

			m_nGreen = nPos;
			str.Format("%d", m_nGreen);
			SetDlgItemText(IDC_STATIC_GREEN, str);
			break;

		default:	1;

		}	
		m_scrollBarGreen.SetScrollPos(m_nGreen);
	}
	else
	{
		switch(nSBCode)
		{
		case SB_LINEDOWN:
			
			if(m_nBlue < 255)	m_nBlue++;
			str.Format("%d", m_nBlue);
			SetDlgItemText(IDC_STATIC_BLUE, str);
			break;

		case SB_LINEUP:

			if(m_nBlue > 0)		m_nBlue--;
			str.Format("%d", m_nBlue);
			SetDlgItemText(IDC_STATIC_BLUE, str);
			break;

		case SB_THUMBTRACK:

			m_nBlue = nPos;
			str.Format("%d", m_nBlue);
			SetDlgItemText(IDC_STATIC_BLUE, str);
			break;

		case SB_THUMBPOSITION:

			m_nBlue = nPos;
			str.Format("%d", m_nBlue);
			SetDlgItemText(IDC_STATIC_BLUE, str);
			break;

		default:	1;

		}	
		m_scrollBarBlue.SetScrollPos(m_nBlue);
	}
}

void CPenSetting::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	
	if(pScrollBar == & m_ScrollBarPenWidth)
	{	
		CString str;
		switch(nSBCode)
		{
		case SB_LINERIGHT:
			if(m_nPenWidth < 20)		m_nPenWidth++;
			str.Format("%d", m_nPenWidth);		
			SetDlgItemText(IDC_PEN_WIDTH, str);
			break;

		case SB_LINELEFT:
			if(m_nPenWidth > 1)			m_nPenWidth--;
			str.Format("%d", m_nPenWidth);
			SetDlgItemText(IDC_PEN_WIDTH, str);
			break;

		default:	;
		}
	}
}

void CPenSetting::OnOK() 
{
	// TODO: Add extra validation here
	
	if(m_nPenWidth <= 20 && m_nPenWidth >= 1)
	{
		CMainFrame *pMainFrame = NULL;
		CSingleDrawView *pView = NULL;

		pMainFrame  = (CMainFrame *)AfxGetMainWnd();
		pView		= (CSingleDrawView *)pMainFrame->GetActiveView();

		// To create pen for view use.
		pView->SetPen(PS_SOLID, m_nPenWidth, RGB(m_nRed, m_nGreen, m_nBlue));
		EndDialog(true);
	}
}

void CPenSetting::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	EndDialog(true);
}

BOOL CPenSetting::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	InitPenSet();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPenSetting::InitPenSet()
{
	m_scrollBarRed.SetScrollRange(0, 255);
	m_scrollBarGreen.SetScrollRange(0, 255);
	m_scrollBarBlue.SetScrollRange(0, 255);

	CMainFrame *pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CSingleDrawView *pView = (CSingleDrawView *)pMainFrame->GetActiveView();
	
	m_nRed = GetRValue(pView->m_colorRef);
	m_nGreen = GetGValue(pView->m_colorRef);
	m_nBlue = GetBValue(pView->m_colorRef);
	m_nPenWidth = pView->m_nPenWidth;

	CString str;
	str.Format("%d", m_nPenWidth);
	SetDlgItemText(IDC_PEN_WIDTH, str);

	str.Format("%d", m_nRed);
	SetDlgItemText(IDC_STATIC_RED, str);
	
	str.Format("%d", m_nGreen);
	SetDlgItemText(IDC_STATIC_GREEN, str);

	str.Format("%d", m_nBlue);
	SetDlgItemText(IDC_STATIC_BLUE, str);

	UpdateData(false);
}

⌨️ 快捷键说明

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