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

📄 setdlg.cpp

📁 这是书上的代码
💻 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 + -