#ifndef _BTNST3_H #define _BTNST3_H #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 // CBtnST.h : header file // // Comment this if you don't want that CIconButton hilights itself // also when the window is inactive (like happens in Internet Explorer) #define ST_LIKEIE // Comment this if you don't want to use CMemDC class #define ST_USE_MEMDC ///////////////////////////////////////////////////////////////////////////// // CIconButton window #include "TAPI.h" class TELAPI CIconButton : public CButton { // Construction public: CIconButton(); ~CIconButton(); enum {ST_ALIGN_HORIZ, ST_ALIGN_VERT}; // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CIconButton) public: virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); protected: virtual void PreSubclassWindow(); //}}AFX_VIRTUAL // Implementation public: BOOL SetBtnCursor(int nCursorId = -1); void SetFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint = FALSE); BOOL GetFlatFocus(); void SetDefaultActiveFgColor(BOOL bRepaint = FALSE); void SetActiveFgColor(COLORREF crNew, BOOL bRepaint = FALSE); const COLORREF GetActiveFgColor(); void SetDefaultActiveBgColor(BOOL bRepaint = FALSE); void SetActiveBgColor(COLORREF crNew, BOOL bRepaint = FALSE); const COLORREF GetActiveBgColor(); void SetDefaultInactiveFgColor(BOOL bRepaint = FALSE); void SetInactiveFgColor(COLORREF crNew, BOOL bRepaint = FALSE); const COLORREF GetInactiveFgColor(); void SetDefaultInactiveBgColor(BOOL bRepaint = FALSE); void SetInactiveBgColor(COLORREF crNew, BOOL bRepaint = FALSE); const COLORREF GetInactiveBgColor(); void SetShowText(BOOL bShow = TRUE); BOOL GetShowText(); void SetAlign(int nAlign); int GetAlign(); void SetHelpKey(const TCHAR* szHelpKey){m_csHelpKey = szHelpKey;}; void SetFlat(BOOL bState = TRUE); BOOL GetFlat(); void DrawBorder(BOOL bEnable = TRUE); void SetIcon(int nIconInId, int nIconOutId = NULL, BYTE cx = 16, BYTE cy = 16); static const short GetVersionI(); static const TCHAR* GetVersionC(); int yxb; protected: //{{AFX_MSG(CIconButton) afx_msg void OnCaptureChanged(CWnd *pWnd); afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); afx_msg void OnKillFocus(CWnd* pNewWnd); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: void DrawTheIcon(CDC* pDC, CString* title, RECT* rcItem, CRect* captionRect, BOOL IsPressed, BOOL IsDisabled); int m_nAlign; BOOL m_bShowText; BOOL m_bDrawBorder; BOOL m_bIsFlat; BOOL m_MouseOnButton; BOOL m_bDrawFlatFocus; CString m_csHelpKey; HCURSOR m_hCursor; HICON m_hIconIn; HICON m_hIconOut; BYTE m_cyIcon; BYTE m_cxIcon; COLORREF m_crInactiveBg; COLORREF m_crInactiveFg; COLORREF m_crActiveBg; COLORREF m_crActiveFg; }; //#ifdef ST_USE_MEMDC ////////////////////////////////////////////////// // CMemDC - memory DC // // Author: Keith Rule // Email: keithr@europa.com // Copyright 1996-1997, Keith Rule // // You may freely use or modify this code provided this // Copyright is included in all derived versions. // // History - 10/3/97 Fixed scrolling bug. // Added print support. // 25 feb 98 - fixed minor assertion bug // // This class implements a memory Device Context //class CMemDC : public CDC //{ //public: // // // constructor sets up the memory DC // CMemDC(CDC* pDC) : CDC() // { // ASSERT(pDC != NULL); // // m_pDC = pDC; // m_pOldBitmap = NULL; // m_bMemDC = !pDC->IsPrinting(); // // if (m_bMemDC) // Create a Memory DC // { // pDC->GetClipBox(&m_rect); // CreateCompatibleDC(pDC); // m_bitmap.CreateCompatibleBitmap(pDC, m_rect.Width(), m_rect.Height()); // m_pOldBitmap = SelectObject(&m_bitmap); // SetWindowOrg(m_rect.left, m_rect.top); // } // else // Make a copy of the relevent parts of the current DC for printing // { // m_bPrinting = pDC->m_bPrinting; // m_hDC = pDC->m_hDC; // m_hAttribDC = pDC->m_hAttribDC; // } // } // // // Destructor copies the contents of the mem DC to the original DC // ~CMemDC() // { // if (m_bMemDC) // { // // Copy the offscreen bitmap onto the screen. // m_pDC->BitBlt(m_rect.left, m_rect.top, m_rect.Width(), m_rect.Height(), // this, m_rect.left, m_rect.top, SRCCOPY); // // //Swap back the original bitmap. // SelectObject(m_pOldBitmap); // } else { // // All we need to do is replace the DC with an illegal value, // // this keeps us from accidently deleting the handles associated with // // the CDC that was passed to the constructor. // m_hDC = m_hAttribDC = NULL; // } // } // // // Allow usage as a pointer // CMemDC* operator->() {return this;} // // // Allow usage as a pointer // operator CMemDC*() {return this;} // //private: // CBitmap m_bitmap; // Offscreen bitmap // CBitmap* m_pOldBitmap; // bitmap originally found in CMemDC // CDC* m_pDC; // Saves CDC passed in constructor // CRect m_rect; // Rectangle of drawing area. // BOOL m_bMemDC; // TRUE if CDC really is a Memory DC. //}; // //#endif ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Developer Studio will insert additional declarations immediately before the previous line. #endif