【VC开源代码栏目提醒】:网学会员,鉴于大家对VC开源代码十分关注,论文会员在此为大家搜集整理了“BackColorDlg.cpp”一文,供大家参考学习!
// BackColorDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TestDialog.h"
#include "BackColorDlg.h"
#include "TestDialogDoc.h"
#include "TestDialogView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_REDRAW WM_USER+5
/////////////////////////////////////////////////////////////////////////////
// CBackColorDlg dialog
CBackColorDlg::CBackColorDlg(CWnd* pParent /*=NULL*/)
// : CDialog(CBackColorDlg::IDD, pParent)
{
m_pParentWnd=(CTestDialogView *) pParent;
//{{AFX_DATA_INIT(CBackColorDlg)
m_nBlue = 0;
m_nGreen = 0;
m_nRed = 0;
//}}AFX_DATA_INIT
}
void CBackColorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBackColorDlg)
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_Scroll(pDX, IDC_SCROLLBAR_BLUE, m_nBlue);
DDX_Scroll(pDX, IDC_SCROLLBAR_GREEN, m_nGreen);
DDX_Scroll(pDX, IDC_SCROLLBAR_RED, m_nRed);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBackColorDlg, CDialog)
//{{AFX_MSG_MAP(CBackColorDlg)
ON_WM_HSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBackColorDlg message handlers
void CBackColorDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int nCurPos,nStep=5;
nCurPos=pScrollBar->GetScrollPos();
switch(nSBCode)
{
//拖动滑块
case SB_THUMBPOSITION:
pScrollBar->SetScrollPos(nPos);
break;
//按下左边的箭头
case SB_LINEUP:
if((nCurPos-nStep)>0)
{
nCurPos-=nStep;
}
else
{
nCurPos=0;
}
pScrollBar->SetScrollPos(nCurPos);
break;
//按下右边的箭头
case SB_LINEDOWN:
if((nCurPos+nStep)<255)
{
nCurPos+=nStep;
}
else
{
nCurPos=255;
}
pScrollBar->SetScrollPos(nCurPos);
break;
default:
break;
}
//根据选中的滚动条给相应的变量赋值
if(pScrollBar==&m_scrollRed)
m_nRed=nCurPos;
else if(pScrollBar==&m_scrollGreen)
m_nGreen=nCurPos;
else
m_nBlue=nCurPos;
//绘制图片框
CWnd* pWnd=GetDlgItem(IDC_PICTURE_COLOR);
CRect rect;
pWnd->GetClientRect(rect);
CDC* pDC=pWnd->GetDC();
CBrush* pNewBrush=new CBrush;
pNewBrush->CreateSolidBrush(RGB(m_nRed,m_nGreen,m_nBlue));
CBrush* pOldBrush=pDC->SelectObject(pNewBrush);
pDC->Rectangle(rect);
pDC->SelectObject(pOldBrush);
delete pNewBrush;
//重新绘制视窗口
if(m_pParentWnd!=NULL)
{
m_pParentWnd->m_nBackColor=RGB(m_nRed,m_nGreen,m_nBlue);
CDC* pDC=m_pParentWnd->GetDC();
m_pParentWnd->Redraw(pDC);
}
}
BOOL CBackColorDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//设置红色滚动条的范围与当前值
m_scrollRed.SetScrollRange(0,255);
m_scrollRed.SetScrollPos(m_nRed);
//设置绿色滚动条的范围与当前值
m_scrollGreen.SetScrollRange(0,255);
m_scrollGreen.SetScrollPos(m_nRed);
//设置蓝色滚动条的范围与当前值
m_scrollBlue.SetScrollRange(0,255);
m_scrollRed.SetScrollPos(m_nRed);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CBackColorDlg::Create()
{
return CDialog::Create(CBackColorDlg::IDD);
}
void CBackColorDlg::OnCancel()
{
//不要调用CDialog::OnCancel();
if(m_pParentWnd!=NULL)
{
DestroyWindow();
}
}
void CBackColorDlg::OnOK()
{
//不要调用CDialog::OnOK();
if(m_pParentWnd!=NULL)
{
DestroyWindow();
}
}
上一篇:
avi_file.cpp
下一篇:
顶棚装饰工程施工