mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-16 23:51:41 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
168
Code/Tools/W3DView/Toolbar.h
Normal file
168
Code/Tools/W3DView/Toolbar.h
Normal file
@@ -0,0 +1,168 @@
|
||||
/*
|
||||
** 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/>.
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Toolbar.H
|
||||
//
|
||||
// Declaration of a 'fancy' toolbar using hi-color buttons
|
||||
//
|
||||
|
||||
#ifndef __FANCYTOOLBAR_H
|
||||
#define __FANCYTOOLBAR_H
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Constants
|
||||
//
|
||||
const int BUTTON_WIDTH = 42;
|
||||
const int BUTTON_HEIGHT = 36;
|
||||
const int BUTTON_MIDDLE = 18;
|
||||
const int BORDER_LEFT = 8;
|
||||
const int BORDER_RIGHT = 8;
|
||||
const int BORDER_TOP = 8;
|
||||
const int BORDER_BOTTOM = 8;
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
//
|
||||
// CFancyToolbar
|
||||
//
|
||||
class CFancyToolbar : public CControlBar
|
||||
{
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// MFC Junk
|
||||
//
|
||||
|
||||
public:
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CFancyToolbar)
|
||||
public:
|
||||
virtual void OnDraw(CDC* pDC); // overridden to draw this view
|
||||
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||||
protected:
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
public:
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// Public Data Types
|
||||
//
|
||||
typedef enum
|
||||
{
|
||||
StateUp = 0,
|
||||
StateDn = 1
|
||||
} STATE_INFO;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TypeNormal = 0,
|
||||
Type2State = 1
|
||||
} BUTTON_TYPE;
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// Public Contructors
|
||||
//
|
||||
CFancyToolbar ();
|
||||
virtual ~CFancyToolbar ();
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// Public Methods
|
||||
//
|
||||
|
||||
//
|
||||
// Required methods
|
||||
//
|
||||
CSize CalcFixedLayout (BOOL, BOOL)
|
||||
{ return CSize (m_iButtons*BUTTON_WIDTH + BORDER_LEFT + BORDER_RIGHT, BUTTON_HEIGHT + BORDER_TOP + BORDER_BOTTOM); }
|
||||
|
||||
CSize CalcDynamicLayout( int nLength, DWORD dwMode )
|
||||
{ return CSize (m_iButtons*BUTTON_WIDTH + BORDER_LEFT + BORDER_RIGHT, BUTTON_HEIGHT + BORDER_TOP + BORDER_BOTTOM); }
|
||||
|
||||
void OnUpdateCmdUI (class CFrameWnd*, int) {}
|
||||
|
||||
//
|
||||
// Creation routines
|
||||
//
|
||||
void AddButton (UINT iBMPUp, UINT iBMPDn, int iCommandID, BUTTON_TYPE buttonType = TypeNormal);
|
||||
BOOL Create (LPCTSTR pszWindowName, CWnd *pCParentWnd, UINT uiID);
|
||||
|
||||
//
|
||||
// State management routines
|
||||
//
|
||||
void SetButtonState (int iCommandID, STATE_INFO newState, BOOL bRepaint = TRUE);
|
||||
STATE_INFO GetButtonState (int iCommandID) const;
|
||||
|
||||
protected:
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// Protected Methods
|
||||
//
|
||||
void Paint (void);
|
||||
void DrawButton (HDC hDC, int iXPos, int iYPos, HBITMAP hBMP);
|
||||
int ButtonFromPoint (const CPoint &point);
|
||||
void RegisterFancyToolbarClass (void);
|
||||
|
||||
//{{AFX_MSG(CFancyToolbar)
|
||||
afx_msg void OnPaint();
|
||||
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
||||
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// Static Methods
|
||||
//
|
||||
static LRESULT CALLBACK fnMessageProc (HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
private:
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// Private Data Types
|
||||
//
|
||||
typedef struct
|
||||
{
|
||||
HBITMAP hBMPUp;
|
||||
HBITMAP hBMPDn;
|
||||
int iCommandID;
|
||||
STATE_INFO currentState;
|
||||
BUTTON_TYPE buttonType;
|
||||
BOOL bVisible;
|
||||
} BUTTON_INFO;
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// Private Methods
|
||||
//
|
||||
BUTTON_INFO m_pButtonArray[10];
|
||||
int m_iButtons;
|
||||
int m_iCurrentButton;
|
||||
};
|
||||
|
||||
#endif // __FANCYTOOLBAR_H
|
||||
Reference in New Issue
Block a user