| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- /* ==========================================================================
- File : RRECToolbar.cpp
- Class : CRRECToolbar
- Author : Johan Rosengren, Abstrakt Mekanik AB
- Iain Clarke
- Date : 2004-05-07
- Purpose : This class encapsulates a toolbar that can be used with
- "CRulerRichEditCtrl". The class is derived from "CToolBarCtrl",
- and manages a formatting toolbar
- Description : A "CToolBarCtrl"-derived class. Reads a toolbar resource
- with the ID "TOOLBAR_CONTROL" and adds combo controls for
- font name and -size, as well as a color picker at the
- positions "FONT_NAME_POS", "FONT_SIZE_POS" and
- "FONT_COLOR_POS" respectively.
- Usage : Created by the rich edit mini-editor.
- ========================================================================*/
- #include "stdafx.h"
- #include "RRECToolbar.h"
- #include "ids.h"
- #include <tchar.h>
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- extern UINT urm_SETCURRENTFONTNAME;
- extern UINT urm_SETCURRENTFONTSIZE;
- extern UINT urm_SETCURRENTFONTCOLOR;
- /////////////////////////////////////////////////////////////////////////////
- // CRRECToolbar
- CRRECToolbar::CRRECToolbar()
- /* ============================================================
- Function : CRRECToolbar::CRRECToolbar
- Description : ctor
- Access : Public
-
- Return : void
- Parameters : none
- Usage :
- ============================================================*/
- {
- }
- CRRECToolbar::~CRRECToolbar()
- /* ============================================================
- Function : CRRECToolbar::~CRRECToolbar
- Description : dtor
- Access : Public
-
- Return : void
- Parameters : none
- Usage :
- ============================================================*/
- {
- }
- BOOL CRRECToolbar::Create( CWnd* parent, CRect& rc )
- /* ============================================================
- Function : CRRECToolbar::Create
- Description : Creates the toolbar control
- Access : Public
-
- Return : BOOL - "TRUE" if success
- Parameters : CWnd* parent - Parent editor
- CRect& rc - Rectangle to place
- toolbar in.
- Usage : Called from the parent editor
- ============================================================*/
- {
- BOOL result = FALSE;
- HINSTANCE hInstance = AfxFindResourceHandle( MAKEINTRESOURCE( TOOLBAR_CONTROL ), RT_TOOLBAR );
- if(!hInstance)
- return FALSE;
- HRSRC hRsrc = ::FindResource( hInstance, MAKEINTRESOURCE( TOOLBAR_CONTROL ), RT_TOOLBAR );
- if( !hRsrc )
- return FALSE;
- HGLOBAL hGlobal = LoadResource( hInstance, hRsrc );
- if (hGlobal == NULL)
- return FALSE;
- CToolBarData* pData = ( CToolBarData* ) LockResource( hGlobal );
- if (pData == NULL)
- return FALSE;
- ASSERT( pData->wVersion == 1 );
- TBBUTTON tb, tbSep;
- memset ( &tb, 0, sizeof( tb ) );
- memset ( &tbSep, 0, sizeof( tbSep ) );
- result = CToolBarCtrl::Create(WS_VISIBLE|WS_CHILD, rc, parent, TOOLBAR_CONTROL);
- if( result )
- {
- SetButtonStructSize( sizeof ( tb ) );
- CSize sz ( pData->wWidth, pData->wHeight );
- SetBitmapSize( sz );
- sz.cx += 4;
- sz.cy += 4;
- SetButtonSize( sz );
- // Loop through adding buttons.
- tb.fsState = TBSTATE_ENABLED;
- tb.fsStyle = TBSTYLE_BUTTON;
- tb.iString = -1;
- tb.iBitmap = 0;
- tbSep.iString = -1;
- tbSep.fsStyle = TBSTYLE_SEP;
- for( WORD w = 0; w < pData->wItemCount; w++ )
- {
- if ( pData->items()[ w ] == 0 )
- AddButtons( 1, &tbSep );
- else
- {
- tb.idCommand = pData->items()[ w ];
- AddButtons( 1, &tb );
- tb.iBitmap++;
- }
- }
- HBITMAP hBitmap = (HBITMAP) ::LoadImage( hInstance, MAKEINTRESOURCE( TOOLBAR_CONTROL ), IMAGE_BITMAP, 0,0, LR_LOADMAP3DCOLORS );
- if( !hBitmap )
- return FALSE;
- BITMAP bm;
- memset( &bm, 0, sizeof ( bm ) );
- ::GetObject( hBitmap, sizeof ( bm ), &bm );
- AddBitmap( bm.bmWidth / pData->wWidth, CBitmap::FromHandle ( hBitmap ) );
- UnlockResource( hGlobal );
- FreeResource( hGlobal );
- /////////////////////////////////////
- // Map in combo boxes
- //
- CRect rect;
- TBBUTTONINFO tbi;
- tbi.cbSize = sizeof( TBBUTTONINFO );
- tbi.cx = FONT_COMBO_WIDTH;
- tbi.dwMask = TBIF_SIZE | 0x80000000; // By index
- SetButtonInfo( FONT_NAME_POS, &tbi );
- GetItemRect( FONT_NAME_POS, &rect );
- rect.bottom += COMBO_HEIGHT;
- // The font name combo
- if( m_font.Create( WS_CHILD |
- WS_VSCROLL |
- WS_VISIBLE |
- CBS_AUTOHSCROLL |
- CBS_DROPDOWN |
- CBS_SORT |
- CBS_HASSTRINGS,
- rect, this, DROPDOWN_FONT ) )
- {
- m_font.SetFont( CFont::FromHandle( ( HFONT ) ::GetStockObject( ANSI_VAR_FONT ) ) );
- m_font.FillCombo();
- tbi.cx = COMBO_WIDTH;
- SetButtonInfo( FONT_SIZE_POS, &tbi );
- GetItemRect( FONT_SIZE_POS, &rect );
- rect.bottom += COMBO_HEIGHT;
- // The font size combo
- if( m_size.Create( WS_CHILD |
- WS_VISIBLE |
- CBS_AUTOHSCROLL |
- CBS_DROPDOWNLIST |
- CBS_HASSTRINGS,
- rect, this, DROPDOWN_SIZE ) )
- {
- m_size.SetFont( CFont::FromHandle( ( HFONT ) ::GetStockObject( ANSI_VAR_FONT ) ) );
- m_size.FillCombo();
- CString color;
- CString defaultText;
- CString customText;
- color.LoadString( STRING_COLOR );
- defaultText.LoadString( STRING_DEFAULT );
- customText.LoadString( STRING_CUSTOM );
- tbi.cx = COLOR_WIDTH;
- SetButtonInfo( FONT_COLOR_POS, &tbi );
- GetItemRect( FONT_COLOR_POS, &rect );
- // The color picker
- if( m_color.Create( color,
- WS_VISIBLE|
- WS_CHILD,
- rect, this, BUTTON_COLOR ) )
- {
- m_color.SetDefaultText( defaultText );
- m_color.SetCustomText( customText );
- m_color.SetSelectionMode( CP_MODE_TEXT );
- m_color.SetBkColour( RGB( 255, 255, 255 ) );
- m_color.SetFont( CFont::FromHandle( ( HFONT ) ::GetStockObject( ANSI_VAR_FONT ) ) );
- result = TRUE;
- }
- }
- }
- }
- return result;
- }
- BEGIN_MESSAGE_MAP(CRRECToolbar, CToolBarCtrl)
- //{{AFX_MSG_MAP(CRRECToolbar)
- // NOTE - the ClassWizard will add and remove mapping macros here.
- ON_CBN_SELCHANGE(DROPDOWN_FONT, OnSelchangeFont)
- ON_CBN_SELCHANGE(DROPDOWN_SIZE, OnSelchangeSize)
- ON_MESSAGE(CPN_SELENDOK, OnColorButton)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CRRECToolbar message handlers
- void CRRECToolbar::OnSelchangeFont()
- /* ============================================================
- Function : CRRECToolbar::OnSelchangeFont
- Description : Changes the font of the selected text in
- the editor.
- Access : Protected
-
- Return : void
- Parameters : none
- Usage : Called from MFC when the selection changes
- in the font name combo.
- ============================================================*/
- {
- CString font;
- int index = m_font.GetCurSel();
- if( index != CB_ERR )
- {
- m_font.GetLBText( index, font );
- GetParent()->SendMessage( urm_SETCURRENTFONTNAME, ( WPARAM ) ( LPCTSTR ) font, 0 );
- }
- }
- void CRRECToolbar::OnSelchangeSize()
- /* ============================================================
- Function : CRRECToolbar::OnSelchangeSize
- Description : Changes the size of the selected text in
- the editor.
- Access : Protected
-
- Return : void
- Parameters : none
- Usage : Called from MFC when the selection changes
- in the font size combo.
- ============================================================*/
- {
- int size = 0;
- int index = m_size.GetCurSel();
- if( index != CB_ERR )
- {
- CString sz;
- m_size.GetLBText( index, sz );
- size = _ttoi( ( LPCTSTR ) sz );
- GetParent()->SendMessage( urm_SETCURRENTFONTSIZE, 0, ( LPARAM ) size );
- }
-
- }
- LRESULT CRRECToolbar::OnColorButton( WPARAM, LPARAM )
- /* ============================================================
- Function : CRRECToolbar::OnColorButton
- Description : Mapped to the color picker defined
- "CPN_SELENDOK" message, sent when the color
- is changed in the picker.
- Access : Protected
-
- Return : LRESULT - Not used
- Parameters : WPARAM - Not used
- LPARAM - Not used
- Usage : Called from MFC.
- ============================================================*/
- {
- COLORREF color = RGB( 0, 0, 0 );
- color = m_color.GetColour();
- GetParent()->SendMessage( urm_SETCURRENTFONTCOLOR, 0, ( LPARAM ) color );
-
- return 0;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CRRECToolbar UI updaters
- void CRRECToolbar::SetFontName( const CString& font )
- /* ============================================================
- Function : CRRECToolbar::SetFontName
- Description : Selects the font name "font" in the font
- name combo on the toolbar.
- Access : Public
-
- Return : void
- Parameters : none
- Usage : Call to set the selected font name
- ============================================================*/
- {
- if( m_font.m_hWnd )
- m_font.SelectFontName( font );
- }
- void CRRECToolbar::SetFontSize( int size )
- /* ============================================================
- Function : CRRECToolbar::SetFontSize
- Description : Selects the font size "size" in the font
- size combo on the toolbar.
- Access : Public
-
- Return : void
- Parameters : none
- Usage : Call to set the selected font size
- ============================================================*/
- {
- if( m_size.m_hWnd )
- m_size.SelectSize( size );
- }
- void CRRECToolbar::SetFontColor( COLORREF color )
- /* ============================================================
- Function : CRRECToolbar::SetFontColor
- Description : Selects the font color "color" in the font
- color picker on the toolbar.
- Access : Public
-
- Return : void
- Parameters : none
- Usage : Call to set the color picker color
- ============================================================*/
- {
- if( m_color.m_hWnd )
- m_color.SetColour( color );
- }
|