248 lines
7.5 KiB
C++
248 lines
7.5 KiB
C++
// RoundedButtonSamplesDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "RoundedButton.h"
|
|
#include "RoundedButtonSamplesDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CRoundedButtonSamplesDlg property page
|
|
|
|
IMPLEMENT_DYNCREATE(CRoundedButtonSamplesDlg, CPropertyPage)
|
|
|
|
CRoundedButtonSamplesDlg::CRoundedButtonSamplesDlg() : CPropertyPage(CRoundedButtonSamplesDlg::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CRoundedButtonSamplesDlg)
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
CRoundedButtonSamplesDlg::~CRoundedButtonSamplesDlg()
|
|
{
|
|
}
|
|
|
|
void CRoundedButtonSamplesDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CRoundedButtonSamplesDlg)
|
|
DDX_Control(pDX, IDC_STATIC_BUTTONS_TOGGLE, m_sepToggleButtons);
|
|
DDX_Control(pDX, IDC_BUTTON_TOGGLE_4, m_btnToggle4);
|
|
DDX_Control(pDX, IDC_BUTTON_TOGGLE_3, m_btnToggle3);
|
|
DDX_Control(pDX, IDC_BUTTON_TOGGLE_2, m_btnToggle2);
|
|
DDX_Control(pDX, IDC_BUTTON_TOGGLE_1, m_btnToggle1);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_IMAGE_7, m_btnWithImage7);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_IMAGE_6, m_btnWithImage6);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_IMAGE_5, m_btnWithImage5);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_IMAGE_4, m_btnWithImage4);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_IMAGE_3, m_btnWithImage3);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_IMAGE_2, m_btnWithImage2);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_IMAGE_1, m_btnWithImage1);
|
|
DDX_Control(pDX, IDC_STATIC_BUTTONS_WITH_IMAGES, m_sepButtonsWithImages);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_TEXT_MULTILINE_CUSTOM, m_btnWithTextMultilineCustom);
|
|
DDX_Control(pDX, IDC_STATIC_BUTTONS_WITH_TEXT, m_sepButtonsWithText);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_TEXT_3, m_btnWithText3);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_TEXT_2, m_btnWithText2);
|
|
DDX_Control(pDX, IDC_BUTTON_WITH_TEXT_1, m_btnWithText1);
|
|
DDX_Control(pDX, IDC_BUTTON_ROUND_5, m_btnRound5);
|
|
DDX_Control(pDX, IDC_BUTTON_ROUND_4, m_btnRound4);
|
|
DDX_Control(pDX, IDC_BUTTON_ROUND_3, m_btnRound3);
|
|
DDX_Control(pDX, IDC_BUTTON_ROUND_2, m_btnRound2);
|
|
DDX_Control(pDX, IDC_BUTTON_ROUND_1, m_btnRound1);
|
|
DDX_Control(pDX, IDC_STATIC_ROUND_BUTTONS, m_sepRoundButtons);
|
|
//}}AFX_DATA_MAP
|
|
DDX_Toggle(pDX, IDC_BUTTON_TOGGLE_1, m_bOption1);
|
|
DDX_Toggle(pDX, IDC_BUTTON_TOGGLE_2, m_bOption2);
|
|
DDX_Toggle(pDX, IDC_BUTTON_TOGGLE_3, m_bOption3);
|
|
DDX_Toggle(pDX, IDC_BUTTON_TOGGLE_4, m_bOption4);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CRoundedButtonSamplesDlg, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CRoundedButtonSamplesDlg)
|
|
//}}AFX_MSG_MAP
|
|
ON_NOTIFY_RANGE(OXBBN_TOGGLE, IDC_BUTTON_TOGGLE_1, IDC_BUTTON_TOGGLE_4, OnToggle)
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CRoundedButtonSamplesDlg message handlers
|
|
|
|
BOOL CRoundedButtonSamplesDlg::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
|
|
// separators
|
|
m_sepRoundButtons.SetTextColor(RGB(128, 128, 128));
|
|
m_sepButtonsWithText.SetTextColor(RGB(128, 128, 128));
|
|
m_sepButtonsWithImages.SetTextColor(RGB(128, 128, 128));
|
|
m_sepToggleButtons.SetTextColor(RGB(128, 128, 128));
|
|
|
|
// setup round buttons
|
|
SetupRoundButton(&m_btnRound1,RGB(0xB0, 0xB0, 0xB0)); // light grey
|
|
SetupRoundButton(&m_btnRound2,RGB(0x00, 0x93, 0x00)); // green
|
|
SetupRoundButton(&m_btnRound3,RGB(0xFF, 0x68, 0x20)); // orange
|
|
SetupRoundButton(&m_btnRound4,RGB(0x7B, 0x7B, 0xC0)); // blue-grey
|
|
SetupRoundButton(&m_btnRound5,RGB(0x8B, 0x8B, 0x00)); // dark yellow
|
|
//
|
|
//////////////////////////////
|
|
|
|
// setup buttons with text
|
|
m_btnWithText1.SetButtonColor(RGB(0x38, 0x8E, 0x8E)); // teal
|
|
m_btnWithText2.SetButtonColor(RGB(0x38, 0x8E, 0x8E)); // teal
|
|
m_btnWithText3.SetButtonColor(RGB(0x3C, 0xB3, 0x71)); // sea green
|
|
|
|
m_btnWithTextMultilineCustom.SetButtonColor(RGB(0xFF, 0xAD, 0x5B)); // light orange
|
|
m_btnWithTextMultilineCustom.SetTextColor(RGB(128,0,0));
|
|
static CFont fontCustom;
|
|
fontCustom.CreatePointFont(140,_T("Times New Roman"));
|
|
m_btnWithTextMultilineCustom.SetTextFont(&fontCustom);
|
|
//
|
|
////////////////////////////////
|
|
|
|
// setup buttons with images
|
|
static CFont fontImage;
|
|
fontImage.CreatePointFont(100,_T("Tahoma"));
|
|
VERIFY(m_btnWithImage1.LoadIcon(IDI_ICON_EARTH,FALSE,32,32));
|
|
m_btnWithImage1.SetButtonColor(RGB(0x68, 0x83, 0x8B)); // pale blue
|
|
m_btnWithImage1.SetTextFont(&fontImage);
|
|
VERIFY(m_btnWithImage2.LoadIcon(IDI_ICON_MOON,FALSE,32,32));
|
|
m_btnWithImage2.SetButtonColor(RGB(0x68, 0x83, 0x8B)); // pale blue
|
|
m_btnWithImage2.SetTextFont(&fontImage);
|
|
VERIFY(m_btnWithImage3.LoadIcon(IDI_ICON_JUPITER,FALSE,32,32));
|
|
m_btnWithImage3.SetButtonColor(RGB(0x68, 0x83, 0x8B)); // pale blue
|
|
m_btnWithImage3.SetTextFont(&fontImage);
|
|
|
|
SetupImageButton(&m_btnWithImage4,IDI_ICON_INFO);
|
|
SetupImageButton(&m_btnWithImage5,IDI_ICON_QUESTION);
|
|
SetupImageButton(&m_btnWithImage6,IDI_ICON_EXCLAMATION);
|
|
SetupImageButton(&m_btnWithImage7,IDI_ICON_CHECK);
|
|
//
|
|
/////////////////////////////////////////
|
|
|
|
// setup toggle buttons
|
|
SetupToggleButton(&m_btnToggle1);
|
|
SetupToggleButton(&m_btnToggle2);
|
|
SetupToggleButton(&m_btnToggle3);
|
|
SetupToggleButton(&m_btnToggle4);
|
|
|
|
m_bOption1=TRUE;
|
|
m_bOption2=FALSE;
|
|
m_bOption3=FALSE;
|
|
m_bOption4=FALSE;
|
|
ResetImages(TRUE);
|
|
//
|
|
/////////////////////////////////////////
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
|
|
void CRoundedButtonSamplesDlg::SetupRoundButton(COXRoundedButton* pButton,
|
|
COLORREF clr)
|
|
{
|
|
ASSERT(pButton!=NULL);
|
|
ASSERT(::IsWindow(pButton->GetSafeHwnd()));
|
|
|
|
pButton->SetButtonColor(clr);
|
|
|
|
CRect rect;
|
|
pButton->GetWindowRect(rect);
|
|
int nRadius=rect.Width()/2;
|
|
pButton->SetSphereExternalRadius(nRadius);
|
|
pButton->SetSphereInternalRadius(nRadius-5);
|
|
}
|
|
|
|
|
|
void CRoundedButtonSamplesDlg::SetupImageButton(COXRoundedButton* pButton,
|
|
UINT nIconID)
|
|
{
|
|
ASSERT(pButton!=NULL);
|
|
ASSERT(::IsWindow(pButton->GetSafeHwnd()));
|
|
|
|
VERIFY(pButton->LoadIcon(nIconID,FALSE,32,32));
|
|
|
|
CRect rect;
|
|
pButton->GetWindowRect(rect);
|
|
int nRadius=rect.Width()/2;
|
|
pButton->SetSphereExternalRadius(nRadius);
|
|
pButton->SetSphereInternalRadius(nRadius-5);
|
|
}
|
|
|
|
|
|
void CRoundedButtonSamplesDlg::SetupToggleButton(COXRoundedButton* pButton)
|
|
{
|
|
pButton->SetButtonColor(RGB(0xD2, 0xB4, 0x8C)); // tan
|
|
pButton->SetStyleEx(OXBB_EX_TOGGLE);
|
|
VERIFY(pButton->LoadIcon(IDI_ICON_OFF,FALSE,16,16));
|
|
}
|
|
|
|
|
|
void CRoundedButtonSamplesDlg::OnToggle(UINT id, NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
ResetImages(FALSE);
|
|
|
|
m_bOption1=FALSE;
|
|
m_bOption2=FALSE;
|
|
m_bOption3=FALSE;
|
|
m_bOption4=FALSE;
|
|
|
|
switch(id)
|
|
{
|
|
case IDC_BUTTON_TOGGLE_1:
|
|
m_bOption1=TRUE;
|
|
break;
|
|
case IDC_BUTTON_TOGGLE_2:
|
|
m_bOption2=TRUE;
|
|
break;
|
|
case IDC_BUTTON_TOGGLE_3:
|
|
m_bOption3=TRUE;
|
|
break;
|
|
case IDC_BUTTON_TOGGLE_4:
|
|
m_bOption4=TRUE;
|
|
break;
|
|
default:
|
|
ASSERT(FALSE);
|
|
}
|
|
ResetImages(TRUE);
|
|
|
|
UpdateData(FALSE);
|
|
|
|
*result=0;
|
|
}
|
|
|
|
|
|
void CRoundedButtonSamplesDlg::ResetImages(BOOL bSet)
|
|
{
|
|
if(m_bOption1)
|
|
{
|
|
VERIFY(m_btnToggle1.LoadIcon((bSet ? IDI_ICON_ON : IDI_ICON_OFF),FALSE,16,16));
|
|
m_btnToggle1.RedrawWindow();
|
|
}
|
|
else if(m_bOption2)
|
|
{
|
|
VERIFY(m_btnToggle2.LoadIcon((bSet ? IDI_ICON_ON : IDI_ICON_OFF),FALSE,16,16));
|
|
m_btnToggle2.RedrawWindow();
|
|
}
|
|
else if(m_bOption3)
|
|
{
|
|
VERIFY(m_btnToggle3.LoadIcon((bSet ? IDI_ICON_ON : IDI_ICON_OFF),FALSE,16,16));
|
|
m_btnToggle3.RedrawWindow();
|
|
}
|
|
else if(m_bOption4)
|
|
{
|
|
VERIFY(m_btnToggle4.LoadIcon((bSet ? IDI_ICON_ON : IDI_ICON_OFF),FALSE,16,16));
|
|
m_btnToggle4.RedrawWindow();
|
|
}
|
|
}
|