📄 pensetting.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 + -