461 lines
12 KiB
C
461 lines
12 KiB
C
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// 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__
|