/////////////////////////////////////////////////////////////////////////////////////////////////////////// // // MBUTTON.H // // Defines CMButton class; helper functions // // Copyright (c) Microsoft Corporation 1997 // // 12/14/97 David Stewart / dstewart // /////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef _MBUTTON_HEADER_ #define _MBUTTON_HEADER_ #include "windows.h" #ifdef __cplusplus extern "C" { #endif //extended multimedia button styles #define MBS_STANDARDLEFT 0x00000000L #define MBS_TOGGLELEFT 0x00000001L #define MBS_STANDARDRIGHT 0x00000002L #define MBS_DROPRIGHT 0x00000004L #define MBS_TOGGLERIGHT 0x00000008L #define MBS_SYSTEMTYPE 0x00000010L #define MBS_NOAUTODELETE 0x00000020L #define STANDARD_PIXELS_PER_INCH 96 #define IS_DBCS_CHARSET( CharSet ) \ ( ((CharSet) == SHIFTJIS_CHARSET) ? TRUE : \ ((CharSet) == HANGEUL_CHARSET) ? TRUE : \ ((CharSet) == CHINESEBIG5_CHARSET) ? TRUE : \ ((CharSet) == GB2312_CHARSET) ? TRUE : \ ((CharSet) == JOHAB_CHARSET) ? TRUE : FALSE \ ) //forward declaration of class class CMButton; //c-style helper functions BOOL InitMButtons(HINSTANCE hInst, HWND hwnd); void UninitMButtons(); CMButton* GetMButtonFromID(HWND hwndParent, int nID); CMButton* GetMButtonFromHWND(HWND hwnd); class CMButton { public: friend CMButton* CreateMButton(TCHAR* szCaption, int nIconID, DWORD dwWindowStyle, DWORD dwMButtonStyle, int x, int y, int width, int height, HWND hwndParentOrSub, BOOL fSubExisting, int nID, int nToolTipID, HINSTANCE hInst); CMButton(); //constructor ~CMButton(); //destructor HWND GetHWND() {return m_hwnd;} int GetID() {return m_nID;} int GetToolTipID() {return m_nToolTipID;} void SetToolTipID(int nID) {m_nToolTipID = nID;} void SetText(TCHAR* szCaption); void SetIcon(int nIconID); void SetFont(HFONT hFont); void Draw(LPDRAWITEMSTRUCT lpdis); void PreDrawUpstate(int width, int height); BOOL MouseInButton() {return m_fMouseInButton;} BOOL GetMenuingState() {return m_fMenu;} void SetMenuingState(BOOL fMenuOn); private: //non-static privates HFONT m_hFont; int m_nID; int m_nToolTipID; HWND m_hwnd; BOOL m_fMouseInButton; DWORD m_dwStyle; WNDPROC m_fnOldButton; BOOL m_fRedraw; HINSTANCE m_hInst; int m_IconID; BOOL m_fMenu; BOOL m_fMenuingOff; int m_LastState; HANDLE m_hbmpUp; HANDLE m_hbmpDn; HANDLE m_hbmpHi; void DrawButtonBitmap(LPDRAWITEMSTRUCT lpdis, BOOL fDrawToScreen, RECT* pMidRect); private: //static stuff for all buttons static LRESULT CALLBACK ButtonProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); }; #ifdef __cplusplus }; #endif #endif //_MBUTTON_HEADER_