| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- //
- // GdipButton.h : Version 1.0 - see article at CodeProject.com
- //
- // Author: Darren Sessions
- //
- //
- // Description:
- // GdipButton is a CButton derived control that uses GDI+
- // to support alternate image formats
- //
- // History
- // Version 1.0 - 2008 June 10
- // - Initial public release
- //
- // License:
- // This software is released under the Code Project Open License (CPOL),
- // which may be found here: http://www.codeproject.com/info/eula.aspx
- // You are free to use this software in any way you like, except that you
- // may not sell this source code.
- //
- // This software is provided "as is" with no expressed or implied warranty.
- // I accept no liability for any damage or loss of business that this
- // software may cause.
- //
- ///////////////////////////////////////////////////////////////////////////////
- #pragma once
- // GdipButton.h : header file
- //
- class CGdiPlusBitmapResource;
- /////////////////////////////////////////////////////////////////////////////
- // CGdipButton window
- class CGdipButton : public CButton
- {
- public:
- CGdipButton();
- virtual ~CGdipButton();
- // image types
- enum {
- STD_TYPE = 0,
- ALT_TYPE,
- DIS_TYPE
- };
- // sets the image type
- void SetImage(int type);
- void CGdipButton::Test(CString c);
- BOOL LoadAltImage(UINT id, LPCTSTR pType);
- BOOL LoadStdImage(UINT id, LPCTSTR pType);
- BOOL LoadStdImageDPI(int dpi, UINT id96, UINT id120, UINT id144, UINT id168, UINT id192, LPCTSTR pType, UINT id225 = 0, UINT id250 = 0, UINT id275 = 0, UINT id300 = 0, UINT id325 = 0, UINT id350 = 0);
- // if false, disables the press state and uses grayscale image if it exists
- void EnableButton(BOOL bEnable = TRUE) { m_bIsDisabled = !bEnable; }
- // in toggle mode each press toggles between std and alt images
- void EnableToggle(BOOL bEnable = TRUE);
- // return the enable/disable state
- BOOL IsDisabled(void) {return (m_bIsDisabled == TRUE); }
- void SetBkGnd(CDC* pDC);
- void SetToolTipText(CString spText, BOOL bActivate = TRUE);
- void SetToolTipText(UINT nId, BOOL bActivate = TRUE);
- void SetHorizontal(bool ImagesAreLaidOutHorizontally = FALSE);
- void DeleteToolTip();
- void Reset();
- protected:
- void PaintBk(CDC* pDC);
- void PaintBtn(CDC* pDC);
- BOOL m_bHaveAltImage;
- BOOL m_bHaveBitmaps;
- BOOL m_bIsDisabled;
- BOOL m_bIsToggle;
- BOOL m_bIsHovering;
- BOOL m_bIsTracking;
- int m_nCurType;
- CGdiPlusBitmapResource* m_pAltImage;
- CGdiPlusBitmapResource* m_pStdImage;
- CString m_tooltext;
- CToolTipCtrl* m_pToolTip;
-
- void InitToolTip();
- virtual void PreSubclassWindow();
- virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/);
- virtual BOOL PreTranslateMessage(MSG* pMsg);
- //{{AFX_MSG(CGdipButton)
- afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
- afx_msg BOOL OnEraseBkgnd(CDC* pDC);
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
- afx_msg LRESULT OnMouseLeave(WPARAM wparam, LPARAM lparam);
- afx_msg LRESULT OnMouseHover(WPARAM wparam, LPARAM lparam) ;
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- private:
- CDC m_dcBk; // button background
-
- CDC m_dcStd; // standard button
- CDC m_dcStdP; // standard button pressed
- CDC m_dcStdH; // standard button hot
- CDC m_dcAlt; // alternate button
- CDC m_dcAltP; // alternate button pressed
- CDC m_dcAltH; // alternate button hot
- CDC m_dcGS; // grayscale button (does not have a hot or pressed state)
- CDC* m_pCurBtn; // current pointer to one of the above
- };
|