| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- ////////////////////////////////////////////////////////////////////////
- //
- // FormToolbarClass.CPP
- //
- // Module defining a CControlBar derived class which is used to implement
- // floating or dockable toolbars containing dialogs.
- //
- //
- #include "StdAfx.H"
- #include "FormToolbar.H"
- #include "DockableForm.H"
- BEGIN_MESSAGE_MAP(FormToolbarClass, CControlBar)
- //{{AFX_MSG_MAP(FormToolbarClass)
- ON_WM_SIZE()
- ON_WM_ERASEBKGND()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- //////////////////////////////////////////////////////////////
- //
- // Local constants
- //
- const int BORDER_TOP = 6;
- const int BORDER_BOTTOM = 6;
- const int BORDER_LEFT = 6;
- const int BORDER_RIGHT = 6;
- //////////////////////////////////////////////////////////////
- //
- // FormToolbarClass
- //
- FormToolbarClass::FormToolbarClass (void)
- : m_pCForm (NULL)
- {
- m_minSize.cx = 100;
- m_minSize.cy = 100;
- return ;
- }
- //////////////////////////////////////////////////////////////
- //
- // ~FormToolbarClass
- //
- FormToolbarClass::~FormToolbarClass (void)
- {
- if (m_pCForm) {
- // Free the dockable form
- delete m_pCForm;
- m_pCForm = NULL;
- }
- return ;
- }
- //////////////////////////////////////////////////////////////
- //
- // Create
- //
- BOOL
- FormToolbarClass::Create
- (
- DockableFormClass *pCFormClass,
- LPCTSTR pszWindowName,
- CWnd *pCParentWnd,
- UINT uiID
- )
- {
- ASSERT (pCFormClass);
- m_pCForm = pCFormClass;
- // Allow the base class to process this message
- RECT rect = { 0 };
- BOOL retval = CWnd::Create (NULL, pszWindowName, WS_CHILD | WS_VISIBLE, rect, pCParentWnd, uiID);
- if (retval) {
- // Ask the dockable form to create itself
- retval = m_pCForm->Create (this, 101);
- CRect rect;
- rect = m_pCForm->Get_Form_Rect ();
- m_minSize.cx = rect.Width ();
- m_minSize.cy = rect.Height ();
- m_minSize.cx += BORDER_LEFT + BORDER_RIGHT;
- m_minSize.cy += BORDER_TOP + BORDER_BOTTOM;
- SetWindowPos (NULL, 0, 0, m_minSize.cx, m_minSize.cy, SWP_NOZORDER | SWP_NOMOVE);
- m_pCForm->SetWindowPos (NULL, BORDER_LEFT, BORDER_TOP, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
- // Allow the toolbar to be resized
- // Allow the toolbar to be docked either to the right or left
- SetBarStyle (GetBarStyle() | CBRS_SIZE_DYNAMIC);
- EnableDocking (CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT);
- }
- // Return the TRUE/FALSE result code
- return retval;
- }
- //////////////////////////////////////////////////////////////
- //
- // OnSize
- //
- void
- FormToolbarClass::OnSize
- (
- UINT nType,
- int cx,
- int cy
- )
- {
- // Allow the base class to process this message
- CControlBar::OnSize(nType, cx, cy);
- if (m_pCForm && (cx > 0) && (cy > 0)) {
- // Get the bounding rectangle
- CRect rect;
- GetClientRect (rect);
- // Resize the dockable form window
- m_pCForm->SetWindowPos (NULL,
- 0,
- 0,
- rect.Width () - (BORDER_LEFT + BORDER_RIGHT),
- rect.Height () - (BORDER_TOP + BORDER_BOTTOM),
- SWP_NOZORDER | SWP_NOMOVE);
- }
- return ;
- }
- //////////////////////////////////////////////////////////////
- //
- // OnEraseBkgnd
- //
- BOOL
- FormToolbarClass::OnEraseBkgnd (CDC* pDC)
- {
- // Get the bounding rectangle
- RECT rect;
- GetClientRect (&rect);
- // Paint the background light gray
- ::FillRect (*pDC, &rect, (HBRUSH)(COLOR_3DFACE + 1));
- // Allow the base class to process this message
- return CControlBar::OnEraseBkgnd(pDC);
- }
|