📄 setdlg.cpp
字号:
// SetDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "Viewer.h"
#include "SetDlg.h"
#include "afxstr.h"
#include "atlimage.h"
// CSetDlg 对话框
IMPLEMENT_DYNAMIC(CSetDlg, CDialog)
CSetDlg::CSetDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSetDlg::IDD, pParent)
, m_byteRed(0)
, m_byteGreen(0)
, m_byteBlue(0)
, m_bEditIsOK(FALSE)
{
m_bkColor = RGB( 255, 255, 255 ); // 初值为白色
}
CSetDlg::~CSetDlg()
{
}
void CSetDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_R, m_byteRed);
DDV_MinMaxByte(pDX, m_byteRed, 0, 255);
DDX_Control(pDX, IDC_SPIN_R, m_spinR);
DDX_Control(pDX, IDC_SPIN_G, m_spinG);
DDX_Control(pDX, IDC_SPIN_B, m_spinB);
DDX_Text(pDX, IDC_EDIT_G, m_byteGreen);
DDV_MinMaxByte(pDX, m_byteGreen, 0, 255);
DDX_Text(pDX, IDC_EDIT_B, m_byteBlue);
}
BEGIN_MESSAGE_MAP(CSetDlg, CDialog)
ON_WM_PAINT()
ON_EN_UPDATE(IDC_EDIT_R, OnEnUpdateEditR)
ON_EN_UPDATE(IDC_EDIT_G, OnEnUpdateEditG)
ON_EN_UPDATE(IDC_EDIT_B, OnEnUpdateEditB)
END_MESSAGE_MAP()
// CSetDlg 消息处理程序
void CSetDlg::OnOK()
{
UpdateData(); // 使输入的数据有效
m_bkColor = RGB( m_byteRed, m_byteGreen, m_byteBlue );
//DestroyWindow(); // 关闭并销毁对话框窗口
CDialog::OnOK(); // 取消默认调用
}
void CSetDlg::OnCancel()
{
//DestroyWindow(); // 关闭并销毁对话框窗口
CDialog::OnCancel(); // 取消默认调用
}
BOOL CSetDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置旋转控件的范围
m_spinR.SetRange( 0, 255 );
m_spinG.SetRange( 0, 255 );
m_spinB.SetRange( 0, 255 );
// 获取当前背景颜色分量
m_byteRed = GetRValue( m_bkColor ); // 获取红色分量值
m_byteGreen = GetGValue( m_bkColor ); // 获取绿色分量值
m_byteBlue = GetBValue( m_bkColor ); // 获取蓝色分量值
UpdateData( FALSE ); // 显示在控件中
m_bEditIsOK = TRUE;
return TRUE;
}
void CSetDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CWnd* pWnd = GetDlgItem(IDC_DRAW); // 获得静态控件的窗口指针
CDC* pDC = pWnd->GetDC(); // 获得窗口中的设备环境指针
pWnd->Invalidate();
pWnd->UpdateWindow();
CRect rcClient;
pWnd->GetClientRect( rcClient ); // 获取静态文本框的客户区大小
COLORREF bkColor = RGB( m_byteRed, m_byteGreen, m_byteBlue );
pDC->FillSolidRect( rcClient, bkColor );
// 用指定的颜色填充
// 以下是显示预览文字
CFont font;
font.CreateFontIndirect( &m_txtLogfont );
CFont *oldFont = pDC->SelectObject( &font );
pDC->SetBkMode( TRANSPARENT ); // 设置背景模式为透明方式
pDC->SetTextColor( m_txtColor );
pDC->DrawText( "欢迎你进入Visual C++ .NET世界!", rcClient,
DT_CENTER | DT_VCENTER | DT_SINGLELINE ); // 居中显示文本
pDC->SelectObject( oldFont );
pWnd->ReleaseDC(pDC); // 释放设备环境指针
}
void CSetDlg::OnEnUpdateEditR()
{
if ( !m_bEditIsOK ) return;
UpdateData( TRUE );
Invalidate( FALSE );
}
void CSetDlg::OnEnUpdateEditG()
{
if ( !m_bEditIsOK ) return;
UpdateData( TRUE );
Invalidate( FALSE );
}
void CSetDlg::OnEnUpdateEditB()
{
if ( !m_bEditIsOK ) return;
UpdateData( TRUE );
Invalidate( FALSE );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -