【VC开源代码栏目提醒】:网学会员为需要VC开源代码的朋友们搜集整理了DrawToolDlg.cpp相关资料,希望对各位网友有所帮助!
// DrawToolDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "EasyDraw.h"
#include "DrawToolDlg.h"
// CDrawToolDlg 对话框
IMPLEMENT_DYNAMIC(CDrawToolDlg, CDialog)
/******************************************************************************
* 作用: 构造函数
******************************************************************************/
CDrawToolDlg::CDrawToolDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDrawToolDlg::IDD, pParent)
, m_nLineType(0)
, m_nLineWidth(1)
, m_bShow(true)
{
m_clrColor = RGB(0, 0, 0);
}
CDrawToolDlg::~CDrawToolDlg()
{
}
void CDrawToolDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STATIC_COLOR, m_stColor);
DDX_Control(pDX, IDC_STATIC_PREV, m_stPrev);
DDX_Text(pDX, IDC_EDIT_LINE_WIDTH, m_nLineWidth);
}
BEGIN_MESSAGE_MAP(CDrawToolDlg, CDialog)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_RADIO_SOLID, &CDrawToolDlg::OnBnClickedRadioSolid)
ON_BN_CLICKED(IDC_RADIO_DASH, &CDrawToolDlg::OnBnClickedRadioDash)
ON_BN_CLICKED(IDC_RADIO_DOT, &CDrawToolDlg::OnBnClickedRadioDot)
ON_BN_CLICKED(IDC_RADIO_DASHDOT, &CDrawToolDlg::OnBnClickedRadioDashdot)
ON_BN_CLICKED(IDC_RADIO_DASHDOTDOT, &CDrawToolDlg::OnBnClickedRadioDashdotdot)
ON_EN_CHANGE(IDC_EDIT_LINE_WIDTH, &CDrawToolDlg::OnEnChangeEditLineWidth)
ON_BN_CLICKED(IDC_CHANGE_COLOR, &CDrawToolDlg::OnBnClickedChangeColor)
END_MESSAGE_MAP()
/******************************************************************************
* 作用: 对话框的初始化
******************************************************************************/
BOOL CDrawToolDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CSpinButtonCtrl* spinCtrl = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_LINE_WIDTH);
// 关联文本框
spinCtrl->SetBuddy(GetDlgItem(IDC_EDIT_LINE_WIDTH));
spinCtrl->SetRange(1, 30); // 调节范围
spinCtrl->SetBase(10); // 调节进制
// “直线类型”默认选中第一项
CButton* typeBtn = (CButton*)GetDlgItem(IDC_RADIO_SOLID);
typeBtn->SetCheck(TRUE);
return TRUE;
}
/******************************************************************************
* 作用: 无模式对话框的释放
******************************************************************************/
void CDrawToolDlg::PostNcDestroy()
{
delete this;
CDialog::PostNcDestroy();
}
/******************************************************************************
* 作用: 绘制对话框
******************************************************************************/
void CDrawToolDlg::OnPaint()
{
CPaintDC dc(this);
UpdateDialog(); // 更新对话框
}
/******************************************************************************
* 作用: 绘制对话框中颜色框和预览框
******************************************************************************/
void CDrawToolDlg::UpdateDialog(void)
{
UpdateData(TRUE);
CDC* pColorDC = m_stColor.GetDC(); // 颜色框CDC指针
CRect colorRect; // 颜色框大小
CBrush brush(m_clrColor); // 当前颜色
// 利用当前颜色填充颜色框
m_stColor.GetClientRect(colorRect);
pColorDC->FillRect(colorRect, &brush);
ReleaseDC(pColorDC);
// 根据当前直线类型、颜色、宽度创建铅笔对象
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID;
logBrush.lbColor = m_clrColor;
CPen pen(m_nLineType | PS_GEOMETRIC | PS_ENDCAP_ROUND,
m_nLineWidth, &logBrush);
CRect prevRect; // 预览框大小
m_stPrev.GetClientRect(prevRect);
CDC* pPrevDC = m_stPrev.GetDC(); // 预