summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/mfc42/afxext.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/mfc42/afxext.h1048
1 files changed, 1048 insertions, 0 deletions
diff --git a/public/sdk/inc/mfc42/afxext.h b/public/sdk/inc/mfc42/afxext.h
new file mode 100644
index 000000000..11f7472ce
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxext.h
@@ -0,0 +1,1048 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXEXT_H__
+#define __AFXEXT_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXEXT - MFC Advanced Extensions and Advanced Customizable classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CButton
+ class CBitmapButton; // Bitmap button (self-draw)
+
+ class CControlBar; // control bar
+ class CStatusBar; // status bar
+ class CToolBar; // toolbar
+ class CDialogBar; // dialog as control bar
+
+ class CSplitterWnd; // splitter manager
+
+ //CView
+ //CScrollView
+ class CFormView; // view with a dialog template
+ class CEditView; // simple text editor view
+
+ //CDC
+ class CMetaFileDC; // a metafile with proxy
+
+class CRectTracker; // tracker for rectangle objects
+
+// information structures
+struct CPrintInfo; // Printing context
+struct CPrintPreviewState; // Print Preview context/state
+struct CCreateContext; // Creation context
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Simple bitmap button
+
+// CBitmapButton - push-button with 1->4 bitmap images
+class CBitmapButton : public CButton
+{
+ DECLARE_DYNAMIC(CBitmapButton)
+public:
+// Construction
+ CBitmapButton();
+
+ BOOL LoadBitmaps(LPCTSTR lpszBitmapResource,
+ LPCTSTR lpszBitmapResourceSel = NULL,
+ LPCTSTR lpszBitmapResourceFocus = NULL,
+ LPCTSTR lpszBitmapResourceDisabled = NULL);
+ BOOL LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel = 0,
+ UINT nIDBitmapResourceFocus = 0,
+ UINT nIDBitmapResourceDisabled = 0);
+ BOOL AutoLoad(UINT nID, CWnd* pParent);
+
+// Operations
+ void SizeToContent();
+
+// Implementation:
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+protected:
+ // all bitmaps must be the same size
+ CBitmap m_bitmap; // normal image (REQUIRED)
+ CBitmap m_bitmapSel; // selected image (OPTIONAL)
+ CBitmap m_bitmapFocus; // focused but not selected (OPTIONAL)
+ CBitmap m_bitmapDisabled; // disabled bitmap (OPTIONAL)
+
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Control Bars
+
+// forward declarations (private to implementation)
+class CDockBar;
+class CDockContext;
+class CControlBarInfo;
+struct AFX_SIZEPARENTPARAMS;
+
+// Layout Modes for CalcDynamicLayout
+#define LM_STRETCH 0x01 // same meaning as bStretch in CalcFixedLayout. If set, ignores nLength
+ // and returns dimensions based on LM_HORZ state, otherwise LM_HORZ is used
+ // to determine if nLength is the desired horizontal or vertical length
+ // and dimensions are returned based on nLength
+#define LM_HORZ 0x02 // same as bHorz in CalcFixedLayout
+#define LM_MRUWIDTH 0x04 // Most Recently Used Dynamic Width
+#define LM_HORZDOCK 0x08 // Horizontal Docked Dimensions
+#define LM_VERTDOCK 0x10 // Vertical Docked Dimensions
+#define LM_LENGTHY 0x20 // Set if nLength is a Height instead of a Width
+#define LM_COMMIT 0x40 // Remember MRUWidth
+
+class CControlBar : public CWnd
+{
+ DECLARE_DYNAMIC(CControlBar)
+// Construction
+protected:
+ CControlBar();
+
+// Attributes
+public:
+ int GetCount() const;
+
+ // for styles specific to CControlBar
+ DWORD GetBarStyle();
+ void SetBarStyle(DWORD dwStyle);
+
+ BOOL m_bAutoDelete;
+
+ CFrameWnd* GetDockingFrame() const;
+ BOOL IsFloating() const;
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
+
+// Operations
+ void EnableDocking(DWORD dwDockStyle);
+
+// Overridables
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) = 0;
+
+// Implementation
+public:
+ virtual ~CControlBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void DelayShow(BOOL bShow);
+ virtual BOOL IsVisible() const;
+ virtual DWORD RecalcDelayShow(AFX_SIZEPARENTPARAMS* lpLayout);
+
+ virtual BOOL IsDockBar() const;
+ virtual BOOL DestroyWindow();
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+ // info about bar (for status bar and toolbar)
+ int m_cxLeftBorder, m_cxRightBorder;
+ int m_cyTopBorder, m_cyBottomBorder;
+ int m_cxDefaultGap; // default gap value
+ UINT m_nMRUWidth; // For dynamic resizing.
+#ifdef _MAC
+ BOOL m_bMonochrome; // whether to draw in monochrome or color
+#endif
+
+ // array of elements
+ int m_nCount;
+ void* m_pData; // m_nCount elements - type depends on derived class
+
+ // support for delayed hide/show
+ enum StateFlags
+ { delayHide = 1, delayShow = 2, tempHide = 4, statusSet = 8 };
+ UINT m_nStateFlags;
+
+ // support for docking
+ DWORD m_dwStyle; // creation style (used for layout)
+ DWORD m_dwDockStyle;// indicates how bar can be docked
+ CFrameWnd* m_pDockSite; // current dock site, if dockable
+ CDockBar* m_pDockBar; // current dock bar, if dockable
+ CDockContext* m_pDockContext; // used during dragging
+
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void PostNcDestroy();
+
+ virtual void DoPaint(CDC* pDC);
+ void DrawBorders(CDC* pDC, CRect& rect);
+
+ // implementation helpers
+ virtual LRESULT WindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const; // adjusts borders etc
+ BOOL AllocElements(int nElements, int cbElement);
+ virtual BOOL SetStatusText(int nHit);
+ void ResetTimer(UINT nEvent, UINT nTime);
+ void EraseNonClient();
+
+#ifdef _MAC
+ void OnReposition();
+ virtual BOOL CheckMonochrome();
+#endif
+ void GetBarInfo(CControlBarInfo* pInfo);
+ void SetBarInfo(CControlBarInfo* pInfo, CFrameWnd* pFrameWnd);
+
+ //{{AFX_MSG(CControlBar)
+ afx_msg void OnTimer(UINT nIDEvent);
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnInitialUpdate();
+ afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt );
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT nMsg);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnMove(int x, int y);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CFrameWnd;
+ friend class CDockBar;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CStatusBar control
+
+class CStatusBarCtrl; // forward reference (see afxcmn.h for definition)
+struct AFX_STATUSPANE; // private to implementation
+
+class CStatusBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CStatusBar)
+
+// Construction
+public:
+ CStatusBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
+ UINT nID = AFX_IDW_STATUS_BAR);
+ BOOL SetIndicators(const UINT* lpIDArray, int nIDCount);
+
+// Attributes
+public:
+ // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ void GetItemRect(int nIndex, LPRECT lpRect) const;
+
+ // specific to CStatusBar
+ void GetPaneText(int nIndex, CString& rString) const;
+ CString GetPaneText(int nIndex) const;
+ BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
+ void GetPaneInfo(int nIndex, UINT& nID, UINT& nStyle, int& cxWidth) const;
+ void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
+ UINT GetPaneStyle(int nIndex) const;
+ void SetPaneStyle(int nIndex, UINT nStyle);
+
+ // for direct access to the underlying common control
+ CStatusBarCtrl& GetStatusBarCtrl() const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT);
+
+// Implementation
+public:
+ virtual ~CStatusBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ BOOL PreCreateWindow(CREATESTRUCT& cs);
+ BOOL AllocElements(int nElements, int cbElement);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const;
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ void EnableDocking(DWORD dwDockStyle);
+#endif
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+ int m_nMinHeight;
+
+ AFX_STATUSPANE* _GetPanePtr(int nIndex) const;
+ void UpdateAllPanes(BOOL bUpdateRects, BOOL bUpdateText);
+ virtual BOOL OnChildNotify(UINT message, WPARAM, LPARAM, LRESULT*);
+
+ //{{AFX_MSG(CStatusBar)
+ afx_msg UINT OnNcHitTest(CPoint);
+ afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
+ afx_msg void OnNcPaint();
+ afx_msg void OnPaint();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetMinHeight(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for status bar panes
+#define SBPS_NORMAL 0x0000
+#define SBPS_NOBORDERS SBT_NOBORDERS
+#define SBPS_POPOUT SBT_POPOUT
+#define SBPS_OWNERDRAW SBT_OWNERDRAW
+#define SBPS_DISABLED 0x04000000
+#define SBPS_STRETCH 0x08000000 // stretch to fill status bar
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolBar control
+
+HBITMAP AFXAPI AfxLoadSysColorBitmap(HINSTANCE hInst, HRSRC hRsrc, BOOL bMono = FALSE);
+
+class CToolBarCtrl; // forward reference (see afxcmn.h for definition)
+
+class CToolBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CToolBar)
+
+// Construction
+public:
+ CToolBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,
+ UINT nID = AFX_IDW_TOOLBAR);
+
+ void SetSizes(SIZE sizeButton, SIZE sizeImage);
+ // button size should be bigger than image
+ void SetHeight(int cyHeight);
+ // call after SetSizes, height overrides bitmap size
+ BOOL LoadToolBar(LPCTSTR lpszResourceName);
+ BOOL LoadToolBar(UINT nIDResource);
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+ BOOL SetBitmap(HBITMAP hbmImageWell);
+ BOOL SetButtons(const UINT* lpIDArray, int nIDCount);
+ // lpIDArray can be NULL to allocate empty buttons
+
+// Attributes
+public:
+ // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ virtual void GetItemRect(int nIndex, LPRECT lpRect) const;
+ UINT GetButtonStyle(int nIndex) const;
+ void SetButtonStyle(int nIndex, UINT nStyle);
+
+ // for changing button info
+ void GetButtonInfo(int nIndex, UINT& nID, UINT& nStyle, int& iImage) const;
+ void SetButtonInfo(int nIndex, UINT nID, UINT nStyle, int iImage);
+ BOOL SetButtonText(int nIndex, LPCTSTR lpszText);
+ CString GetButtonText(int nIndex) const;
+ void GetButtonText(int nIndex, CString& rString) const;
+
+ // for direct access to the underlying common control
+ CToolBarCtrl& GetToolBarCtrl() const;
+
+// Implementation
+public:
+ virtual ~CToolBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
+ virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+ void SetOwner(CWnd* pOwnerWnd);
+ BOOL AddReplaceBitmap(HBITMAP hbmImageWell);
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+#ifdef _MAC
+ virtual BOOL CheckMonochrome();
+#endif
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ HRSRC m_hRsrcImageWell; // handle to loaded resource for image well
+ HINSTANCE m_hInstImageWell; // instance handle to load image well from
+ HBITMAP m_hbmImageWell; // contains color mapped button images
+ BOOL m_bDelayedButtonLayout; // used to manage when button layout should be done
+
+ CSize m_sizeImage; // current image size
+ CSize m_sizeButton; // current button size
+
+ CMapStringToPtr* m_pStringMap; // used as CMapStringToUInt
+
+ // implementation helpers
+ void _GetButton(int nIndex, TBBUTTON* pButton) const;
+ void _SetButton(int nIndex, TBBUTTON* pButton);
+ CSize CalcLayout(DWORD nMode, int nLength = -1);
+ CSize CalcSize(TBBUTTON* pData, int nCount);
+ int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth);
+ void SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert = FALSE);
+
+ //{{AFX_MSG(CToolBar)
+ afx_msg UINT OnNcHitTest(CPoint);
+ afx_msg void OnNcPaint();
+ afx_msg void OnPaint();
+ afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS);
+ afx_msg void OnSysColorChange();
+ afx_msg LRESULT OnSetButtonSize(WPARAM, LPARAM);
+ afx_msg LRESULT OnSetBitmapSize(WPARAM, LPARAM);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for toolbar buttons
+#define TBBS_BUTTON MAKELONG(TBSTYLE_BUTTON, 0) // this entry is button
+#define TBBS_SEPARATOR MAKELONG(TBSTYLE_SEP, 0) // this entry is a separator
+#define TBBS_CHECKBOX MAKELONG(TBSTYLE_CHECK, 0) // this is an auto check button
+#define TBBS_GROUP MAKELONG(TBSTYLE_GROUP, 0) // marks the start of a group
+#define TBBS_CHECKGROUP (TBBS_GROUP|TBBS_CHECKBOX) // normal use of TBBS_GROUP
+
+// styles for display states
+#define TBBS_CHECKED MAKELONG(0, TBSTATE_CHECKED) // button is checked/down
+#define TBBS_PRESSED MAKELONG(0, TBSTATE_PRESSED) // button is being depressed
+#define TBBS_DISABLED MAKELONG(0, TBSTATE_ENABLED) // button is disabled
+#define TBBS_INDETERMINATE MAKELONG(0, TBSTATE_INDETERMINATE) // third state
+#define TBBS_HIDDEN MAKELONG(0, TBSTATE_HIDDEN) // button is hidden
+#define TBBS_WRAPPED MAKELONG(0, TBSTATE_WRAP) // button is wrapped at this point
+
+////////////////////////////////////////////
+// CDialogBar control
+// This is a control bar built from a dialog template. It is a modeless
+// dialog that delegates all control notifications to the parent window
+// of the control bar [the grandparent of the control]
+
+class CDialogBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDialogBar)
+
+// Construction
+public:
+ CDialogBar();
+ BOOL Create(CWnd* pParentWnd, LPCTSTR lpszTemplateName,
+ UINT nStyle, UINT nID);
+ BOOL Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID);
+
+// Implementation
+public:
+ virtual ~CDialogBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ CSize m_sizeDefault;
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+#ifndef _AFX_NO_OCC_SUPPORT
+ // data and functions necessary for OLE control containment
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ LPCTSTR m_lpszTemplateName;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ DECLARE_MESSAGE_MAP()
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Splitter Window
+
+#define SPLS_DYNAMIC_SPLIT 0x0001
+#define SPLS_INVERT_TRACKER 0x0002 // obsolete (now ignored)
+
+class CSplitterWnd : public CWnd
+{
+ DECLARE_DYNAMIC(CSplitterWnd)
+
+// Construction
+public:
+ CSplitterWnd();
+ // Create a single view type splitter with multiple splits
+ BOOL Create(CWnd* pParentWnd,
+ int nMaxRows, int nMaxCols, SIZE sizeMin,
+ CCreateContext* pContext,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE |
+ WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ // Create a multiple view type splitter with static layout
+ BOOL CreateStatic(CWnd* pParentWnd,
+ int nRows, int nCols,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ virtual BOOL CreateView(int row, int col, CRuntimeClass* pViewClass,
+ SIZE sizeInit, CCreateContext* pContext);
+
+// Attributes
+public:
+ int GetRowCount() const;
+ int GetColumnCount() const;
+
+ // information about a specific row or column
+ void GetRowInfo(int row, int& cyCur, int& cyMin) const;
+ void SetRowInfo(int row, int cyIdeal, int cyMin);
+ void GetColumnInfo(int col, int& cxCur, int& cxMin) const;
+ void SetColumnInfo(int col, int cxIdeal, int cxMin);
+
+ // for setting and getting shared scroll bar style
+ DWORD GetScrollStyle() const;
+ void SetScrollStyle(DWORD dwStyle);
+
+ // views inside the splitter
+ CWnd* GetPane(int row, int col) const;
+ BOOL IsChildPane(CWnd* pWnd, int* pRow, int* pCol);
+ BOOL IsChildPane(CWnd* pWnd, int& row, int& col); // obsolete
+ int IdFromRowCol(int row, int col) const;
+
+ BOOL IsTracking(); // TRUE during split operation
+
+// Operations
+public:
+ virtual void RecalcLayout(); // call after changing sizes
+
+// Overridables
+protected:
+ // to customize the drawing
+ enum ESplitType { splitBox, splitBar, splitIntersection, splitBorder };
+ virtual void OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect);
+ virtual void OnInvertTracker(const CRect& rect);
+
+public:
+ // for customizing scrollbar regions
+ virtual BOOL CreateScrollBarCtrl(DWORD dwStyle, UINT nID);
+
+ // for customizing DYNAMIC_SPLIT behavior
+ virtual void DeleteView(int row, int col);
+ virtual BOOL SplitRow(int cyBefore);
+ virtual BOOL SplitColumn(int cxBefore);
+ virtual void DeleteRow(int rowDelete);
+ virtual void DeleteColumn(int colDelete);
+
+ // determining active pane from focus or active view in frame
+ virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL);
+ virtual void SetActivePane(int row, int col, CWnd* pWnd = NULL);
+protected:
+ CWnd* GetActivePane(int& row, int& col); // obsolete
+
+public:
+ // high level command operations - called by default view implementation
+ virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
+ virtual void ActivateNext(BOOL bPrev = FALSE);
+ virtual BOOL DoKeyboardSplit();
+
+ // synchronized scrolling
+ virtual BOOL DoScroll(CView* pViewFrom, UINT nScrollCode,
+ BOOL bDoScroll = TRUE);
+ virtual BOOL DoScrollBy(CView* pViewFrom, CSize sizeScroll,
+ BOOL bDoScroll = TRUE);
+
+// Implementation
+public:
+ virtual ~CSplitterWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // implementation structure
+ struct CRowColInfo
+ {
+ int nMinSize; // below that try not to show
+ int nIdealSize; // user set size
+ // variable depending on the available size layout
+ int nCurSize; // 0 => invisible, -1 => nonexistant
+ };
+
+protected:
+ // customizable implementation attributes (set by constructor or Create)
+ CRuntimeClass* m_pDynamicViewClass;
+ int m_nMaxRows, m_nMaxCols;
+
+ // implementation attributes which control layout of the splitter
+ int m_cxSplitter, m_cySplitter; // size of splitter bar
+ int m_cxBorderShare, m_cyBorderShare; // space on either side of splitter
+ int m_cxSplitterGap, m_cySplitterGap; // amount of space between panes
+ int m_cxBorder, m_cyBorder; // borders in client area
+
+ // current state information
+ int m_nRows, m_nCols;
+ BOOL m_bHasHScroll, m_bHasVScroll;
+ CRowColInfo* m_pColInfo;
+ CRowColInfo* m_pRowInfo;
+
+ // Tracking info - only valid when 'm_bTracking' is set
+ BOOL m_bTracking, m_bTracking2;
+ CPoint m_ptTrackOffset;
+ CRect m_rectLimit;
+ CRect m_rectTracker, m_rectTracker2;
+ int m_htTrack;
+
+ // implementation routines
+ BOOL CreateCommon(CWnd* pParentWnd, SIZE sizeMin, DWORD dwStyle, UINT nID);
+ virtual int HitTest(CPoint pt) const;
+ virtual void GetInsideRect(CRect& rect) const;
+ virtual void GetHitRect(int ht, CRect& rect);
+ virtual void TrackRowSize(int y, int row);
+ virtual void TrackColumnSize(int x, int col);
+ virtual void DrawAllSplitBars(CDC* pDC, int cxInside, int cyInside);
+ virtual void SetSplitCursor(int ht);
+ CWnd* GetSizingParent();
+
+ // starting and stopping tracking
+ virtual void StartTracking(int ht);
+ virtual void StopTracking(BOOL bAccept);
+
+ // special command routing to frame
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ //{{AFX_MSG(CSplitterWnd)
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt);
+ afx_msg void OnPaint();
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt);
+ afx_msg void OnCancelMode();
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnDisplayChange();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFormView - generic view constructed from a dialog template
+
+class CFormView : public CScrollView
+{
+ DECLARE_DYNAMIC(CFormView)
+
+// Construction
+protected: // must derive your own class
+ CFormView(LPCTSTR lpszTemplateName);
+ CFormView(UINT nIDTemplate);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ LPCTSTR m_lpszTemplateName;
+ CCreateContext* m_pCreateContext;
+ HWND m_hWndFocus; // last window to have focus
+
+ virtual void OnDraw(CDC* pDC); // default does nothing
+ // special case override of child window creation
+ virtual BOOL Create(LPCTSTR, LPCTSTR, DWORD,
+ const RECT&, CWnd*, UINT, CCreateContext*);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnActivateView(BOOL, CView*, CView*);
+ virtual void OnActivateFrame(UINT, CFrameWnd*);
+ BOOL SaveFocusControl(); // updates m_hWndFocus
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // data and functions necessary for OLE control containment
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+#endif
+
+ //{{AFX_MSG(CFormView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEditView - simple text editor view
+
+class CEditView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CEditView)
+
+// Construction
+public:
+ CEditView();
+
+// Attributes
+public:
+ static AFX_DATA const DWORD dwStyleDefault;
+ // CEdit control access
+ CEdit& GetEditCtrl() const;
+
+ // presentation attributes
+ CFont* GetPrinterFont() const;
+ void SetPrinterFont(CFont* pFont);
+#ifndef _MAC
+ void SetTabStops(int nTabStops);
+#endif
+
+ // other attributes
+ void GetSelectedText(CString& strResult) const;
+
+ // buffer access
+ LPCTSTR LockBuffer() const;
+ void UnlockBuffer() const;
+ UINT GetBufferLength() const;
+
+// Operations
+public:
+ BOOL FindText(LPCTSTR lpszFind, BOOL bNext = TRUE, BOOL bCase = TRUE);
+ void SerializeRaw(CArchive& ar);
+ UINT PrintInsideRect(CDC* pDC, RECT& rectLayout, UINT nIndexStart,
+ UINT nIndexStop);
+
+// Overrideables
+protected:
+ virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase);
+ virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
+ LPCTSTR lpszReplace);
+ virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
+ BOOL bCase);
+ virtual void OnTextNotFound(LPCTSTR lpszFind);
+
+// Implementation
+public:
+ virtual ~CEditView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void Serialize(CArchive& ar);
+ virtual void DeleteContents();
+ void ReadFromArchive(CArchive& ar, UINT nLen);
+ void WriteToArchive(CArchive& ar);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
+
+ static AFX_DATA const UINT nMaxSize;
+ // maximum number of characters supported
+
+protected:
+#ifndef _MAC
+ int m_nTabStops; // tab stops in dialog units
+#endif
+ LPTSTR m_pShadowBuffer; // special shadow buffer only used in Win32s
+ UINT m_nShadowSize;
+
+ CUIntArray m_aPageStart; // array of starting pages
+ HFONT m_hPrinterFont; // if NULL, mirror display font
+ HFONT m_hMirrorFont; // font object used when mirroring
+
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ // printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
+ BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
+
+ // find & replace support
+ void OnEditFindReplace(BOOL bFindOnly);
+ BOOL InitializeReplace();
+ BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase);
+
+ // special overrides for implementation
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+ //{{AFX_MSG(CEditView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
+ afx_msg BOOL OnEditChange();
+ afx_msg void OnEditCut();
+ afx_msg void OnEditCopy();
+ afx_msg void OnEditPaste();
+ afx_msg void OnEditClear();
+ afx_msg void OnEditUndo();
+ afx_msg void OnEditSelectAll();
+ afx_msg void OnEditFind();
+ afx_msg void OnEditReplace();
+ afx_msg void OnEditRepeat();
+ afx_msg LRESULT OnFindReplaceCmd(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMetaFileDC
+
+class CMetaFileDC : public CDC
+{
+ DECLARE_DYNAMIC(CMetaFileDC)
+
+// Constructors
+public:
+ CMetaFileDC();
+ BOOL Create(LPCTSTR lpszFilename = NULL);
+#ifndef _MAC
+ BOOL CreateEnhanced(CDC* pDCRef, LPCTSTR lpszFileName,
+ LPCRECT lpBounds, LPCTSTR lpszDescription);
+#endif
+
+// Operations
+ HMETAFILE Close();
+#ifndef _MAC
+ HENHMETAFILE CloseEnhanced();
+#endif
+
+// Implementation
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+
+protected:
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC -- Not allowed
+ virtual void ReleaseOutputDC(); // Release the Output DC -- Not allowed
+
+public:
+ virtual ~CMetaFileDC();
+
+// Clipping Functions (use the Attribute DC's clip region)
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ CSize TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ int DrawText(const CString& str, LPRECT lpRect, UINT nFormat);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Viewport Functions
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+protected:
+ void AdjustCP(int cx);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRectTracker - simple rectangular tracking rectangle w/resize handles
+
+class CRectTracker
+{
+public:
+// Constructors
+ CRectTracker();
+ CRectTracker(LPCRECT lpSrcRect, UINT nStyle);
+
+// Style Flags
+ enum StyleFlags
+ {
+ solidLine = 1, dottedLine = 2, hatchedBorder = 4,
+ resizeInside = 8, resizeOutside = 16, hatchInside = 32,
+ };
+
+// Hit-Test codes
+ enum TrackerHit
+ {
+ hitNothing = -1,
+ hitTopLeft = 0, hitTopRight = 1, hitBottomRight = 2, hitBottomLeft = 3,
+ hitTop = 4, hitRight = 5, hitBottom = 6, hitLeft = 7, hitMiddle = 8
+ };
+
+// Attributes
+ UINT m_nStyle; // current state
+ CRect m_rect; // current position (always in pixels)
+ CSize m_sizeMin; // minimum X and Y size during track operation
+ int m_nHandleSize; // size of resize handles (default from WIN.INI)
+
+// Operations
+ void Draw(CDC* pDC) const;
+ void GetTrueRect(LPRECT lpTrueRect) const;
+ BOOL SetCursor(CWnd* pWnd, UINT nHitTest) const;
+ BOOL Track(CWnd* pWnd, CPoint point, BOOL bAllowInvert = FALSE,
+ CWnd* pWndClipTo = NULL);
+ BOOL TrackRubberBand(CWnd* pWnd, CPoint point, BOOL bAllowInvert = TRUE);
+ int HitTest(CPoint point) const;
+ int NormalizeHit(int nHandle) const;
+
+// Overridables
+ virtual void DrawTrackerRect(LPCRECT lpRect, CWnd* pWndClipTo,
+ CDC* pDC, CWnd* pWnd);
+ virtual void AdjustRect(int nHandle, LPRECT lpRect);
+ virtual void OnChangedRect(const CRect& rectOld);
+ virtual UINT GetHandleMask() const;
+
+// Implementation
+public:
+ virtual ~CRectTracker();
+
+protected:
+ BOOL m_bAllowInvert; // flag passed to Track or TrackRubberBand
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bErase; // TRUE if DrawTrackerRect is called for erasing
+ BOOL m_bFinalErase; // TRUE if DragTrackerRect called for final erase
+
+ // implementation helpers
+ int HitTestHandles(CPoint point) const;
+ void GetHandleRect(int nHandle, CRect* pHandleRect) const;
+ void GetModifyPointers(int nHandle, int**ppx, int**ppy, int* px, int*py);
+ virtual int GetHandleSize(LPCRECT lpRect = NULL) const;
+ BOOL TrackHandle(int nHandle, CWnd* pWnd, CPoint point, CWnd* pWndClipTo);
+ void Construct();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Informational data structures
+
+struct CPrintInfo // Printing information structure
+{
+ CPrintInfo();
+ ~CPrintInfo();
+
+ CPrintDialog* m_pPD; // pointer to print dialog
+
+ BOOL m_bDocObject; // TRUE if printing by IPrint interface
+ BOOL m_bPreview; // TRUE if in preview mode
+ BOOL m_bDirect; // TRUE if bypassing Print Dialog
+ BOOL m_bContinuePrinting;// set to FALSE to prematurely end printing
+ UINT m_nCurPage; // Current page
+ UINT m_nNumPreviewPages; // Desired number of preview pages
+ CString m_strPageDesc; // Format string for page number display
+ LPVOID m_lpUserData; // pointer to user created struct
+ CRect m_rectDraw; // rectangle defining current usable page area
+
+ // these only valid if m_bDocObject
+ UINT m_nOffsetPage; // offset of first page in combined IPrint job
+ DWORD m_dwFlags; // flags passed to IPrint::Print
+
+ void SetMinPage(UINT nMinPage);
+ void SetMaxPage(UINT nMaxPage);
+ UINT GetMinPage() const;
+ UINT GetMaxPage() const;
+ UINT GetFromPage() const;
+ UINT GetToPage() const;
+ UINT GetOffsetPage() const;
+};
+
+struct CPrintPreviewState // Print Preview context/state
+{
+ UINT nIDMainPane; // main pane ID to hide
+ HMENU hMenu; // saved hMenu
+ DWORD dwStates; // Control Bar Visible states (bit map)
+ CView* pViewActiveOld; // save old active view during preview
+ BOOL (CALLBACK* lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ HACCEL hAccelTable; // saved accelerator table
+
+// Implementation
+ CPrintPreviewState();
+};
+
+struct CCreateContext // Creation information structure
+ // All fields are optional and may be NULL
+{
+ // for creating new views
+ CRuntimeClass* m_pNewViewClass; // runtime class of view to create or NULL
+ CDocument* m_pCurrentDoc;
+
+ // for creating MDI children (CMDIChildWnd::LoadFrame)
+ CDocTemplate* m_pNewDocTemplate;
+
+ // for sharing view/frame state from the original view/frame
+ CView* m_pLastView;
+ CFrameWnd* m_pCurrentFrame;
+
+// Implementation
+ CCreateContext();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXEXT_INLINE inline
+#include <afxext.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXEXT_H__
+
+/////////////////////////////////////////////////////////////////////////////