summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/mfc40/afxpriv.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/mfc40/afxpriv.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'public/sdk/inc/mfc40/afxpriv.h')
-rw-r--r--public/sdk/inc/mfc40/afxpriv.h979
1 files changed, 979 insertions, 0 deletions
diff --git a/public/sdk/inc/mfc40/afxpriv.h b/public/sdk/inc/mfc40/afxpriv.h
new file mode 100644
index 000000000..4ac33cfe0
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxpriv.h
@@ -0,0 +1,979 @@
+// 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.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXPRIV_H__
+#define __AFXPRIV_H__
+
+#ifndef __AFXADV_H__
+ #include <afxadv.h>
+#endif
+
+#ifndef _INC_MALLOC
+ #include <malloc.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
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXPRIV - MFC Private Classes
+
+// Implementation structures
+struct AFX_SIZEPARENTPARAMS; // Control bar implementation
+struct AFX_CMDHANDLERINFO; // Command routing implementation
+
+// Classes declared in this file
+
+ //CDC
+ class CPreviewDC; // Virtual DC for print preview
+
+ //CCmdTarget
+ //CWnd
+ //CView
+ class CPreviewView; // Print preview view
+ //CFrameWnd
+ class COleCntrFrameWnd;
+ //CMiniFrameWnd
+ class CMiniDockFrameWnd;
+
+class CDockContext; // for dragging control bars
+
+//IStream
+ class CArchiveStream;
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Global ID ranges (see Technical note TN020 for more details)
+
+// 8000 -> FFFF command IDs (used for menu items, accelerators and controls)
+#define IS_COMMAND_ID(nID) ((nID) & 0x8000)
+
+// 8000 -> DFFF : user commands
+// E000 -> EFFF : AFX commands and other things
+// F000 -> FFFF : standard windows commands and other things etc
+ // E000 -> E7FF standard commands
+ // E800 -> E8FF control bars (first 32 are special)
+ // E900 -> EEFF standard window controls/components
+ // EF00 -> EFFF SC_ menu help
+ // F000 -> FFFF standard strings
+#define ID_COMMAND_FROM_SC(sc) (((sc - 0xF000) >> 4) + AFX_IDS_SCFIRST)
+
+// 0000 -> 7FFF IDR range
+// 0000 -> 6FFF : user resources
+// 7000 -> 7FFF : AFX (and standard windows) resources
+// IDR ranges (NOTE: IDR_ values must be <32768)
+#define ASSERT_VALID_IDR(nIDR) ASSERT((nIDR) != 0 && (nIDR) < 0x8000)
+
+/////////////////////////////////////////////////////////////////////////////
+// Context sensitive help support (see Technical note TN028 for more details)
+
+// Help ID bases
+#define HID_BASE_COMMAND 0x00010000UL // ID and IDM
+#define HID_BASE_RESOURCE 0x00020000UL // IDR and IDD
+#define HID_BASE_PROMPT 0x00030000UL // IDP
+#define HID_BASE_NCAREAS 0x00040000UL
+#define HID_BASE_CONTROL 0x00050000UL // IDC
+#define HID_BASE_DISPATCH 0x00060000UL // IDispatch help codes
+
+/////////////////////////////////////////////////////////////////////////////
+// Internal AFX Windows messages (see Technical note TN024 for more details)
+// (0x0360 - 0x037F are reserved for MFC)
+
+#define WM_QUERYAFXWNDPROC 0x0360 // lResult = 1 if processed by AfxWndProc
+#define WM_SIZEPARENT 0x0361 // lParam = &AFX_SIZEPARENTPARAMS
+#define WM_SETMESSAGESTRING 0x0362 // wParam = nIDS (or 0),
+ // lParam = lpszOther (or NULL)
+#define WM_IDLEUPDATECMDUI 0x0363 // wParam == bDisableIfNoHandler
+#define WM_INITIALUPDATE 0x0364 // (params unused) - sent to children
+#define WM_COMMANDHELP 0x0365 // lResult = TRUE/FALSE,
+ // lParam = dwContext
+#define WM_HELPHITTEST 0x0366 // lResult = dwContext,
+ // lParam = MAKELONG(x,y)
+#define WM_EXITHELPMODE 0x0367 // (params unused)
+#define WM_RECALCPARENT 0x0368 // force RecalcLayout on frame window
+ // (only for inplace frame windows)
+#define WM_SIZECHILD 0x0369 // special notify from COleResizeBar
+ // wParam = ID of child window
+ // lParam = lpRectNew (new position/size)
+#define WM_KICKIDLE 0x036A // (params unused) causes idles to kick in
+#define WM_QUERYCENTERWND 0x036B // lParam = HWND to use as centering parent
+#define WM_DISABLEMODAL 0x036C // lResult = 0, disable during modal state
+ // lResult = 1, don't disable
+#define WM_FLOATSTATUS 0x036D // wParam combination of FS_* flags below
+
+// WM_ACTIVATETOPLEVEL is like WM_ACTIVATEAPP but works with hierarchies
+// of mixed processes (as is the case with OLE in-place activation)
+#define WM_ACTIVATETOPLEVEL 0x036E // wParam = nState (like WM_ACTIVATE)
+ // lParam = pointer to HWND[2]
+ // lParam[0] = hWnd getting WM_ACTIVATE
+ // lParam[1] = hWndOther
+
+#define WM_QUERY3DCONTROLS 0x036F // lResult != 0 if 3D controls wanted
+
+// Note: Messages 0x0370, 0x0371, and 0x372 were incorrectly used by
+// some versions of Windows. To remain compatible, MFC does not
+// use messages in that range.
+#define WM_RESERVED_0370 0x0370
+#define WM_RESERVED_0371 0x0371
+#define WM_RESERVED_0372 0x0372
+
+// WM_SOCKET_NOTIFY and WM_SOCKET_DEAD are used internally by MFC's
+// Windows sockets implementation. For more information, see sockcore.cpp
+#define WM_SOCKET_NOTIFY 0x0373
+#define WM_SOCKET_DEAD 0x0374
+
+// same as WM_SETMESSAGESTRING except not popped if IsTracking()
+#define WM_POPMESSAGESTRING 0x0375
+
+// Constants used in DLGINIT resources for OLE control containers
+#define WM_OCC_LOADFROMSTREAM 0x0376
+#define WM_OCC_LOADFROMSTORAGE 0x0377
+#define WM_OCC_INITNEW 0x0378
+
+// Marker used while rearranging the message queue
+#define WM_QUEUE_SENTINEL 0x0379
+
+// Note: Messages 0x037A - 0x37F reserved for future MFC use.
+#define WM_RESERVED_037A 0x037A
+#define WM_RESERVED_037B 0x037B
+#define WM_RESERVED_037C 0x037C
+#define WM_RESERVED_037D 0x037D
+#define WM_RESERVED_037E 0x037E
+#define WM_RESERVED_037F 0x037F
+
+// like ON_MESSAGE but no return value
+#define ON_MESSAGE_VOID(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))memberFxn },
+
+// special struct for WM_SIZEPARENT
+struct AFX_SIZEPARENTPARAMS
+{
+ HDWP hDWP; // handle for DeferWindowPos
+ RECT rect; // parent client rectangle (trim as appropriate)
+ SIZE sizeTotal; // total size on each side as layout proceeds
+ BOOL bStretch; // should stretch to fill all space
+};
+
+// flags for wParam in the WM_FLOATSTATUS message
+enum { FS_SHOW = 0x01, FS_HIDE = 0x02,
+ FS_ACTIVATE = 0x04, FS_DEACTIVATE = 0x08,
+ FS_ENABLE = 0x10, FS_DISABLE = 0x20,
+ FS_SYNCACTIVE = 0x40 };
+
+void AFXAPI AfxRepositionWindow(AFX_SIZEPARENTPARAMS* lpLayout,
+ HWND hWnd, LPCRECT lpRect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of command routing
+
+struct AFX_CMDHANDLERINFO
+{
+ CCmdTarget* pTarget;
+ void (AFX_MSG_CALL CCmdTarget::*pmf)(void);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of event sink handling
+
+#ifndef _AFX_NO_OLE_SUPPORT
+#ifdef _OBJBASE_H_
+
+struct AFX_EVENT
+{
+ enum { event, propRequest, propChanged };
+
+ AFX_EVENT(int eventKind, DISPID dispid, DISPPARAMS* pDispParams = NULL,
+ EXCEPINFO* pExcepInfo = NULL, UINT* puArgError = NULL);
+
+ int m_eventKind;
+ DISPID m_dispid;
+ DISPPARAMS* m_pDispParams;
+ EXCEPINFO* m_pExcepInfo;
+ UINT* m_puArgError;
+ BOOL m_bPropChanged;
+ HRESULT m_hResult;
+};
+
+inline AFX_EVENT::AFX_EVENT(int eventKind, DISPID dispid,
+ DISPPARAMS* pDispParams, EXCEPINFO* pExcepInfo, UINT* puArgError)
+{
+ m_eventKind = eventKind;
+ m_dispid = dispid;
+ m_pDispParams = pDispParams;
+ m_pExcepInfo = pExcepInfo;
+ m_puArgError = puArgError;
+ m_hResult = NOERROR;
+}
+
+#endif
+#endif // _AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// Robust file save support
+// opens a temp file if modeCreate specified and enough free space
+// renaming, etc occurs automatically if everything succeeds
+
+class CMirrorFile : public CFile
+{
+// Implementation
+public:
+ virtual void Abort();
+ virtual void Close();
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+
+protected:
+ CString m_strMirrorName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of PrintPreview
+
+class CPreviewDC : public CDC
+{
+ DECLARE_DYNAMIC(CPreviewDC)
+
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC);
+
+ virtual void ReleaseOutputDC();
+
+// Constructors
+ CPreviewDC();
+
+// Implementation
+public:
+ virtual ~CPreviewDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ void SetScaleRatio(int nNumerator, int nDenominator);
+ void SetTopLeftOffset(CSize TopLeft);
+ void ClipToPage();
+
+ // These conversion functions can be used without an output DC
+
+ void PrinterDPtoScreenDP(LPPOINT lpPoint) const;
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ virtual CFont* SelectObject(CFont* pFont);
+
+// Drawing-Attribute Functions
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+// Mapping Functions
+ virtual int SetMapMode(int nMapMode);
+ virtual CPoint SetViewportOrg(int x, int y);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+ virtual CSize SetWindowExt(int x, int y);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Implementation
+protected:
+ void MirrorMappingMode(BOOL bCompute);
+ void MirrorViewportOrg();
+ void MirrorFont();
+ void MirrorAttributes();
+
+ CSize ComputeDeltas(int& x, LPCTSTR lpszString, UINT& nCount, BOOL bTabbed,
+ UINT nTabStops, LPINT lpnTabStops, int nTabOrigin,
+ LPTSTR lpszOutputString, int* pnDxWidths, int& nRightFixup);
+
+protected:
+ int m_nScaleNum; // Scale ratio Numerator
+ int m_nScaleDen; // Scale ratio Denominator
+ int m_nSaveDCIndex; // DC Save index when Screen DC Attached
+ int m_nSaveDCDelta; // delta between Attrib and output restore indices
+ CSize m_sizeTopLeft;// Offset for top left corner of page
+ HFONT m_hFont; // Font selected into the screen DC (NULL if none)
+ HFONT m_hPrinterFont; // Font selected into the print DC
+#ifdef _MAC
+ int m_aCharWidthsDraw[256]; // character widths for m_hDC
+ int m_aCharWidthsAttrib[256]; // character widths for m_hAttribDC
+#endif
+
+ CSize m_sizeWinExt; // cached window extents computed for screen
+ CSize m_sizeVpExt; // cached viewport extents computed for screen
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPreviewView
+
+class CDialogBar;
+
+class CPreviewView : public CScrollView
+{
+ DECLARE_DYNCREATE(CPreviewView)
+
+// Constructors
+public:
+ CPreviewView();
+ BOOL SetPrintView(CView* pPrintView);
+
+// Attributes
+protected:
+ CView* m_pOrigView;
+ CView* m_pPrintView;
+ CPreviewDC* m_pPreviewDC; // Output and attrib DCs Set, not created
+ CDC m_dcPrint; // Actual printer DC
+
+// Operations
+ void SetZoomState(UINT nNewState, UINT nPage, CPoint point);
+ void SetCurrentPage(UINT nPage, BOOL bClearRatios);
+
+ // Returns TRUE if in a page rect. Returns the page index
+ // in nPage and the point converted to 1:1 screen device coordinates
+ BOOL FindPageRect(CPoint& point, UINT& nPage);
+
+
+// Overridables
+ virtual void OnActivateView(BOOL bActivate,
+ CView* pActivateView, CView* pDeactiveView);
+
+ // Returns .cx/.cy as the numerator/denominator pair for the ratio
+ // using CSize for convenience
+ virtual CSize CalcScaleRatio(CSize windowSize, CSize actualSize);
+
+ virtual void PositionPage(UINT nPage);
+ virtual void OnDisplayPageNumber(UINT nPage, UINT nPagesDisplayed);
+
+// Implementation
+public:
+ virtual ~CPreviewView();
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+#ifdef _MAC
+ virtual void CalcWindowRect(LPRECT lpClientRect);
+#endif
+
+protected:
+ //{{AFX_MSG(CPreviewView)
+ afx_msg void OnPreviewClose();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnDraw(CDC* pDC);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnNumPageChange();
+ afx_msg void OnNextPage();
+ afx_msg void OnPrevPage();
+ afx_msg void OnPreviewPrint();
+ afx_msg void OnZoomIn();
+ afx_msg void OnZoomOut();
+ afx_msg void OnUpdateNumPageChange(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNextPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePrevPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomIn(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomOut(CCmdUI* pCmdUI);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ //}}AFX_MSG
+
+ void DoZoom(UINT nPage, CPoint point);
+ void SetScaledSize(UINT nPage);
+ CSize CalcPageDisplaySize();
+
+ CPrintPreviewState* m_pPreviewState; // State to restore
+ CDialogBar* m_pToolBar; // Toolbar for preview
+
+ struct PAGE_INFO
+ {
+ CRect rectScreen; // screen rect (screen device units)
+ CSize sizeUnscaled; // unscaled screen rect (screen device units)
+ CSize sizeScaleRatio; // scale ratio (cx/cy)
+ CSize sizeZoomOutRatio; // scale ratio when zoomed out (cx/cy)
+ };
+
+ PAGE_INFO* m_pPageInfo; // Array of page info structures
+ PAGE_INFO m_pageInfoArray[2]; // Embedded array for the default implementation
+
+ BOOL m_bPageNumDisplayed;// Flags whether or not page number has yet
+ // been displayed on status line
+ UINT m_nZoomOutPages; // number of pages when zoomed out
+ UINT m_nZoomState;
+ UINT m_nMaxPages; // for sanity checks
+ UINT m_nCurrentPage;
+ UINT m_nPages;
+ int m_nSecondPageOffset; // used to shift second page position
+
+ HCURSOR m_hMagnifyCursor;
+
+ CSize m_sizePrinterPPI; // printer pixels per inch
+ CPoint m_ptCenterPoint;
+ CPrintInfo* m_pPreviewInfo;
+
+ DECLARE_MESSAGE_MAP()
+
+ friend class CView;
+ friend BOOL CALLBACK _AfxPreviewCloseProc(CFrameWnd* pFrameWnd);
+};
+
+// Zoom States
+#define ZOOM_OUT 0
+#define ZOOM_MIDDLE 1
+#define ZOOM_IN 2
+
+/////////////////////////////////////////////////////////////////////////////
+// toolbar docking support
+
+class CDockContext
+{
+public:
+// Construction
+ CDockContext(CControlBar* pBar);
+
+// Attributes
+ CPoint m_ptLast; // last mouse position during drag
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bDitherLast;
+
+ // Rectangles used during dragging or resizing
+ CRect m_rectDragHorz;
+ CRect m_rectDragVert;
+ CRect m_rectFrameDragHorz;
+ CRect m_rectFrameDragVert;
+
+ CControlBar* m_pBar; // the toolbar that created this context
+ CFrameWnd* m_pDockSite; // the controlling frame of the CControlBar
+ DWORD m_dwDockStyle; // allowable dock styles for bar
+ DWORD m_dwOverDockStyle; // style of dock that rect is over
+ DWORD m_dwStyle; // style of control bar
+ BOOL m_bFlip; // if shift key is down
+ BOOL m_bForceFrame; // if ctrl key is down
+
+ CDC* m_pDC; // where to draw during drag
+ BOOL m_bDragging;
+ int m_nHitTest;
+
+ UINT m_uMRUDockID;
+ CRect m_rectMRUDockPos;
+
+ DWORD m_dwMRUFloatStyle;
+ CPoint m_ptMRUFloatPos;
+
+// Drag Operations
+ virtual void StartDrag(CPoint pt);
+ void Move(CPoint pt); // called when mouse has moved
+ void EndDrag(); // drop
+ void OnKey(int nChar, BOOL bDown);
+
+// Resize Operations
+ virtual void StartResize(int nHitTest, CPoint pt);
+ void Stretch(CPoint pt);
+ void EndResize();
+
+// Double Click Operations
+ virtual void ToggleDocking();
+
+// Operations
+ void InitLoop();
+ void CancelLoop();
+
+// Implementation
+public:
+ ~CDockContext();
+ BOOL Track();
+ void DrawFocusRect(BOOL bRemoveRect = FALSE);
+ // draws the correct outline
+ void UpdateState(BOOL* pFlag, BOOL bNewValue);
+ DWORD CanDock();
+ CDockBar* GetDockBar(DWORD dwOverDockStyle);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CControlBarInfo - used for docking serialization
+
+class CControlBarInfo
+{
+public:
+// Implementation
+ CControlBarInfo();
+
+// Attributes
+ UINT m_nBarID; // ID of this bar
+ BOOL m_bVisible; // visibility of this bar
+ BOOL m_bFloating; // whether floating or not
+ BOOL m_bHorz; // orientation of floating dockbar
+ BOOL m_bDockBar; // true if a dockbar
+ CPoint m_pointPos; // topleft point of window
+
+ UINT m_nMRUWidth; // MRUWidth for Dynamic Toolbars
+ BOOL m_bDocking; // TRUE if this bar has a DockContext
+ UINT m_uMRUDockID; // most recent docked dockbar
+ CRect m_rectMRUDockPos; // most recent docked position
+ DWORD m_dwMRUFloatStyle; // most recent floating orientation
+ CPoint m_ptMRUFloatPos; // most recent floating position
+
+ CPtrArray m_arrBarID; // bar IDs for bars contained within this one
+ CControlBar* m_pBar; // bar which this refers to (transient)
+
+ void Serialize(CArchive& ar, CDockState* pDockState);
+ BOOL LoadState(LPCTSTR lpszProfileName, int nIndex, CDockState* pDockState);
+ BOOL SaveState(LPCTSTR lpszProfileName, int nIndex);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDockBar - used for docking
+
+class CDockBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDockBar)
+
+// Construction
+public:
+ CDockBar(BOOL bFloating = FALSE); //true if attached to CMiniDockFrameWnd
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle, UINT nID);
+
+// Attributes
+ BOOL m_bFloating;
+
+ virtual BOOL IsDockBar() const;
+ int GetDockedCount() const;
+ virtual int GetDockedVisibleCount() const;
+
+// Operations
+ void DockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ void ReDockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ BOOL RemoveControlBar(CControlBar*, int nPosExclude = -1);
+ void RemovePlaceHolder(CControlBar* pBar);
+
+// Implementation
+public:
+ virtual ~CDockBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual void DoPaint(CDC* pDC);
+
+ // public implementation helpers
+ void GetBarInfo(CControlBarInfo* pInfo);
+ void SetBarInfo(CControlBarInfo* pInfo, CFrameWnd* pFrameWnd);
+ int FindBar(CControlBar* pBar, int nPosExclude = -1);
+ void ShowAll(BOOL bShow);
+
+protected:
+ CPtrArray m_arrBars; // each element is a CControlBar
+ BOOL m_bLayoutQuery;
+ CRect m_rectLayout;
+
+ CControlBar* GetDockedControlBar(int nPos) const;
+
+ // implementation helpers
+ int Insert(CControlBar* pBar, CRect rect, CPoint ptMid);
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+ //{{AFX_MSG(CDockBar)
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg void OnNcPaint();
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg void OnPaint();
+ afx_msg LRESULT OnSizeParent(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CMiniDockFrameWnd;
+};
+
+class CMiniDockFrameWnd : public CMiniFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniDockFrameWnd)
+
+public:
+// Construction
+ CMiniDockFrameWnd();
+ virtual BOOL Create(CWnd* pParent, DWORD dwBarStyle);
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+
+// Implementation
+public:
+ CDockBar m_wndDockBar;
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg void OnClose();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCntrFrameWnd
+
+class COleIPFrameWnd;
+
+class COleCntrFrameWnd : public CFrameWnd
+{
+// Constructor
+public:
+ COleCntrFrameWnd(COleIPFrameWnd* pInPlaceFrame);
+
+// Implementation
+protected:
+ COleIPFrameWnd* m_pInPlaceFrame;
+ virtual void PostNcDestroy();
+
+public:
+ virtual ~COleCntrFrameWnd();
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ void OnIdleUpdateCmdUI();
+#ifdef _DEBUG
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControlLock
+
+#ifdef __AFXDISP_H__
+
+class COleControlLock
+{
+// Constructors
+public:
+ COleControlLock(REFCLSID clsid);
+
+// Attributes
+ CLSID m_clsid;
+ LPCLASSFACTORY m_pClassFactory;
+ COleControlLock* m_pNextLock;
+
+// Implementation
+public:
+ virtual ~COleControlLock();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CArchiveStream
+
+class CArchiveStream : public IStream
+{
+public:
+ CArchiveStream(CArchive* pArchive);
+
+// Implementation
+ CArchive* m_pArchive;
+
+ STDMETHOD_(ULONG, AddRef)();
+ STDMETHOD_(ULONG, Release)();
+ STDMETHOD(QueryInterface)(REFIID, LPVOID*);
+
+ STDMETHOD(Read)(void*, ULONG, ULONG*);
+ STDMETHOD(Write)(const void*, ULONG cb, ULONG*);
+ STDMETHOD(Seek)(LARGE_INTEGER, DWORD, ULARGE_INTEGER*);
+ STDMETHOD(SetSize)(ULARGE_INTEGER);
+ STDMETHOD(CopyTo)(LPSTREAM, ULARGE_INTEGER, ULARGE_INTEGER*,
+ ULARGE_INTEGER*);
+ STDMETHOD(Commit)(DWORD);
+ STDMETHOD(Revert)();
+ STDMETHOD(LockRegion)(ULARGE_INTEGER, ULARGE_INTEGER,DWORD);
+ STDMETHOD(UnlockRegion)(ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
+ STDMETHOD(Stat)(STATSTG*, DWORD);
+ STDMETHOD(Clone)(LPSTREAM*);
+};
+
+#endif // __AFX_DISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
+// CDialogTemplate
+
+#ifndef _MAC
+
+class CDialogTemplate
+{
+// Constructors
+public:
+ CDialogTemplate(const DLGTEMPLATE* pTemplate = NULL);
+ CDialogTemplate(HGLOBAL hGlobal);
+
+// Attributes
+ BOOL HasFont() const;
+ BOOL SetFont(LPCTSTR lpFaceName, WORD nFontSize);
+ BOOL SetSystemFont(WORD nFontSize = 0);
+ BOOL GetFont(CString& strFaceName, WORD& nFontSize) const;
+ void GetSizeInDialogUnits(SIZE* pSize) const;
+ void GetSizeInPixels(SIZE* pSize) const;
+
+ static BOOL AFX_CDECL GetFont(const DLGTEMPLATE* pTemplate,
+ CString& strFaceName, WORD& nFontSize);
+
+// Operations
+ BOOL Load(LPCTSTR lpDialogTemplateID);
+ HGLOBAL Detach();
+
+// Implementation
+public:
+ ~CDialogTemplate();
+
+ HGLOBAL m_hTemplate;
+ DWORD m_dwTemplateSize;
+ BOOL m_bSystemFont;
+
+protected:
+ static BYTE* AFX_CDECL GetFontSizeField(const DLGTEMPLATE* pTemplate);
+ static UINT AFX_CDECL GetTemplateSize(const DLGTEMPLATE* pTemplate);
+ BOOL SetTemplate(const DLGTEMPLATE* pTemplate, UINT cb);
+};
+
+#endif //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// WM_NOTIFY support
+
+struct AFX_NOTIFY
+{
+ LRESULT* pResult;
+ NMHDR* pNMHDR;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global implementation helpers
+
+// window creation hooking
+void AFXAPI AfxHookWindowCreate(CWnd* pWnd);
+BOOL AFXAPI AfxUnhookWindowCreate();
+void AFXAPI AfxResetMsgCache();
+
+// for backward compatibility to previous versions
+#define _AfxHookWindowCreate AfxHookWindowCreate
+#define _AfxUnhookWindowCreate AfxUnhookWindowCreate
+
+// string helpers
+void AFXAPI AfxSetWindowText(HWND hWndCtrl, LPCTSTR lpszNew);
+int AFXAPI AfxLoadString(UINT nIDS, LPTSTR lpszBuf, UINT nMaxBuf = 256);
+
+HDC AFXAPI AfxCreateDC(HGLOBAL hDevNames, HGLOBAL hDevMode);
+
+void AFXAPI AfxGetModuleShortFileName(HINSTANCE hInst, CString& strShortName);
+
+// Failure dialog helpers
+void AFXAPI AfxFailMaxChars(CDataExchange* pDX, int nChars);
+void AFXAPI AfxFailRadio(CDataExchange* pDX);
+
+// DLL load helpers
+HINSTANCE AFXAPI AfxLoadDll(HINSTANCE& hInst, LPCSTR lpszDLL);
+HINSTANCE AFXAPI AfxLoadDll(HINSTANCE& hInst, LPCSTR lpszDLL,
+ FARPROC* pProcPtrs, LPCSTR lpszProcName);
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+LPDEVMODEW AFXAPI AfxDevModeA2W(LPDEVMODEW lpDevModeW, LPDEVMODEA lpDevModeA);
+LPDEVMODEA AFXAPI AfxDevModeW2A(LPDEVMODEA lpDevModeA, LPDEVMODEW lpDevModeW);
+#define DEVMODEW2A(lpw)\
+ ((lpw == NULL) ? NULL : AfxDevModeW2A((LPDEVMODEA)alloca(sizeof(DEVMODEA)+lpw->dmDriverExtra), lpw))
+#define DEVMODEA2W(lpa)\
+ ((lpa == NULL) ? NULL : AfxDevModeA2W((LPDEVMODEW)alloca(sizeof(DEVMODEW)+lpa->dmDriverExtra), lpa))
+
+LPTEXTMETRICW AFXAPI AfxTextMetricA2W(LPTEXTMETRICW lptmW, LPTEXTMETRICA pltmA);
+LPTEXTMETRICA AFXAPI AfxTextMetricW2A(LPTEXTMETRICA lptmA, LPTEXTMETRICW pltmW);
+#define TEXTMETRICW2A(lptmw)\
+ ((lptmw == NULL) ? NULL : AfxTextMetricW2A((LPTEXTMETRICA)alloca(sizeof(TEXTMETRICA)), lptmw))
+#define TEXTMETRICA2W(lptma)\
+ ((lptma == NULL) ? NULL : AfxTextMetricA2W((LPTEXTMETRICW)alloca(sizeof(TEXTMETRICW)), lptma))
+
+LPWSTR AFXAPI AfxA2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars);
+LPSTR AFXAPI AfxW2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars);
+
+#define A2CW(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (strlen(lpa)+1),\
+ (LPCWSTR)AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define A2W(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (strlen(lpa)+1),\
+ AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define W2CA(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ (LPCSTR)AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#define W2A(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#ifndef _DEBUG
+#define USES_CONVERSION int _convert; _convert
+#else
+#define USES_CONVERSION int _convert = 0;
+#endif
+
+#ifdef __AFXDISP_H__
+
+void AFXAPI AfxBSTR2CString(CString* pStr, BSTR bstr);
+
+#if !defined(_UNICODE) && !defined(OLE2ANSI)
+BSTR AFXAPI AfxBSTR2ABSTR(BSTR bstrW);
+LPWSTR AFXAPI AfxTaskStringA2W(LPCSTR lpa);
+LPSTR AFXAPI AfxTaskStringW2A(LPCWSTR lpw);
+#endif
+
+#define OLESTDDELIMOLE OLESTR("\\")
+
+#if defined(_UNICODE)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODEW DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODEW lp) { return lp; }
+ inline LPTEXTMETRICW TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRICW lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr;}
+#elif defined(OLE2ANSI)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEA
+ #define LPDEVMODEOLE LPDEVMODEA
+ #define TEXTMETRICOLE TEXTMETRICA
+ #define LPTEXTMETRICOLE LPTEXTMETRICA
+ inline size_t ocslen(LPCOLESTR x) { return strlen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return strcpy(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODE DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODE lp) { return lp; }
+ inline LPTEXTMETRIC TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRIC lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr; }
+#else
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ #define T2COLE(lpa) A2CW(lpa)
+ #define T2OLE(lpa) A2W(lpa)
+ #define OLE2CT(lpo) W2CA(lpo)
+ #define OLE2T(lpo) W2A(lpo)
+ #define TASKSTRINGT2OLE(lpa) AfxTaskStringA2W(lpa)
+ #define TASKSTRINGOLE2T(lpo) AfxTaskStringW2A(lpo)
+ #define DEVMODEOLE2T(lpo) DEVMODEW2A(lpo)
+ #define DEVMODET2OLE(lpa) DEVMODEA2W(lpa)
+ #define TEXTMETRICOLE2T(lptmw) TEXTMETRICW2A(lptmw)
+ #define TEXTMETRICT2OLE(lptma) TEXTMETRICA2W(lptma)
+ #define BSTR2TBSTR(bstr) AfxBSTR2ABSTR(bstr)
+#endif
+
+#ifdef _UNICODE
+ #define T2A W2A
+ #define A2T A2W
+ #define T2W(x) (x)
+ #define W2T(x) (x)
+#else
+ #define T2W A2W
+ #define W2T W2A
+ #define T2A(x) (x)
+ #define A2T(x) (x)
+#endif
+
+#endif //__AFXDISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXPRIV_H__
+
+/////////////////////////////////////////////////////////////////////////////