2025-11-27 16:46:48 +09:00

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();
}
}