www.pudn.com > ToolBarEx_demo.zip > CustomizeDialog.cpp
/////////////////////////////////////////////////////////////////////////////
// CustomizeDialog.cpp: implementation of the CCustomizeDialog class.
//
/////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2001 by Nikolay Denisov. All rights reserved.
//
// This code is free for personal and commercial use, providing this
// notice remains intact in the source files and all eventual changes are
// clearly marked with comments.
//
// You must obtain the author's consent before you can include this code
// in a software library.
//
// No warrantee of any kind, express or implied, is included with this
// software; use at your own risk, responsibility for damages (if any) to
// anyone resulting from the use of this software rests entirely with the
// user.
//
// Please email bug reports, bug fixes, enhancements, requests and
// comments to: nick@actor.ru
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CustomizeDialog.h"
#include "ToolBarEx.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCustomizeDialog dialog
static const int cxPadding = 3;
static const int cyPadding = 3;
IMPLEMENT_DYNAMIC( CCustomizeDialog, CWnd )
CCustomizeDialog::CCustomizeDialog( CToolBarEx* pToolBar,
TextOptions TextOptions,
IconOptions IconOptions )
{
ASSERT_VALID(pToolBar);
m_pToolBar = pToolBar;
m_eTextOptions=TextOptions;
m_eIconOptions=IconOptions;
}
/////////////////////////////////////////////////////////////////////////////
// Operations
void CCustomizeDialog::SetTextOptions( TextOptions eTextOptions)
{
m_eTextOptions = eTextOptions;
if (IsWindow(m_wndTextOptions.m_hWnd))
m_wndTextOptions.SetCurSel(eTextOptions);
}
void CCustomizeDialog::SetIconOptions( IconOptions eIconOptions)
{
m_eIconOptions = eIconOptions;
if (IsWindow(m_wndIconOptions.m_hWnd))
{
m_wndIconOptions.SetCurSel(eIconOptions);
}
}
/////////////////////////////////////////////////////////////////////////////
// CCustomizeDialog message handlers
BEGIN_MESSAGE_MAP(CCustomizeDialog, CWnd)
//{{AFX_MSG_MAP(CCustomizeDialog)
//}}AFX_MSG_MAP
ON_MESSAGE( WM_INITDIALOG, OnInitDialog )
ON_CBN_SELENDOK(IDC_CB_TEXTOPTIONS, OnTextOptions)
ON_CBN_SELENDOK(IDC_CB_ICONOPTIONS, OnIconOptions)
END_MESSAGE_MAP()
LRESULT CCustomizeDialog::OnInitDialog( WPARAM /*wParam*/, LPARAM /*lParam*/ )
{
CRect rcClient;
GetClientRect( rcClient );
CRect rcWindow;
GetWindowRect( rcWindow );
// create the windows // sizes are hardcoded //ugly way
CRect rc;
CFont *pFont =GetFont();
ASSERT_VALID(pFont);
//static wnd
rc=CRect(4,2,49,8);
MapDialogRect(m_hWnd,&rc);
rc.left+=rcClient.left;
rc.top+=rcClient.bottom;
VERIFY(m_wndTextOptionsText.Create(_T("Te&xt options:"),WS_CHILD|WS_VISIBLE,rc,this));
m_wndTextOptionsText.SetFont(pFont);
m_wndTextOptionsText.SetWindowPos(NULL,rc.left,rc.top,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE);
//Text options
rc=CRect(52,0,123,50);
MapDialogRect(m_hWnd,&rc);
rc.left+=rcClient.left;
rc.top+=rcClient.bottom;
VERIFY(m_wndTextOptions.Create(WS_CHILD |WS_VISIBLE |CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,rc,this, IDC_CB_TEXTOPTIONS));
m_wndTextOptions.SetFont(pFont);
m_wndTextOptions.AddString(_T("Show Text Labels"));
m_wndTextOptions.AddString(_T("Selective Text on Right"));
m_wndTextOptions.AddString(_T("No Text Labels"));
SetTextOptions(m_eTextOptions);
m_wndTextOptions.SetWindowPos(NULL,rc.left,rc.top,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE);
//static wnd
rc=CRect(4,20,49,8);
MapDialogRect(m_hWnd,&rc);
rc.left+=rcClient.left;
rc.top+=rcClient.bottom;
VERIFY(m_wndIconOptionsText.Create(_T("Ico&n options:"),WS_CHILD|WS_VISIBLE,rc,this));
m_wndIconOptionsText.SetFont(pFont);
m_wndIconOptionsText.SetWindowPos(NULL,rc.left,rc.top,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE);
//icon combo
rc=CRect(52,18,123,50);
MapDialogRect(m_hWnd,&rc);
rc.left+=rcClient.left;
rc.top+=rcClient.bottom;
VERIFY(m_wndIconOptions.Create(WS_CHILD |WS_VISIBLE |CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,rc,this, IDC_CB_ICONOPTIONS));
m_wndIconOptions.SetFont(pFont);
m_wndIconOptions.AddString(_T("Small Icons"));
m_wndIconOptions.AddString(_T("Large Icons"));
SetIconOptions(m_eIconOptions);
m_wndIconOptions.SetWindowPos(NULL,rc.left,rc.top,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE);
// final rect
rc=CRect(0,0,179,34);
MapDialogRect(m_hWnd,&rc);
rc.left+=rcClient.left;
rc.top+=rcClient.bottom;
// Increase height of Customize Toolbar dialog accordingly
rcWindow.bottom += (rc.bottom+cyPadding);
VERIFY( SetWindowPos( 0, 0, 0, rcWindow.Width(), rcWindow.Height(),
SWP_NOZORDER | SWP_NOMOVE ) );
//Set Title
ASSERT(m_pToolBar);
CString strName,strOrgName;
m_pToolBar->GetWindowText(strName);
if (!strName.IsEmpty())
{
GetWindowText(strOrgName);
SetWindowText(strOrgName + _T(" - ")+ strName);
}
return Default();
}
void CCustomizeDialog::OnTextOptions()
{
m_eTextOptions=(TextOptions)m_wndTextOptions.GetCurSel();
m_pToolBar->SetTextOptions(( TextOptions )m_eTextOptions,TRUE);
}
void CCustomizeDialog::OnIconOptions()
{
m_eIconOptions=(IconOptions)m_wndIconOptions.GetCurSel();
}
LRESULT CCustomizeDialog::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if (message==WM_HELP)
{
LPHELPINFO lphi = (LPHELPINFO) lParam;
if ( (lphi->iCtrlId != IDC_CB_TEXTOPTIONS) && (lphi->iCtrlId != IDC_CB_ICONOPTIONS) )
return DefWindowProc(message,wParam,lParam);
}
return CWnd::WindowProc(message, wParam, lParam);
}