📄 ctrlpage2.cpp
字号:
// CtrlPage2.cpp : 实现文件
//
#include "stdafx.h"
#include "ControlUse.h"
#include "CtrlPage2.h"
// CCtrlPage2 对话框
IMPLEMENT_DYNAMIC(CCtrlPage2, CPropertyPage)
CCtrlPage2::CCtrlPage2()
: CPropertyPage(CCtrlPage2::IDD)
, m_Red(0)
, m_Green(0)
, m_Blue(0)
{
m_Color=RGB(0,0,0);
}
CCtrlPage2::~CCtrlPage2()
{
}
void CCtrlPage2::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_RED, m_EditRed);
DDX_Control(pDX, IDC_EDIT_GREEN, m_EditGreen);
DDX_Control(pDX, IDC_EDIT_BLUE, m_EditBlue);
DDX_Control(pDX, IDC_SCROLLBAR_RED, m_ScrollRed);
DDX_Control(pDX, IDC_SCROLLBAR_GREEN, m_ScrollGreen);
DDX_Control(pDX, IDC_SCROLLBAR_BLUE, m_ScrollBlue);
DDX_Text(pDX, IDC_EDIT_RED, m_Red);
DDV_MinMaxInt(pDX, m_Red, 0, 255);
DDX_Text(pDX, IDC_EDIT_GREEN, m_Green);
DDV_MinMaxInt(pDX, m_Green, 0, 255);
DDX_Text(pDX, IDC_EDIT_BLUE, m_Blue);
DDV_MinMaxInt(pDX, m_Blue, 0, 255);
}
BEGIN_MESSAGE_MAP(CCtrlPage2, CPropertyPage)
ON_WM_PAINT()
ON_WM_HSCROLL()
ON_EN_CHANGE(IDC_EDIT_RED, OnEnChangeEditRed)
ON_EN_CHANGE(IDC_EDIT_GREEN, OnEnChangeEditGreen)
ON_EN_CHANGE(IDC_EDIT_BLUE, OnEnChangeEditBlue)
END_MESSAGE_MAP()
// CCtrlPage2 消息处理程序
BOOL CCtrlPage2::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: 在此添加额外的初始化
GetDlgItem(IDC_COLOR_SAMPLE)->GetWindowRect(&m_ColorSample);
ScreenToClient(&m_ColorSample);
m_ColorSample.top+=15;
SCROLLINFO info;
info.cbSize = sizeof(SCROLLINFO);
info.fMask = SIF_ALL;
info.nMin = 0;
info.nMax = 259;
info.nPage = 5;
info.nPos = 0;
info.nTrackPos = 5;
m_ScrollRed.SetScrollInfo(&info);
m_ScrollGreen.SetScrollInfo(&info);
m_ScrollBlue.SetScrollInfo(&info);
return TRUE; // return TRUE unless you set the focus to a control
// 异常:OCX 属性页应返回 FALSE
}
void CCtrlPage2::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此添加消息处理程序代码
// 不为绘图消息调用 CPropertyPage::OnPaint()
m_Color=RGB(m_Red,m_Green,m_Blue);
CBrush NewBrush,*pOldBrush;
NewBrush.CreateSolidBrush(m_Color);
pOldBrush=dc.SelectObject(&NewBrush);
dc.Rectangle(&m_ColorSample);
dc.SelectObject(pOldBrush);
}
void CCtrlPage2::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int minpos;
int maxpos;
pScrollBar->GetScrollRange(&minpos, &maxpos);
maxpos = pScrollBar->GetScrollLimit();
// Get the current position of scroll box.
int curpos = pScrollBar->GetScrollPos();
// Determine the new position of scroll box.
switch (nSBCode)
{
case SB_LEFT: // Scroll to far left.
curpos = minpos;
break;
case SB_RIGHT: // Scroll to far right.
curpos = maxpos;
break;
case SB_ENDSCROLL: // End scroll.
break;
case SB_LINELEFT: // Scroll left.
if (curpos > minpos)
curpos--;
break;
case SB_LINERIGHT: // Scroll right.
if (curpos < maxpos)
curpos++;
break;
case SB_PAGELEFT: // Scroll one page left.
{
// Get the page size.
SCROLLINFO info;
pScrollBar->GetScrollInfo(&info, SIF_ALL);
if (curpos > minpos)
curpos = max(minpos, curpos - (int) info.nPage);
}
break;
case SB_PAGERIGHT: // Scroll one page right.
{
// Get the page size.
SCROLLINFO info;
pScrollBar->GetScrollInfo(&info, SIF_ALL);
if (curpos < maxpos)
curpos = min(maxpos, curpos + (int) info.nPage);
}
break;
case SB_THUMBPOSITION: // Scroll to absolute position. nPos is the position
curpos = nPos; // of the scroll box at the end of the drag operation.
break;
case SB_THUMBTRACK: // Drag scroll box to specified position. nPos is the
curpos = nPos; // position that the scroll box has been dragged to.
break;
}
// Set the new position of the thumb (scroll box).
pScrollBar->SetScrollPos(curpos);
CString str;
if(pScrollBar==&m_ScrollRed)
{
m_Red=m_ScrollRed.GetScrollPos();
str.Format("%d",m_Red);
m_EditRed.SetWindowText(str);
}
if(pScrollBar==&m_ScrollGreen)
{
m_Green=m_ScrollGreen.GetScrollPos();
str.Format("%d",m_Green);
m_EditGreen.SetWindowText(str);
}
if(pScrollBar==&m_ScrollBlue)
{
m_Blue=m_ScrollBlue.GetScrollPos();
str.Format("%d",m_Blue);
m_EditBlue.SetWindowText(str);
}
InvalidateRect(&m_ColorSample);
UpdateWindow();
CPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CCtrlPage2::OnEnChangeEditRed()
{
// TODO: 在此添加控件通知处理程序代码
m_Red=(int)GetDlgItemInt(IDC_EDIT_RED);
m_ScrollRed.SetScrollPos(m_Red);
InvalidateRect(&m_ColorSample);
UpdateWindow();
}
void CCtrlPage2::OnEnChangeEditGreen()
{
// TODO: 在此添加控件通知处理程序代码
m_Green=(int)GetDlgItemInt(IDC_EDIT_GREEN);
m_ScrollGreen.SetScrollPos(m_Green);
InvalidateRect(&m_ColorSample);
UpdateWindow();
}
void CCtrlPage2::OnEnChangeEditBlue()
{
// TODO: 在此添加控件通知处理程序代码
m_Blue=(int)GetDlgItemInt(IDC_EDIT_BLUE);
m_ScrollBlue.SetScrollPos(m_Blue);
InvalidateRect(&m_ColorSample);
UpdateWindow();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -