📄 pendialog.cpp
字号:
// PenDialog.cpp : 实现文件
//
#include "stdafx.h"
#include "Draw.h"
#include "PenDialog.h"
// CPenDialog 对话框
IMPLEMENT_DYNAMIC(CPenDialog, CDialog)
CPenDialog::CPenDialog(CWnd* pParent /*=NULL*/)
: CDialog(CPenDialog::IDD, pParent)
, m_pWidth(0)
, m_pStyle(0)
{
}
CPenDialog::~CPenDialog()
{
}
void CPenDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_WIDTH, m_pWidth);
DDV_MinMaxInt(pDX, m_pWidth, 1, 6);
DDX_Control(pDX, IDC_WIDTH, m_pWidthEdit);
}
BEGIN_MESSAGE_MAP(CPenDialog, CDialog)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_DASH, OnBnClickedDash)
ON_BN_CLICKED(IDC_DOT, OnBnClickedDot)
ON_BN_CLICKED(IDC_SOLID, OnBnClickedSolid)
ON_EN_CHANGE(IDC_WIDTH, OnEnChangeWidth)
END_MESSAGE_MAP()
// CPenDialog 消息处理程序
BOOL CPenDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
GetDlgItem(IDC_SAMPLE)->GetWindowRect(&m_pRectSample);
ScreenToClient(&m_pRectSample);
m_pWidthEdit.LimitText(1);
return TRUE; // return TRUE unless you set the focus to a control
// 异常:OCX 属性页应返回 FALSE
}
void CPenDialog::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此添加消息处理程序代码
CPen NewPen, *pOldPen;
switch(m_pStyle)
{
case PEN_STYLE_SOLID:
NewPen.CreatePen(PS_SOLID,m_pWidth,RGB(0,0,0));
break;
case PEN_STYLE_DASH:
NewPen.CreatePen(PS_DASH,m_pWidth,RGB(0,0,0));
break;
case PEN_STYLE_DOT:
NewPen.CreatePen(PS_DOT,m_pWidth,RGB(0,0,0));
break;
default:
NewPen.CreatePen(PS_SOLID,m_pWidth,RGB(0,0,0));
break;
}
pOldPen=dc.SelectObject(&NewPen);
dc.MoveTo(m_pRectSample.left+10,m_pRectSample.top+25);
dc.LineTo(m_pRectSample.right-10,m_pRectSample.top+25);
dc.SelectObject(pOldPen);
// 不为绘图消息调用 CDialog::OnPaint()
}
void CPenDialog::OnBnClickedDash()
{
// TODO: 在此添加控件通知处理程序代码
if(IsDlgButtonChecked(IDC_DASH))
{
m_pStyle=PEN_STYLE_DASH;
InvalidateRect(&m_pRectSample);
UpdateWindow();
}
}
void CPenDialog::OnBnClickedDot()
{
// TODO: 在此添加控件通知处理程序代码
if(IsDlgButtonChecked(IDC_DOT))
{
m_pStyle=PEN_STYLE_DOT;
InvalidateRect(&m_pRectSample);
UpdateWindow();
}
}
void CPenDialog::OnBnClickedSolid()
{
// TODO: 在此添加控件通知处理程序代码
if(IsDlgButtonChecked(IDC_SOLID))
{
m_pStyle=PEN_STYLE_SOLID;
InvalidateRect(&m_pRectSample);
UpdateWindow();
}
}
void CPenDialog::OnEnChangeWidth()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
int tmp;
tmp=(int)GetDlgItemInt(IDC_WIDTH);
if((tmp>0)&&(tmp<7))
{
m_pWidth=tmp;
InvalidateRect(&m_pRectSample);
UpdateWindow();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -