|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1999 - 1999
//
// File: controls.h
//
//--------------------------------------------------------------------------
// Controls.h
/////////////////////////////////////////////////////////////////////////////
#ifndef __CONTROLS_H__
#define __CONTROLS_H__
#pragma once
#include "conuiobservers.h" // for CTreeViewObserver
#include <initguid.h>
#include <oleacc.h>
#ifdef DBG
extern CTraceTag tagToolbarAccessibility; #endif
bool IsIgnorableButton (const TBBUTTON& tb);
class CRebarWnd; class CAccel; class CToolbarTrackerAuxWnd;
/////////////////////////////////////////////////////////////////////////////
// CDescriptionCtrl window
class CDescriptionCtrl : public CStatic, public CTreeViewObserver { // Construction
public: CDescriptionCtrl();
// Attributes
public: void SetSnapinText (const CString& strSnapinText);
const CString& GetSnapinText () const { return (m_strSnapinText); }
int GetHeight() const { return (m_cyRequired); }
/*
* handlers for events fired to tree view observers */ virtual SC ScOnSelectedItemTextChanged (LPCTSTR pszNewText);
private: void CreateFont(); void DeleteFont();
private: CString m_strConsoleText; CString m_strSnapinText; CFont m_font; int m_cxMargin; int m_cyText; int m_cyRequired;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDescriptionCtrl)
protected: virtual BOOL PreCreateWindow(CREATESTRUCT& cs); //}}AFX_VIRTUAL
// Implementation
public: virtual ~CDescriptionCtrl();
// Generated message map functions
protected: //{{AFX_MSG(CDescriptionCtrl)
afx_msg UINT OnNcHitTest(CPoint point); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection); afx_msg void OnDestroy(); afx_msg void OnSize(UINT nType, int cx, int cy); //}}AFX_MSG
afx_msg void DrawItem(LPDRAWITEMSTRUCT lpdis);
DECLARE_MESSAGE_MAP()
//Attributes
protected:
};
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// CToolBarCtrlBase window
/*+-------------------------------------------------------------------------*
* CToolBarCtrlBase * * This class only exists to provide simple wrappers around new toolbar * control messages that the version of MFC we use doesn't support. It * will be removed when MFC supports the new messages. * * If you need functionality other than that, derive a class from * CToolBarCtrlBase. *--------------------------------------------------------------------------*/
class CToolBarCtrlBase : public CToolBarCtrl { private: CImageList* GetImageList_(int msg); CImageList* SetImageList_(int msg, CImageList* pImageList, int idImageList = 0);
public: CImageList* GetImageList(); CImageList* SetImageList(CImageList* pImageList, int idImageList = 0); CImageList* GetHotImageList(); CImageList* SetHotImageList(CImageList* pImageList); CImageList* GetDisabledImageList(); CImageList* SetDisabledImageList(CImageList* pImageList);
/*
* CToolBarCtrl::SetOwner doesn't return the previous parent * and doesn't handle a NULL owner */ CWnd* SetOwner (CWnd* pwndNewOwner);
void SetMaxTextRows(int iMaxRows); void SetButtonWidth(int cxMin, int cxMax); DWORD GetButtonSize(void);
#if (_WIN32_IE >= 0x0400)
int GetHotItem (); int SetHotItem (int iHot); CSize GetPadding (); CSize SetPadding (CSize size); bool GetButtonInfo (int iID, LPTBBUTTONINFO ptbbi); bool SetButtonInfo (int iID, LPTBBUTTONINFO ptbbi); #endif // _WIN32_IE >= 0x0400
};
///////////////////////////////////////////////////////////////////////////
// CToolBarCtrlEx window
class CToolBarCtrlEx : public CToolBarCtrlBase { typedef CToolBarCtrlBase BaseClass;
// Construction
public: CToolBarCtrlEx();
// Attributes
public: CSize GetBitmapSize(void);
// Operations
public: void Show(BOOL bShow, bool bAddToolbarInNewLine = false); bool IsBandVisible(); int GetBandIndex(); void UpdateToolbarSize(void); // Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CToolBarCtrlEx)
public: virtual BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); virtual BOOL SetBitmapSize(CSize sz); //}}AFX_VIRTUAL
// Implementation
public: virtual ~CToolBarCtrlEx();
// Overridables
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
// Generated message map functions
protected: //{{AFX_MSG(CToolBarCtrlEx)
afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM lParam); //}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected: CSize m_sizeBitmap; CRebarWnd* m_pRebar; int m_cx; // Current Width
bool m_fMirrored;
};
////////////////////////////////////////////////////////////////////////////
// CRebarWnd window
class CRebarWnd : public CWnd { // Construction
public: CRebarWnd();
// Attributes
public:
// Operations
public: CRect CalculateSize(CRect maxRect);
LRESULT GetBarInfo(REBARINFO* prbi); LRESULT SetBarInfo(REBARINFO* prbi); LRESULT InsertBand(LPREBARBANDINFO lprbbi); LRESULT SetBandInfo(UINT uBand, LPREBARBANDINFO lprbbi); LRESULT GetBandInfo(UINT uBand, LPREBARBANDINFO lprbbi); LRESULT DeleteBand(UINT uBand); CWnd * SetParent(CWnd* pwndParent); UINT GetBandCount (); UINT GetRowCount (); UINT GetRowHeight (UINT uRow);
#if (_WIN32_IE >= 0x0400)
int HitTest (LPRBHITTESTINFO lprbht); BOOL GetRect (UINT uBand, LPRECT lprc); int IdToIndex (UINT uBandID); CWnd* GetToolTips (); void SetToolTips (CWnd* pwndTips); COLORREF GetBkColor (); COLORREF SetBkColor (COLORREF clrBk); COLORREF GetTextColor (); COLORREF SetTextColor (COLORREF clrBack); LRESULT SizeToRect (LPRECT lprc);
// for manual drag control
// lparam == cursor pos
// -1 means do it yourself.
// -2 means use what you had saved before
void BeginDrag (UINT uBand, CPoint point); void BeginDrag (UINT uBand, DWORD dwPos); void EndDrag (); void DragMove (CPoint point); void DragMove (DWORD dwPos); UINT GetBarHeight (); void MinimizeBand (UINT uBand); void MaximizeBand (UINT uBand, BOOL fIdeal = false); void GetBandBorders (UINT uBand, LPRECT lprc); LRESULT ShowBand (UINT uBand, BOOL fShow); LRESULT MoveBand (UINT uBandFrom, UINT uBandTo); CPalette* GetPalette (); CPalette* SetPalette (CPalette* ppal); #endif // _WIN32_IE >= 0x0400
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CRebarWnd)
public: virtual BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo); protected: virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); //}}AFX_VIRTUAL
// Implementation
public: virtual ~CRebarWnd();
// Generated message map functions
protected: //{{AFX_MSG(CRebarWnd)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnSysColorChange(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); //}}AFX_MSG
afx_msg LRESULT OnSetRedraw(WPARAM, LPARAM); afx_msg void OnRebarAutoSize(NMHDR* pNotify, LRESULT* result); afx_msg void OnRebarHeightChange(NMHDR* pNotify, LRESULT* result); DECLARE_MESSAGE_MAP()
private: bool m_fRedraw; };
////////////////////////////////////////////////////////////////////////////
// CTabCtrlEx window
/*+-------------------------------------------------------------------------*
* CTabCtrlEx * * This class only exists to provide simple wrappers around new tab * control messages that the version of MFC we use doesn't support. It * will be removed when MFC supports the new messages. * * If you need functionality other than that, derive a class from * CTabCtrlEx. *--------------------------------------------------------------------------*/
class CTabCtrlEx : public CTabCtrl { public: void DeselectAll (bool fExcludeFocus); bool HighlightItem (UINT nItem, bool fHighlight); DWORD GetExtendedStyle (); DWORD SetExtendedStyle (DWORD dwExStyle, DWORD dwMask = 0); bool GetUnicodeFormat (); bool SetUnicodeFormat (bool fUnicode); void SetCurFocus (UINT nItem); bool SetItemExtra (UINT cbExtra); int SetMinTabWidth (int cx); };
/////////////////////////////////////////////////////////////////////////////
// CToolBar idle update through CToolCmdUIEx class
class CToolCmdUIEx : public CCmdUI // class private to this file !
{ public: // re-implementations only
virtual void Enable(BOOL bOn); virtual void SetCheck(int nCheck); virtual void SetText(LPCTSTR lpszText); void SetHidden(BOOL bHidden); };
/////////////////////////////////////////////////////////////////////////////
// CMMCToolBarCtrlEx window
class CMMCToolBarCtrlEx : public CToolBarCtrlEx, public CTiedObject { static const CAccel& GetTrackAccel();
bool m_fTrackingToolBar; bool m_fFakeFocusApplied; // have we send fake OBJ_FOCUS events?
// Construction
public: CMMCToolBarCtrlEx();
// Attributes
public: enum { ID_MTBX_NEXT_BUTTON = 0x5400, // could be anything
ID_MTBX_PREV_BUTTON, ID_MTBX_PRESS_HOT_BUTTON, ID_MTBX_END_TRACKING,
ID_MTBX_FIRST = ID_MTBX_NEXT_BUTTON, ID_MTBX_LAST = ID_MTBX_END_TRACKING, };
bool IsTrackingToolBar () const { return (m_fTrackingToolBar); }
// Operations
public: virtual int GetFirstButtonIndex (); int GetNextButtonIndex (int nStartIndex, int nIncrement = 1); int GetPrevButtonIndex (int nStartIndex, int nIncrement = 1);
private: int GetNextButtonIndexWorker (int nStartIndex, int nIncrement, bool fAdvance);
protected: bool IsIgnorableButton (int nButtonIndex);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMMCToolBarCtrlEx)
public: virtual BOOL PreTranslateMessage(MSG* pMsg); //}}AFX_VIRTUAL
// Implementation
public: virtual ~CMMCToolBarCtrlEx();
// Generated message map functions
protected: //{{AFX_MSG(CMMCToolBarCtrlEx)
afx_msg void OnHotItemChange(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnMButtonDown(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnDestroy(); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); //}}AFX_MSG
afx_msg void OnNextButton (); afx_msg void OnPrevButton (); afx_msg void OnPressHotButton (); DECLARE_MESSAGE_MAP()
public: afx_msg void BeginTracking (); afx_msg void EndTracking ();
virtual void BeginTracking2 (CToolbarTrackerAuxWnd* pAuxWnd); virtual void EndTracking2 (CToolbarTrackerAuxWnd* pAuxWnd);
// *** IAccPropServer methods ***
SC ScGetPropValue ( const BYTE* pIDString, DWORD dwIDStringLen, MSAAPROPID idProp, VARIANT * pvarValue, BOOL * pfGotProp);
protected: typedef std::vector<MSAAPROPID> PropIDCollection;
/*
* Derived classes can override this to handle properties they support. * The base class should always be called first. */ virtual SC ScGetPropValue ( HWND hwnd, // I:accessible window
DWORD idObject, // I:accessible object
DWORD idChild, // I:accessible child object
const MSAAPROPID& idProp, // I:property requested
VARIANT& varValue, // O:returned property value
BOOL& fGotProp); // O:was a property returned?
virtual SC ScInsertAccPropIDs (PropIDCollection& v);
private: // Accessibility stuff
SC ScInitAccessibility (); SC ScRestoreAccFocus ();
CComPtr<IAccPropServices> m_spAccPropServices; CComPtr<IAccPropServer> m_spAccPropServer; PropIDCollection m_vPropIDs; };
#include "controls.inl"
#endif //__CONTROLS_H__
|