home *** CD-ROM | disk | FTP | other *** search
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 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 __AFXWIN_H__
- #ifndef RC_INVOKED
- #define __AFXWIN_H__
-
- /////////////////////////////////////////////////////////////////////////////
- // Make sure 'afx.h' is included first
-
- #ifndef __AFX_H__
- #include <afx.h>
- #endif
-
- // Note: WINDOWS.H already included from AFXV_W32.H
-
- #ifndef _INC_SHELLAPI
- #include <shellapi.h>
- #endif
-
- #ifndef __AFXRES_H__
- #include <afxres.h> // standard resource IDs
- #endif
-
- #ifndef __AFXCOLL_H__
- #include <afxcoll.h> // standard collections
- #endif
-
- #ifdef _AFX_MINREBUILD
- #pragma component(minrebuild, off)
- #endif
- #ifndef _AFX_FULLTYPEINFO
- #pragma component(mintypeinfo, on)
- #endif
-
- #ifndef _AFX_NOFORCE_LIBS
- #pragma comment(lib, "uuid.lib")
- #endif
-
- #ifdef _INC_WINDOWSX
- // The following names from WINDOWSX.H collide with names in this header
- #undef SubclassWindow
- #undef CopyRgn
- #endif
-
- #ifdef _AFX_PACKING
- #pragma pack(push, _AFX_PACKING)
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // Classes declared in this file
-
- class CSize;
- class CPoint;
- class CRect;
-
- //CObject
- //CException
- //CSimpleException
- class CResourceException;// Win resource failure exception
- class CUserException; // Message Box alert and stop operation
-
- class CGdiObject; // CDC drawing tool
- class CPen; // a pen / HPEN wrapper
- class CBrush; // a brush / HBRUSH wrapper
- class CFont; // a font / HFONT wrapper
- class CBitmap; // a bitmap / HBITMAP wrapper
- class CPalette; // a palette / HPALLETE wrapper
- class CRgn; // a region / HRGN wrapper
-
- class CDC; // a Display Context / HDC wrapper
- class CClientDC; // CDC for client of window
- class CWindowDC; // CDC for entire window
- class CPaintDC; // embeddable BeginPaint struct helper
-
- class CMenu; // a menu / HMENU wrapper
-
- class CCmdTarget; // a target for user commands
- class CWnd; // a window / HWND wrapper
- class CDialog; // a dialog
-
- // standard windows controls
- class CStatic; // Static control
- class CButton; // Button control
- class CListBox; // ListBox control
- class CCheckListBox;// special listbox with checks
- class CComboBox; // ComboBox control
- class CEdit; // Edit control
- class CScrollBar; // ScrollBar control
-
- // frame windows
- class CFrameWnd; // standard SDI frame
- class CMDIFrameWnd; // standard MDI frame
- class CMDIChildWnd; // standard MDI child
- class CMiniFrameWnd;// half-height caption frame wnd
-
- // views on a document
- class CView; // a view on a document
- class CScrollView; // a scrolling view
-
- class CWinThread; // thread base class
- class CWinApp; // application base class
-
- class CDocTemplate; // template for document creation
- class CSingleDocTemplate;// SDI support
- class CMultiDocTemplate; // MDI support
-
- class CDocument; // main document abstraction
-
-
- // Helper classes
- class CCmdUI; // Menu/button enabling
- class CDataExchange; // Data exchange and validation context
- class CCommandLineInfo; // CommandLine parsing helper
- class CDocManager; // CDocTemplate manager object
-
- /////////////////////////////////////////////////////////////////////////////
-
- // Type modifier for message handlers
- #ifndef afx_msg
- #define afx_msg // intentional placeholder
- #endif
-
- #undef AFX_DATA
- #define AFX_DATA AFX_CORE_DATA
-
- /////////////////////////////////////////////////////////////////////////////
- // CSize - An extent, similar to Windows SIZE structure.
-
- class CSize : public tagSIZE
- {
- public:
-
- // Constructors
- // construct an uninitialized size
- CSize();
- // create from two integers
- CSize(int initCX, int initCY);
- // create from another size
- CSize(SIZE initSize);
- // create from a point
- CSize(POINT initPt);
- // create from a DWORD: cx = LOWORD(dw) cy = HIWORD(dw)
- CSize(DWORD dwSize);
-
- // Operations
- BOOL operator==(SIZE size) const;
- BOOL operator!=(SIZE size) const;
- void operator+=(SIZE size);
- void operator-=(SIZE size);
-
- // Operators returning CSize values
- CSize operator+(SIZE size) const;
- CSize operator-(SIZE size) const;
- CSize operator-() const;
-
- // Operators returning CPoint values
- CPoint operator+(POINT point) const;
- CPoint operator-(POINT point) const;
-
- // Operators returning CRect values
- CRect operator+(const RECT* lpRect) const;
- CRect operator-(const RECT* lpRect) const;
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CPoint - A 2-D point, similar to Windows POINT structure.
-
- class CPoint : public tagPOINT
- {
- public:
- // Constructors
-
- // create an uninitialized point
- CPoint();
- // create from two integers
- CPoint(int initX, int initY);
- // create from another point
- CPoint(POINT initPt);
- // create from a size
- CPoint(SIZE initSize);
- // create from a dword: x = LOWORD(dw) y = HIWORD(dw)
- CPoint(DWORD dwPoint);
-
- // Operations
-
- // translate the point
- void Offset(int xOffset, int yOffset);
- void Offset(POINT point);
- void Offset(SIZE size);
-
- BOOL operator==(POINT point) const;
- BOOL operator!=(POINT point) const;
- void operator+=(SIZE size);
- void operator-=(SIZE size);
- void operator+=(POINT point);
- void operator-=(POINT point);
-
- // Operators returning CPoint values
- CPoint operator+(SIZE size) const;
- CPoint operator-(SIZE size) const;
- CPoint operator-() const;
- CPoint operator+(POINT point) const;
-
- // Operators returning CSize values
- CSize operator-(POINT point) const;
-
- // Operators returning CRect values
- CRect operator+(const RECT* lpRect) const;
- CRect operator-(const RECT* lpRect) const;
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CRect - A 2-D rectangle, similar to Windows RECT structure.
-
- typedef const RECT* LPCRECT; // pointer to read/only RECT
-
- class CRect : public tagRECT
- {
- public:
-
- // Constructors
-
- // uninitialized rectangle
- CRect();
- // from left, top, right, and bottom
- CRect(int l, int t, int r, int b);
- // copy constructor
- CRect(const RECT& srcRect);
- // from a pointer to another rect
- CRect(LPCRECT lpSrcRect);
- // from a point and size
- CRect(POINT point, SIZE size);
- // from two points
- CRect(POINT topLeft, POINT bottomRight);
-
- // Attributes (in addition to RECT members)
-
- // retrieves the width
- int Width() const;
- // returns the height
- int Height() const;
- // returns the size
- CSize Size() const;
- // reference to the top-left point
- CPoint& TopLeft();
- // reference to the bottom-right point
- CPoint& BottomRight();
- // const reference to the top-left point
- const CPoint& TopLeft() const;
- // const reference to the bottom-right point
- const CPoint& BottomRight() const;
- // the geometric center point of the rectangle
- CPoint CenterPoint() const;
- // swap the left and right
- void SwapLeftRight();
- static void SwapLeftRight(LPRECT lpRect);
-
- // convert between CRect and LPRECT/LPCRECT (no need for &)
- operator LPRECT();
- operator LPCRECT() const;
-
- // returns TRUE if rectangle has no area
- BOOL IsRectEmpty() const;
- // returns TRUE if rectangle is at (0,0) and has no area
- BOOL IsRectNull() const;
- // returns TRUE if point is within rectangle
- BOOL PtInRect(POINT point) const;
-
- // Operations
-
- // set rectangle from left, top, right, and bottom
- void SetRect(int x1, int y1, int x2, int y2);
- void SetRect(POINT topLeft, POINT bottomRight);
- // empty the rectangle
- void SetRectEmpty();
- // copy from another rectangle
- void CopyRect(LPCRECT lpSrcRect);
- // TRUE if exactly the same as another rectangle
- BOOL EqualRect(LPCRECT lpRect) const;
-
- // inflate rectangle's width and height without
- // moving its top or left
- void InflateRect(int x, int y);
- void InflateRect(SIZE size);
- void InflateRect(LPCRECT lpRect);
- void InflateRect(int l, int t, int r, int b);
- // deflate the rectangle's width and height without
- // moving its top or left
- void DeflateRect(int x, int y);
- void DeflateRect(SIZE size);
- void DeflateRect(LPCRECT lpRect);
- void DeflateRect(int l, int t, int r, int b);
-
- // translate the rectangle by moving its top and left
- void OffsetRect(int x, int y);
- void OffsetRect(SIZE size);
- void OffsetRect(POINT point);
- void NormalizeRect();
-
- // set this rectangle to intersection of two others
- BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2);
-
- // set this rectangle to bounding union of two others
- BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2);
-
- // set this rectangle to minimum of two others
- BOOL SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2);
-
- // Additional Operations
- void operator=(const RECT& srcRect);
- BOOL operator==(const RECT& rect) const;
- BOOL operator!=(const RECT& rect) const;
- void operator+=(POINT point);
- void operator+=(SIZE size);
- void operator+=(LPCRECT lpRect);
- void operator-=(POINT point);
- void operator-=(SIZE size);
- void operator-=(LPCRECT lpRect);
- void operator&=(const RECT& rect);
- void operator|=(const RECT& rect);
-
- // Operators returning CRect values
- CRect operator+(POINT point) const;
- CRect operator-(POINT point) const;
- CRect operator+(LPCRECT lpRect) const;
- CRect operator+(SIZE size) const;
- CRect operator-(SIZE size) const;
- CRect operator-(LPCRECT lpRect) const;
- CRect operator&(const RECT& rect2) const;
- CRect operator|(const RECT& rect2) const;
- CRect MulDiv(int nMultiplier, int nDivisor) const;
- };
-
- #ifdef _DEBUG
- // Diagnostic Output
- CDumpContext& AFXAPI operator<<(CDumpContext& dc, SIZE size);
- CDumpContext& AFXAPI operator<<(CDumpContext& dc, POINT point);
- CDumpContext& AFXAPI operator<<(CDumpContext& dc, const RECT& rect);
- #endif //_DEBUG
-
- // Serialization
- CArchive& AFXAPI operator<<(CArchive& ar, SIZE size);
- CArchive& AFXAPI operator<<(CArchive& ar, POINT point);
- CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect);
- CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size);
- CArchive& AFXAPI operator>>(CArchive& ar, POINT& point);
- CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect);
-
- /////////////////////////////////////////////////////////////////////////////
- // Standard exceptions
-
- class CResourceException : public CSimpleException // resource failure
- {
- DECLARE_DYNAMIC(CResourceException)
- public:
- CResourceException();
-
- // Implementation
- public:
- CResourceException(BOOL bAutoDelete);
- CResourceException(BOOL bAutoDelete, UINT nResourceID);
- virtual ~CResourceException();
- };
-
- class CUserException : public CSimpleException // general user visible alert
- {
- DECLARE_DYNAMIC(CUserException)
- public:
- CUserException();
-
- // Implementation
- public:
- CUserException(BOOL bAutoDelete);
- CUserException(BOOL bAutoDelete, UINT nResourceID);
- virtual ~CUserException();
- };
-
- void AFXAPI AfxThrowResourceException();
- void AFXAPI AfxThrowUserException();
-
- /////////////////////////////////////////////////////////////////////////////
- // CGdiObject abstract class for CDC SelectObject
-
- class CGdiObject : public CObject
- {
- DECLARE_DYNCREATE(CGdiObject)
- public:
-
- // Attributes
- HGDIOBJ m_hObject; // must be first data member
- operator HGDIOBJ() const;
- HGDIOBJ GetSafeHandle() const;
-
- static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);
- static void PASCAL DeleteTempMap();
- BOOL Attach(HGDIOBJ hObject);
- HGDIOBJ Detach();
-
- // Constructors
- CGdiObject(); // must Create a derived class object
- BOOL DeleteObject();
-
- // Operations
- int GetObject(int nCount, LPVOID lpObject) const;
- UINT GetObjectType() const;
- BOOL CreateStockObject(int nIndex);
- BOOL UnrealizeObject();
- BOOL operator==(const CGdiObject& obj) const;
- BOOL operator!=(const CGdiObject& obj) const;
-
- // Implementation
- public:
- virtual ~CGdiObject();
- #ifdef _DEBUG
- virtual void Dump(CDumpContext& dc) const;
- virtual void AssertValid() const;
- #endif
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CGdiObject subclasses (drawing tools)
-
- class CPen : public CGdiObject
- {
- DECLARE_DYNAMIC(CPen)
-
- public:
- static CPen* PASCAL FromHandle(HPEN hPen);
-
- // Constructors
- CPen();
- CPen(int nPenStyle, int nWidth, COLORREF crColor);
- CPen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
- int nStyleCount = 0, const DWORD* lpStyle = NULL);
- BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor);
- BOOL CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
- int nStyleCount = 0, const DWORD* lpStyle = NULL);
- BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
-
- // Attributes
- operator HPEN() const;
- int GetLogPen(LOGPEN* pLogPen);
- int GetExtLogPen(EXTLOGPEN* pLogPen);
-
- // Implementation
- public:
- virtual ~CPen();
- #ifdef _DEBUG
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
-
- class CBrush : public CGdiObject
- {
- DECLARE_DYNAMIC(CBrush)
-
- public:
- static CBrush* PASCAL FromHandle(HBRUSH hBrush);
-
- // Constructors
- CBrush();
- CBrush(COLORREF crColor); // CreateSolidBrush
- CBrush(int nIndex, COLORREF crColor); // CreateHatchBrush
- CBrush(CBitmap* pBitmap); // CreatePatternBrush
-
- BOOL CreateSolidBrush(COLORREF crColor);
- BOOL CreateHatchBrush(int nIndex, COLORREF crColor);
- BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
- BOOL CreatePatternBrush(CBitmap* pBitmap);
- BOOL CreateDIBPatternBrush(HGLOBAL hPackedDIB, UINT nUsage);
- BOOL CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage);
- BOOL CreateSysColorBrush(int nIndex);
-
- // Attributes
- operator HBRUSH() const;
- int GetLogBrush(LOGBRUSH* pLogBrush);
-
- // Implementation
- public:
- virtual ~CBrush();
- #ifdef _DEBUG
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
-
- class CFont : public CGdiObject
- {
- DECLARE_DYNAMIC(CFont)
-
- public:
- static CFont* PASCAL FromHandle(HFONT hFont);
-
- // Constructors
- CFont();
- BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
- BOOL CreateFont(int nHeight, int nWidth, int nEscapement,
- int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
- BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
- BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
- LPCTSTR lpszFacename);
- BOOL CreatePointFont(int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL);
- BOOL CreatePointFontIndirect(const LOGFONT* lpLogFont, CDC* pDC = NULL);
-
- // Attributes
- operator HFONT() const;
- int GetLogFont(LOGFONT* pLogFont);
-
- // Implementation
- public:
- virtual ~CFont();
- #ifdef _DEBUG
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
-
- class CBitmap : public CGdiObject
- {
- DECLARE_DYNAMIC(CBitmap)
-
- public:
- static CBitmap* PASCAL FromHandle(HBITMAP hBitmap);
-
- // Constructors
- CBitmap();
-
- BOOL LoadBitmap(LPCTSTR lpszResourceName);
- BOOL LoadBitmap(UINT nIDResource);
- BOOL LoadOEMBitmap(UINT nIDBitmap); // for OBM_/OCR_/OIC_
- BOOL LoadMappedBitmap(UINT nIDBitmap, UINT nFlags = 0,
- LPCOLORMAP lpColorMap = NULL, int nMapSize = 0);
- BOOL CreateBitmap(int nWidth, int nHeight, UINT nPlanes, UINT nBitcount,
- const void* lpBits);
- BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);
- BOOL CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight);
- BOOL CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight);
-
- // Attributes
- operator HBITMAP() const;
- int GetBitmap(BITMAP* pBitMap);
-
- // Operations
- DWORD SetBitmapBits(DWORD dwCount, const void* lpBits);
- DWORD GetBitmapBits(DWORD dwCount, LPVOID lpBits) const;
- CSize SetBitmapDimension(int nWidth, int nHeight);
- CSize GetBitmapDimension() const;
-
- // Implementation
- public:
- virtual ~CBitmap();
- #ifdef _DEBUG
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
-
- class CPalette : public CGdiObject
- {
- DECLARE_DYNAMIC(CPalette)
-
- public:
- static CPalette* PASCAL FromHandle(HPALETTE hPalette);
-
- // Constructors
- CPalette();
- BOOL CreatePalette(LPLOGPALETTE lpLogPalette);
- BOOL CreateHalftonePalette(CDC* pDC);
-
- // Attributes
- operator HPALETTE() const;
- int GetEntryCount();
- UINT GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
- LPPALETTEENTRY lpPaletteColors) const;
- UINT SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
- LPPALETTEENTRY lpPaletteColors);
-
- // Operations
- void AnimatePalette(UINT nStartIndex, UINT nNumEntries,
- LPPALETTEENTRY lpPaletteColors);
- UINT GetNearestPaletteIndex(COLORREF crColor) const;
- BOOL ResizePalette(UINT nNumEntries);
-
- // Implementation
- virtual ~CPalette();
- };
-
- class CRgn : public CGdiObject
- {
- DECLARE_DYNAMIC(CRgn)
-
- public:
- static CRgn* PASCAL FromHandle(HRGN hRgn);
- operator HRGN() const;
-
- // Constructors
- CRgn();
- BOOL CreateRectRgn(int x1, int y1, int x2, int y2);
- BOOL CreateRectRgnIndirect(LPCRECT lpRect);
- BOOL CreateEllipticRgn(int x1, int y1, int x2, int y2);
- BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
- BOOL CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode);
- BOOL CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts,
- int nCount, int nPolyFillMode);
- BOOL CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3);
- BOOL CreateFromPath(CDC* pDC);
- BOOL CreateFromData(const XFORM* lpXForm, int nCount,
- const RGNDATA* pRgnData);
-
- // Operations
- void SetRectRgn(int x1, int y1, int x2, int y2);
- void SetRectRgn(LPCRECT lpRect);
- int CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode);
- int CopyRgn(CRgn* pRgnSrc);
- BOOL EqualRgn(CRgn* pRgn) const;
- int OffsetRgn(int x, int y);
- int OffsetRgn(POINT point);
- int GetRgnBox(LPRECT lpRect) const;
- BOOL PtInRegion(int x, int y) const;
- BOOL PtInRegion(POINT point) const;
- BOOL RectInRegion(LPCRECT lpRect) const;
- int GetRegionData(LPRGNDATA lpRgnData, int nCount) const;
-
- // Implementation
- virtual ~CRgn();
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // The device context
-
- class CDC : public CObject
- {
- DECLARE_DYNCREATE(CDC)
- public:
-
- // Attributes
- HDC m_hDC; // The output DC (must be first data member)
- HDC m_hAttribDC; // The Attribute DC
- operator HDC() const;
- HDC GetSafeHdc() const; // Always returns the Output DC
- CWnd* GetWindow() const;
-
- static CDC* PASCAL FromHandle(HDC hDC);
- static void PASCAL DeleteTempMap();
- BOOL Attach(HDC hDC); // Attach/Detach affects only the Output DC
- HDC Detach();
-
- virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
- virtual void SetOutputDC(HDC hDC); // Set the Output DC
- virtual void ReleaseAttribDC(); // Release the Attribute DC
- virtual void ReleaseOutputDC(); // Release the Output DC
-
- BOOL IsPrinting() const; // TRUE if being used for printing
-
- CPen* GetCurrentPen() const;
- CBrush* GetCurrentBrush() const;
- CPalette* GetCurrentPalette() const;
- CFont* GetCurrentFont() const;
- CBitmap* GetCurrentBitmap() const;
-
- // for bidi and mirrored localization
- DWORD GetLayout() const;
- DWORD SetLayout(DWORD dwLayout);
-
- // Constructors
- CDC();
- BOOL CreateDC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
- LPCTSTR lpszOutput, const void* lpInitData);
- BOOL CreateIC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
- LPCTSTR lpszOutput, const void* lpInitData);
- BOOL CreateCompatibleDC(CDC* pDC);
-
- BOOL DeleteDC();
-
- // Device-Context Functions
- virtual int SaveDC();
- virtual BOOL RestoreDC(int nSavedDC);
- int GetDeviceCaps(int nIndex) const;
- UINT SetBoundsRect(LPCRECT lpRectBounds, UINT flags);
- UINT GetBoundsRect(LPRECT lpRectBounds, UINT flags);
- BOOL ResetDC(const DEVMODE* lpDevMode);
-
- // Drawing-Tool Functions
- CPoint GetBrushOrg() const;
- CPoint SetBrushOrg(int x, int y);
- CPoint SetBrushOrg(POINT point);
- int EnumObjects(int nObjectType,
- int (CALLBACK* lpfn)(LPVOID, LPARAM), LPARAM lpData);
-
- // Type-safe selection helpers
- public:
- virtual CGdiObject* SelectStockObject(int nIndex);
- CPen* SelectObject(CPen* pPen);
- CBrush* SelectObject(CBrush* pBrush);
- virtual CFont* SelectObject(CFont* pFont);
- CBitmap* SelectObject(CBitmap* pBitmap);
- int SelectObject(CRgn* pRgn); // special return for regions
- CGdiObject* SelectObject(CGdiObject* pObject);
- // CGdiObject* provided so compiler doesn't use SelectObject(HGDIOBJ)
-
- // Color and Color Palette Functions
- COLORREF GetNearestColor(COLORREF crColor) const;
- CPalette* SelectPalette(CPalette* pPalette, BOOL bForceBackground);
- UINT RealizePalette();
- void UpdateColors();
-
- // Drawing-Attribute Functions
- COLORREF GetBkColor() const;
- int GetBkMode() const;
- int GetPolyFillMode() const;
- int GetROP2() const;
- int GetStretchBltMode() const;
- COLORREF GetTextColor() const;
-
- virtual COLORREF SetBkColor(COLORREF crColor);
- int SetBkMode(int nBkMode);
- int SetPolyFillMode(int nPolyFillMode);
- int SetROP2(int nDrawMode);
- int SetStretchBltMode(int nStretchMode);
- virtual COLORREF SetTextColor(COLORREF crColor);
-
- BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
- BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
-
- // Mapping Functions
- int GetMapMode() const;
- CPoint GetViewportOrg() const;
- virtual int SetMapMode(int nMapMode);
- // Viewport Origin
- virtual CPoint SetViewportOrg(int x, int y);
- CPoint SetViewportOrg(POINT point);
- virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
-
- // Viewport Extent
- CSize GetViewportExt() const;
- virtual CSize SetViewportExt(int cx, int cy);
- CSize SetViewportExt(SIZE size);
- virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
-
- // Window Origin
- CPoint GetWindowOrg() const;
- CPoint SetWindowOrg(int x, int y);
- CPoint SetWindowOrg(POINT point);
- CPoint OffsetWindowOrg(int nWidth, int nHeight);
-
- // Window extent
- CSize GetWindowExt() const;
- virtual CSize SetWindowExt(int cx, int cy);
- CSize SetWindowExt(SIZE size);
- virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
-
- // Coordinate Functions
- void DPtoLP(LPPOINT lpPoints, int nCount = 1) const;
- void DPtoLP(LPRECT lpRect) const;
- void DPtoLP(LPSIZE lpSize) const;
- void LPtoDP(LPPOINT lpPoints, int nCount = 1) const;
- void LPtoDP(LPRECT lpRect) const;
- void LPtoDP(LPSIZE lpSize) const;
-
- // Special Coordinate Functions (useful for dealing with metafiles and OLE)
- void DPtoHIMETRIC(LPSIZE lpSize) const;
- void LPtoHIMETRIC(LPSIZE lpSize) const;
- void HIMETRICtoDP(LPSIZE lpSize) const;
- void HIMETRICtoLP(LPSIZE lpSize) const;
-
- // Region Functions
- BOOL FillRgn(CRgn* pRgn, CBrush* pBrush);
- BOOL FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight);
- BOOL InvertRgn(CRgn* pRgn);
- BOOL PaintRgn(CRgn* pRgn);
-
- // Clipping Functions
- 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;
- int SelectClipRgn(CRgn* pRgn);
- int ExcludeClipRect(int x1, int y1, int x2, int y2);
- int ExcludeClipRect(LPCRECT lpRect);
- int ExcludeUpdateRgn(CWnd* pWnd);
- int IntersectClipRect(int x1, int y1, int x2, int y2);
- int IntersectClipRect(LPCRECT lpRect);
- int OffsetClipRgn(int x, int y);
- int OffsetClipRgn(SIZE size);
- int SelectClipRgn(CRgn* pRgn, int nMode);
-
- // Line-Output Functions
- CPoint GetCurrentPosition() const;
- CPoint MoveTo(int x, int y);
- CPoint MoveTo(POINT point);
- BOOL LineTo(int x, int y);
- BOOL LineTo(POINT point);
- BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
- BOOL Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
- BOOL Polyline(LPPOINT lpPoints, int nCount);
-
- BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, float fSweepAngle);
- BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
- BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
- int GetArcDirection() const;
- int SetArcDirection(int nArcDirection);
-
- BOOL PolyDraw(const POINT* lpPoints, const BYTE* lpTypes, int nCount);
- BOOL PolylineTo(const POINT* lpPoints, int nCount);
- BOOL PolyPolyline(const POINT* lpPoints,
- const DWORD* lpPolyPoints, int nCount);
-
- BOOL PolyBezier(const POINT* lpPoints, int nCount);
- BOOL PolyBezierTo(const POINT* lpPoints, int nCount);
-
- // Simple Drawing Functions
- void FillRect(LPCRECT lpRect, CBrush* pBrush);
- void FrameRect(LPCRECT lpRect, CBrush* pBrush);
- void InvertRect(LPCRECT lpRect);
- BOOL DrawIcon(int x, int y, HICON hIcon);
- BOOL DrawIcon(POINT point, HICON hIcon);
- #if (WINVER >= 0x400)
- BOOL DrawState(CPoint pt, CSize size, HBITMAP hBitmap, UINT nFlags,
- HBRUSH hBrush = NULL);
- BOOL DrawState(CPoint pt, CSize size, CBitmap* pBitmap, UINT nFlags,
- CBrush* pBrush = NULL);
- BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
- HBRUSH hBrush = NULL);
- BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
- CBrush* pBrush = NULL);
- BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
- BOOL bPrefixText = TRUE, int nTextLen = 0, HBRUSH hBrush = NULL);
- BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
- BOOL bPrefixText = TRUE, int nTextLen = 0, CBrush* pBrush = NULL);
- BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
- LPARAM lData, UINT nFlags, HBRUSH hBrush = NULL);
- BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
- LPARAM lData, UINT nFlags, CBrush* pBrush = NULL);
- #endif
-
- // Ellipse and Polygon Functions
- BOOL Chord(int x1, int y1, int x2, int y2, int x3, int y3,
- int x4, int y4);
- BOOL Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
- void DrawFocusRect(LPCRECT lpRect);
- BOOL Ellipse(int x1, int y1, int x2, int y2);
- BOOL Ellipse(LPCRECT lpRect);
- BOOL Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
- BOOL Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
- BOOL Polygon(LPPOINT lpPoints, int nCount);
- BOOL PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount);
- BOOL Rectangle(int x1, int y1, int x2, int y2);
- BOOL Rectangle(LPCRECT lpRect);
- BOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);
- BOOL RoundRect(LPCRECT lpRect, POINT point);
-
- // Bitmap Functions
- BOOL PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop);
- BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
- int xSrc, int ySrc, DWORD dwRop);
- BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
- int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);
- COLORREF GetPixel(int x, int y) const;
- COLORREF GetPixel(POINT point) const;
- COLORREF SetPixel(int x, int y, COLORREF crColor);
- COLORREF SetPixel(POINT point, COLORREF crColor);
- BOOL FloodFill(int x, int y, COLORREF crColor);
- BOOL ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType);
- BOOL MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
- int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask,
- DWORD dwRop);
- BOOL PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
- int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask);
- BOOL SetPixelV(int x, int y, COLORREF crColor);
- BOOL SetPixelV(POINT point, COLORREF crColor);
-
- // 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);
- CSize GetTextExtent(LPCTSTR lpszString, int nCount) const;
- CSize GetTextExtent(const CString& str) const;
- CSize GetOutputTextExtent(LPCTSTR lpszString, int nCount) const;
- CSize GetOutputTextExtent(const CString& str) const;
- CSize GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
- int nTabPositions, LPINT lpnTabStopPositions) const;
- CSize GetTabbedTextExtent(const CString& str,
- int nTabPositions, LPINT lpnTabStopPositions) const;
- CSize GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
- int nTabPositions, LPINT lpnTabStopPositions) const;
- CSize GetOutputTabbedTextExtent(const CString& str,
- int nTabPositions, LPINT lpnTabStopPositions) const;
- virtual BOOL GrayString(CBrush* pBrush,
- BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int), LPARAM lpData,
- int nCount, int x, int y, int nWidth, int nHeight);
- UINT GetTextAlign() const;
- UINT SetTextAlign(UINT nFlags);
- int GetTextFace(int nCount, LPTSTR lpszFacename) const;
- int GetTextFace(CString& rString) const;
- BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
- BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
- int SetTextJustification(int nBreakExtra, int nBreakCount);
- int GetTextCharacterExtra() const;
- int SetTextCharacterExtra(int nCharExtra);
-
- // Advanced Drawing
- #if (WINVER >= 0x400)
- BOOL DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags);
- BOOL DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState);
- #endif
-
- // Scrolling Functions
- BOOL ScrollDC(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip,
- CRgn* pRgnUpdate, LPRECT lpRectUpdate);
-
- // Font Functions
- BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
- BOOL GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
- DWORD SetMapperFlags(DWORD dwFlag);
- CSize GetAspectRatioFilter() const;
-
- BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const;
- DWORD GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData, DWORD cbData) const;
- int GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const;
- UINT GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const;
- DWORD GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
- DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const;
-
- BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
- LPABCFLOAT lpABCF) const;
- BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar,
- float* lpFloatBuffer) const;
-
- // Printer/Device Escape Functions
- virtual int Escape(int nEscape, int nCount,
- LPCSTR lpszInData, LPVOID lpOutData);
- int Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
- int nOutputSize, LPSTR lpszOutputData);
- int DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData);
-
- // Escape helpers
- int StartDoc(LPCTSTR lpszDocName); // old Win3.0 version
- int StartDoc(LPDOCINFO lpDocInfo);
- int StartPage();
- int EndPage();
- int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
- int AbortDoc();
- int EndDoc();
-
- // MetaFile Functions
- BOOL PlayMetaFile(HMETAFILE hMF);
- BOOL PlayMetaFile(HENHMETAFILE hEnhMetaFile, LPCRECT lpBounds);
- BOOL AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData);
- // can be used for enhanced metafiles only
-
- // Path Functions
- BOOL AbortPath();
- BOOL BeginPath();
- BOOL CloseFigure();
- BOOL EndPath();
- BOOL FillPath();
- BOOL FlattenPath();
- BOOL StrokeAndFillPath();
- BOOL StrokePath();
- BOOL WidenPath();
- float GetMiterLimit() const;
- BOOL SetMiterLimit(float fMiterLimit);
- int GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const;
- BOOL SelectClipPath(int nMode);
-
- // Misc Helper Functions
- static CBrush* PASCAL GetHalftoneBrush();
- void DrawDragRect(LPCRECT lpRect, SIZE size,
- LPCRECT lpRectLast, SIZE sizeLast,
- CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);
- void FillSolidRect(LPCRECT lpRect, COLORREF clr);
- void FillSolidRect(int x, int y, int cx, int cy, COLORREF clr);
- void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight);
- void Draw3dRect(int x, int y, int cx, int cy,
- COLORREF clrTopLeft, COLORREF clrBottomRight);
-
- // Implementation
- public:
- virtual ~CDC();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
-
- // advanced use and implementation
- BOOL m_bPrinting;
- HGDIOBJ SelectObject(HGDIOBJ); // do not use for regions
-
- protected:
- // used for implementation of non-virtual SelectObject calls
- static CGdiObject* PASCAL SelectGdiObject(HDC hDC, HGDIOBJ h);
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CDC Helpers
-
- class CPaintDC : public CDC
- {
- DECLARE_DYNAMIC(CPaintDC)
-
- // Constructors
- public:
- CPaintDC(CWnd* pWnd); // BeginPaint
-
- // Attributes
- protected:
- HWND m_hWnd;
- public:
- PAINTSTRUCT m_ps; // actual paint struct!
-
- // Implementation
- public:
- virtual ~CPaintDC();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
-
- class CClientDC : public CDC
- {
- DECLARE_DYNAMIC(CClientDC)
-
- // Constructors
- public:
- CClientDC(CWnd* pWnd);
-
- // Attributes
- protected:
- HWND m_hWnd;
-
- // Implementation
- public:
- virtual ~CClientDC();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
-
- class CWindowDC : public CDC
- {
- DECLARE_DYNAMIC(CWindowDC)
-
- // Constructors
- public:
- CWindowDC(CWnd* pWnd);
-
- // Attributes
- protected:
- HWND m_hWnd;
-
- // Implementation
- public:
- virtual ~CWindowDC();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CMenu
-
- class CMenu : public CObject
- {
- DECLARE_DYNCREATE(CMenu)
- public:
-
- // Constructors
- CMenu();
-
- BOOL CreateMenu();
- BOOL CreatePopupMenu();
- BOOL LoadMenu(LPCTSTR lpszResourceName);
- BOOL LoadMenu(UINT nIDResource);
- BOOL LoadMenuIndirect(const void* lpMenuTemplate);
- BOOL DestroyMenu();
-
- // Attributes
- HMENU m_hMenu; // must be first data member
- HMENU GetSafeHmenu() const;
- operator HMENU() const;
-
- static CMenu* PASCAL FromHandle(HMENU hMenu);
- static void PASCAL DeleteTempMap();
- BOOL Attach(HMENU hMenu);
- HMENU Detach();
-
- // CMenu Operations
- BOOL DeleteMenu(UINT nPosition, UINT nFlags);
- BOOL TrackPopupMenu(UINT nFlags, int x, int y,
- CWnd* pWnd, LPCRECT lpRect = 0);
- BOOL operator==(const CMenu& menu) const;
- BOOL operator!=(const CMenu& menu) const;
-
- // CMenuItem Operations
- BOOL AppendMenu(UINT nFlags, UINT nIDNewItem = 0,
- LPCTSTR lpszNewItem = NULL);
- BOOL AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp);
- UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);
- UINT EnableMenuItem(UINT nIDEnableItem, UINT nEnable);
- UINT GetMenuItemCount() const;
- UINT GetMenuItemID(int nPos) const;
- UINT GetMenuState(UINT nID, UINT nFlags) const;
- int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount,
- UINT nFlags) const;
- int GetMenuString(UINT nIDItem, CString& rString, UINT nFlags) const;
- BOOL GetMenuItemInfo(UINT nIDItem, LPMENUITEMINFO lpMenuItemInfo,
- BOOL fByPos = FALSE);
- CMenu* GetSubMenu(int nPos) const;
- BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
- LPCTSTR lpszNewItem = NULL);
- BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
- const CBitmap* pBmp);
- BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
- LPCTSTR lpszNewItem = NULL);
- BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
- const CBitmap* pBmp);
- BOOL RemoveMenu(UINT nPosition, UINT nFlags);
- BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
- const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked);
- BOOL CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags);
- BOOL SetDefaultItem(UINT uItem, BOOL fByPos = FALSE);
- UINT GetDefaultItem(UINT gmdiFlags, BOOL fByPos = FALSE);
-
- // Context Help Functions
- BOOL SetMenuContextHelpId(DWORD dwContextHelpId);
- DWORD GetMenuContextHelpId() const;
-
- // Overridables (must override draw and measure for owner-draw menu items)
- virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
- virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
-
- // Implementation
- public:
- virtual ~CMenu();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- static CMenu* PASCAL CMenu::FromHandlePermanent(HMENU hMenu);
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // Window message map handling
-
- struct AFX_MSGMAP_ENTRY; // declared below after CWnd
-
- struct AFX_MSGMAP
- {
- #ifdef _AFXDLL
- const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)();
- #else
- const AFX_MSGMAP* pBaseMap;
- #endif
- const AFX_MSGMAP_ENTRY* lpEntries;
- };
-
- #ifdef _AFXDLL
- #define DECLARE_MESSAGE_MAP() \
- private: \
- static const AFX_MSGMAP_ENTRY _messageEntries[]; \
- protected: \
- static AFX_DATA const AFX_MSGMAP messageMap; \
- static const AFX_MSGMAP* PASCAL _GetBaseMessageMap(); \
- virtual const AFX_MSGMAP* GetMessageMap() const; \
-
- #else
- #define DECLARE_MESSAGE_MAP() \
- private: \
- static const AFX_MSGMAP_ENTRY _messageEntries[]; \
- protected: \
- static AFX_DATA const AFX_MSGMAP messageMap; \
- virtual const AFX_MSGMAP* GetMessageMap() const; \
-
- #endif
-
- #ifdef _AFXDLL
- #define BEGIN_MESSAGE_MAP(theClass, baseClass) \
- const AFX_MSGMAP* PASCAL theClass::_GetBaseMessageMap() \
- { return &baseClass::messageMap; } \
- const AFX_MSGMAP* theClass::GetMessageMap() const \
- { return &theClass::messageMap; } \
- AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
- { &theClass::_GetBaseMessageMap, &theClass::_messageEntries[0] }; \
- AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
- { \
-
- #else
- #define BEGIN_MESSAGE_MAP(theClass, baseClass) \
- const AFX_MSGMAP* theClass::GetMessageMap() const \
- { return &theClass::messageMap; } \
- AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
- { &baseClass::messageMap, &theClass::_messageEntries[0] }; \
- AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
- { \
-
- #endif
-
- #define END_MESSAGE_MAP() \
- {0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
- }; \
-
- // Message map signature values and macros in separate header
- #include <afxmsg_.h>
-
- /////////////////////////////////////////////////////////////////////////////
- // Dialog data exchange (DDX_) and validation (DDV_)
-
- // CDataExchange - for data exchange and validation
- class CDataExchange
- {
- // Attributes
- public:
- BOOL m_bSaveAndValidate; // TRUE => save and validate data
- CWnd* m_pDlgWnd; // container usually a dialog
-
- // Operations (for implementors of DDX and DDV procs)
- HWND PrepareCtrl(int nIDC); // return HWND of control
- HWND PrepareEditCtrl(int nIDC); // return HWND of control
- void Fail(); // will throw exception
-
- #ifndef _AFX_NO_OCC_SUPPORT
- CWnd* PrepareOleCtrl(int nIDC); // for OLE controls in dialog
- #endif
-
- // Implementation
- CDataExchange(CWnd* pDlgWnd, BOOL bSaveAndValidate);
-
- HWND m_hWndLastControl; // last control used (for validation)
- BOOL m_bEditLastControl; // last control was an edit item
- };
-
- #include <afxdd_.h> // standard DDX_ and DDV_ routines
-
- /////////////////////////////////////////////////////////////////////////////
- // OLE types
-
- typedef LONG HRESULT;
-
- struct IUnknown;
- typedef IUnknown* LPUNKNOWN;
-
- struct IDispatch;
- typedef IDispatch* LPDISPATCH;
-
- struct IConnectionPoint;
- typedef IConnectionPoint* LPCONNECTIONPOINT;
-
- struct IEnumOLEVERB;
- typedef IEnumOLEVERB* LPENUMOLEVERB;
-
- typedef struct _GUID GUID;
- typedef GUID IID;
- typedef GUID CLSID;
- #ifndef _REFCLSID_DEFINED
- #define REFCLSID const CLSID &
- #endif
-
- typedef long DISPID;
- typedef unsigned short VARTYPE;
- typedef long SCODE;
-
- #if defined(WIN32) && !defined(OLE2ANSI)
- typedef WCHAR OLECHAR;
- #else
- typedef char OLECHAR;
- #endif
- typedef OLECHAR* BSTR;
-
- struct tagDISPPARAMS;
- typedef tagDISPPARAMS DISPPARAMS;
-
- struct tagVARIANT;
- typedef tagVARIANT VARIANT;
-
- struct ITypeInfo;
- typedef ITypeInfo* LPTYPEINFO;
-
- struct ITypeLib;
- typedef ITypeLib* LPTYPELIB;
-
- /////////////////////////////////////////////////////////////////////////////
- // CCmdTarget
-
- // private structures
- struct AFX_CMDHANDLERINFO; // info about where the command is handled
- struct AFX_EVENT; // info about an event
- class CTypeLibCache; // cache for OLE type libraries
-
- /////////////////////////////////////////////////////////////////////////////
- // OLE interface map handling (more in AFXDISP.H)
-
- #ifndef _AFX_NO_OLE_SUPPORT
-
- struct AFX_INTERFACEMAP_ENTRY
- {
- const void* piid; // the interface id (IID) (NULL for aggregate)
- size_t nOffset; // offset of the interface vtable from m_unknown
- };
-
- struct AFX_INTERFACEMAP
- {
- #ifdef _AFXDLL
- const AFX_INTERFACEMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
- #else
- const AFX_INTERFACEMAP* pBaseMap;
- #endif
- const AFX_INTERFACEMAP_ENTRY* pEntry; // map for this class
- };
-
-
- #ifdef _AFXDLL
- #define DECLARE_INTERFACE_MAP() \
- private: \
- static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
- protected: \
- static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
- static const AFX_INTERFACEMAP* PASCAL _GetBaseInterfaceMap(); \
- virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
-
- #else
- #define DECLARE_INTERFACE_MAP() \
- private: \
- static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
- protected: \
- static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
- virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
-
- #endif
-
- #endif //!_AFX_NO_OLE_SUPPORT
-
- /////////////////////////////////////////////////////////////////////////////
- // OLE dispatch map handling (more in AFXDISP.H)
-
- #ifndef _AFX_NO_OLE_SUPPORT
-
- struct AFX_DISPMAP_ENTRY;
-
- struct AFX_DISPMAP
- {
- #ifdef _AFXDLL
- const AFX_DISPMAP* (PASCAL* pfnGetBaseMap)();
- #else
- const AFX_DISPMAP* pBaseMap;
- #endif
- const AFX_DISPMAP_ENTRY* lpEntries;
- UINT* lpEntryCount;
- DWORD* lpStockPropMask;
- };
-
- #ifdef _AFXDLL
- #define DECLARE_DISPATCH_MAP() \
- private: \
- static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
- static UINT _dispatchEntryCount; \
- static DWORD _dwStockPropMask; \
- protected: \
- static AFX_DATA const AFX_DISPMAP dispatchMap; \
- static const AFX_DISPMAP* PASCAL _GetBaseDispatchMap(); \
- virtual const AFX_DISPMAP* GetDispatchMap() const; \
-
- #else
- #define DECLARE_DISPATCH_MAP() \
- private: \
- static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
- static UINT _dispatchEntryCount; \
- static DWORD _dwStockPropMask; \
- protected: \
- static AFX_DATA const AFX_DISPMAP dispatchMap; \
- virtual const AFX_DISPMAP* GetDispatchMap() const; \
-
- #endif
-
- #endif //!_AFX_NO_OLE_SUPPORT
-
- /////////////////////////////////////////////////////////////////////////////
- // OLE Document Object command target handling
-
- #ifndef _AFX_NO_DOCOBJECT_SUPPORT
-
- struct AFX_OLECMDMAP_ENTRY
- {
- const GUID* pguid; // id of the command group
- ULONG cmdID; // OLECMD ID
- UINT nID; // corresponding WM_COMMAND message ID
- };
-
- struct AFX_OLECMDMAP
- {
- #ifdef _AFXDLL
- const AFX_OLECMDMAP* (PASCAL* pfnGetBaseMap)();
- #else
- const AFX_OLECMDMAP* pBaseMap;
- #endif
- const AFX_OLECMDMAP_ENTRY* lpEntries;
- };
-
- #ifdef _AFXDLL
- #define DECLARE_OLECMD_MAP() \
- private: \
- static const AFX_OLECMDMAP_ENTRY _commandEntries[]; \
- protected: \
- static AFX_DATA const AFX_OLECMDMAP commandMap; \
- static const AFX_OLECMDMAP* PASCAL _GetBaseCommandMap(); \
- virtual const AFX_OLECMDMAP* GetCommandMap() const; \
-
- #else
- #define DECLARE_OLECMD_MAP() \
- private: \
- static const AFX_OLECMDMAP_ENTRY _commandEntries[]; \
- protected: \
- static AFX_DATA const AFX_OLECMDMAP commandMap; \
- virtual const AFX_OLECMDMAP* GetCommandMap() const; \
-
- #endif
-
- #ifdef _AFXDLL
- #define BEGIN_OLECMD_MAP(theClass, baseClass) \
- const AFX_OLECMDMAP* PASCAL theClass::_GetBaseCommandMap() \
- { return &baseClass::commandMap; } \
- const AFX_OLECMDMAP* theClass::GetCommandMap() const \
- { return &theClass::commandMap; } \
- AFX_COMDAT AFX_DATADEF const AFX_OLECMDMAP theClass::commandMap = \
- { &theClass::_GetBaseCommandMap, &theClass::_commandEntries[0] }; \
- AFX_COMDAT const AFX_OLECMDMAP_ENTRY theClass::_commandEntries[] = \
- { \
-
- #else
- #define BEGIN_OLECMD_MAP(theClass, baseClass) \
- const AFX_OLECMDMAP* theClass::GetCommandMap() const \
- { return &theClass::commandMap; } \
- AFX_COMDAT AFX_DATADEF const AFX_OLECMDMAP theClass::commandMap = \
- { &baseClass::commandMap, &theClass::_commandEntries[0] }; \
- AFX_COMDAT const AFX_OLECMDMAP_ENTRY theClass::_commandEntries[] = \
- { \
-
- #endif
-
- #define END_OLECMD_MAP() \
- {NULL, 0, 0} \
- }; \
-
- class COleCmdUI;
-
- #endif //!_AFX_NO_DOCOBJECT_SUPPORT
-
- /////////////////////////////////////////////////////////////////////////////
- // OLE event sink map handling (more in AFXDISP.H)
-
- #ifndef _AFX_NO_OCC_SUPPORT
-
- struct AFX_EVENTSINKMAP_ENTRY;
-
- struct AFX_EVENTSINKMAP
- {
- #ifdef _AFXDLL
- const AFX_EVENTSINKMAP* (PASCAL* pfnGetBaseMap)();
- #else
- const AFX_EVENTSINKMAP* pBaseMap;
- #endif
- const AFX_EVENTSINKMAP_ENTRY* lpEntries;
- UINT* lpEntryCount;
- };
-
- #ifdef _AFXDLL
- #define DECLARE_EVENTSINK_MAP() \
- private: \
- static const AFX_EVENTSINKMAP_ENTRY _eventsinkEntries[]; \
- static UINT _eventsinkEntryCount; \
- protected: \
- static AFX_DATA const AFX_EVENTSINKMAP eventsinkMap; \
- static const AFX_EVENTSINKMAP* PASCAL _GetBaseEventSinkMap(); \
- virtual const AFX_EVENTSINKMAP* GetEventSinkMap() const; \
-
- #else
- #define DECLARE_EVENTSINK_MAP() \
- private: \
- static const AFX_EVENTSINKMAP_ENTRY _eventsinkEntries[]; \
- static UINT _eventsinkEntryCount; \
- protected: \
- static AFX_DATA const AFX_EVENTSINKMAP eventsinkMap; \
- virtual const AFX_EVENTSINKMAP* GetEventSinkMap() const; \
-
- #endif
-
- #endif //!_AFX_NO_OCC_SUPPORT
-
- /////////////////////////////////////////////////////////////////////////////
- // OLE connection map handling (more in AFXDISP.H)
-
- #ifndef _AFX_NO_OLE_SUPPORT
-
- struct AFX_CONNECTIONMAP_ENTRY
- {
- const void* piid; // the interface id (IID)
- size_t nOffset; // offset of the interface vtable from m_unknown
- };
-
- struct AFX_CONNECTIONMAP
- {
- #ifdef _AFXDLL
- const AFX_CONNECTIONMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
- #else
- const AFX_CONNECTIONMAP* pBaseMap;
- #endif
- const AFX_CONNECTIONMAP_ENTRY* pEntry; // map for this class
- };
-
- #ifdef _AFXDLL
- #define DECLARE_CONNECTION_MAP() \
- private: \
- static const AFX_CONNECTIONMAP_ENTRY _connectionEntries[]; \
- protected: \
- static AFX_DATA const AFX_CONNECTIONMAP connectionMap; \
- static const AFX_CONNECTIONMAP* PASCAL _GetBaseConnectionMap(); \
- virtual const AFX_CONNECTIONMAP* GetConnectionMap() const; \
-
- #else
- #define DECLARE_CONNECTION_MAP() \
- private: \
- static const AFX_CONNECTIONMAP_ENTRY _connectionEntries[]; \
- protected: \
- static AFX_DATA const AFX_CONNECTIONMAP connectionMap; \
- virtual const AFX_CONNECTIONMAP* GetConnectionMap() const; \
-
- #endif
-
- #endif //!_AFX_NO_OLE_SUPPORT
-
- /////////////////////////////////////////////////////////////////////////////
- // CCmdTarget proper
-
- #ifndef _AFX_NO_OCC_SUPPORT
- class COccManager; // forward reference (see ..\src\occimpl.h)
- #endif
-
- #ifdef _AFXDLL
- class CCmdTarget : public CObject
- #else
- class AFX_NOVTABLE CCmdTarget : public CObject
- #endif
- {
- DECLARE_DYNAMIC(CCmdTarget)
- protected:
-
- public:
- // Constructors
- CCmdTarget();
-
- // Attributes
- LPDISPATCH GetIDispatch(BOOL bAddRef);
- // retrieve IDispatch part of CCmdTarget
- static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);
- // map LPDISPATCH back to CCmdTarget* (inverse of GetIDispatch)
- BOOL IsResultExpected();
- // returns TRUE if automation function should return a value
-
- // Operations
- void EnableAutomation();
- // call in constructor to wire up IDispatch
- void EnableConnections();
- // call in constructor to wire up IConnectionPointContainer
-
- void BeginWaitCursor();
- void EndWaitCursor();
- void RestoreWaitCursor(); // call after messagebox
-
- #ifndef _AFX_NO_OLE_SUPPORT
- // dispatch OLE verbs through the message map
- BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);
- BOOL DoOleVerb(LONG iVerb, LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
- #endif
-
- // Overridables
- // route and dispatch standard command message types
- // (more sophisticated than OnCommand)
- virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo);
-
- #ifndef _AFX_NO_OLE_SUPPORT
- // called when last OLE reference is released
- virtual void OnFinalRelease();
- #endif
-
- #ifndef _AFX_NO_OLE_SUPPORT
- // called before dispatching to an automation handler function
- virtual BOOL IsInvokeAllowed(DISPID dispid);
- #endif
-
- #ifndef _AFX_NO_OLE_SUPPORT
- // support for OLE type libraries
- void EnableTypeLib();
- HRESULT GetTypeInfoOfGuid(LCID lcid, const GUID& guid,
- LPTYPEINFO* ppTypeInfo);
- virtual BOOL GetDispatchIID(IID* pIID);
- virtual UINT GetTypeInfoCount();
- virtual CTypeLibCache* GetTypeLibCache();
- virtual HRESULT GetTypeLib(LCID lcid, LPTYPELIB* ppTypeLib);
- #endif
-
- // Implementation
- public:
- virtual ~CCmdTarget();
- #ifdef _DEBUG
- virtual void Dump(CDumpContext& dc) const;
- virtual void AssertValid() const;
- #endif
- #ifndef _AFX_NO_OLE_SUPPORT
- void GetNotSupported();
- void SetNotSupported();
- #endif
-
- protected:
- friend class CView;
-
- CView* GetRoutingView();
- CFrameWnd* GetRoutingFrame();
- static CView* PASCAL GetRoutingView_();
- static CFrameWnd* PASCAL GetRoutingFrame_();
- DECLARE_MESSAGE_MAP() // base class - no {{ }} macros
-
- #ifndef _AFX_NO_DOCOBJECT_SUPPORT
- DECLARE_OLECMD_MAP()
- friend class COleCmdUI;
- #endif
-
- #ifndef _AFX_NO_OLE_SUPPORT
- DECLARE_DISPATCH_MAP()
- DECLARE_CONNECTION_MAP()
- DECLARE_INTERFACE_MAP()
-
- #ifndef _AFX_NO_OCC_SUPPORT
- DECLARE_EVENTSINK_MAP()
- #endif // !_AFX_NO_OCC_SUPPORT
-
- // OLE interface map implementation
- public:
- // data used when CCmdTarget is made OLE aware
- long m_dwRef;
- LPUNKNOWN m_pOuterUnknown; // external controlling unknown if != NULL
- DWORD m_xInnerUnknown; // place-holder for inner controlling unknown
-
- public:
- // advanced operations
- void EnableAggregation(); // call to enable aggregation
- void ExternalDisconnect(); // forcibly disconnect
- LPUNKNOWN GetControllingUnknown();
- // get controlling IUnknown for aggregate creation
-
- // these versions do not delegate to m_pOuterUnknown
- DWORD InternalQueryInterface(const void*, LPVOID* ppvObj);
- DWORD InternalAddRef();
- DWORD InternalRelease();
- // these versions delegate to m_pOuterUnknown
- DWORD ExternalQueryInterface(const void*, LPVOID* ppvObj);
- DWORD ExternalAddRef();
- DWORD ExternalRelease();
-
- // implementation helpers
- LPUNKNOWN GetInterface(const void*);
- LPUNKNOWN QueryAggregates(const void*);
-
- // advanced overrideables for implementation
- virtual BOOL OnCreateAggregates();
- virtual LPUNKNOWN GetInterfaceHook(const void*);
-
- // OLE automation implementation
- protected:
- struct XDispatch
- {
- DWORD m_vtbl; // place-holder for IDispatch vtable
- #ifndef _AFX_NO_NESTED_DERIVATION
- size_t m_nOffset;
- #endif
- } m_xDispatch;
- BOOL m_bResultExpected;
-
- // member variable-based properties
- void GetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
- VARIANT* pvarResult, UINT* puArgErr);
- SCODE SetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
- DISPPARAMS* pDispParams, UINT* puArgErr);
-
- // DISPID to dispatch map lookup
- static UINT PASCAL GetEntryCount(const AFX_DISPMAP* pDispMap);
- const AFX_DISPMAP_ENTRY* PASCAL GetDispEntry(LONG memid);
- static LONG PASCAL MemberIDFromName(const AFX_DISPMAP* pDispMap, LPCTSTR lpszName);
-
- // helpers for member function calling implementation
- static UINT PASCAL GetStackSize(const BYTE* pbParams, VARTYPE vtResult);
- #ifdef _PPC_
- SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
- void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
- UINT* puArgErr, VARIANT* rgTempVars, UINT nSizeArgs);
- #else
- SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
- void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
- UINT* puArgErr, VARIANT* rgTempVars);
- #endif
- SCODE CallMemberFunc(const AFX_DISPMAP_ENTRY* pEntry, WORD wFlags,
- VARIANT* pvarResult, DISPPARAMS* pDispParams, UINT* puArgErr);
-
- friend class COleDispatchImpl;
-
- #ifndef _AFX_NO_OCC_SUPPORT
- public:
- // OLE event sink implementation
- BOOL OnEvent(UINT idCtrl, AFX_EVENT* pEvent,
- AFX_CMDHANDLERINFO* pHandlerInfo);
- protected:
- const AFX_EVENTSINKMAP_ENTRY* PASCAL GetEventSinkEntry(UINT idCtrl,
- AFX_EVENT* pEvent);
- #endif // !_AFX_NO_OCC_SUPPORT
-
- // OLE connection implementation
- struct XConnPtContainer
- {
- DWORD m_vtbl; // place-holder for IConnectionPointContainer vtable
- #ifndef _AFX_NO_NESTED_DERIVATION
- size_t m_nOffset;
- #endif
- } m_xConnPtContainer;
-
- #ifdef _AFXDLL
- AFX_MODULE_STATE* m_pModuleState;
- friend class CInnerUnknown;
- friend UINT APIENTRY _AfxThreadEntry(void* pParam);
- #endif
-
- virtual BOOL GetExtraConnectionPoints(CPtrArray* pConnPoints);
- virtual LPCONNECTIONPOINT GetConnectionHook(const IID& iid);
-
- friend class COleConnPtContainer;
-
- #endif //!_AFX_NO_OLE_SUPPORT
- };
-
- class CCmdUI // simple helper class
- {
- public:
- // Attributes
- UINT m_nID;
- UINT m_nIndex; // menu item or other index
-
- // if a menu item
- CMenu* m_pMenu; // NULL if not a menu
- CMenu* m_pSubMenu; // sub containing menu item
- // if a popup sub menu - ID is for first in popup
-
- // if from some other window
- CWnd* m_pOther; // NULL if a menu or not a CWnd
-
- // Operations to do in ON_UPDATE_COMMAND_UI
- virtual void Enable(BOOL bOn = TRUE);
- virtual void SetCheck(int nCheck = 1); // 0, 1 or 2 (indeterminate)
- virtual void SetRadio(BOOL bOn = TRUE);
- virtual void SetText(LPCTSTR lpszText);
-
- // Advanced operation
- void ContinueRouting();
-
- // Implementation
- CCmdUI();
- BOOL m_bEnableChanged;
- BOOL m_bContinueRouting;
- UINT m_nIndexMax; // last + 1 for iterating m_nIndex
-
- CMenu* m_pParentMenu; // NULL if parent menu not easily determined
- // (probably a secondary popup menu)
-
- BOOL DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
- };
-
- // special CCmdUI derived classes are used for other UI paradigms
- // like toolbar buttons and status indicators
-
- // pointer to afx_msg member function
- #ifndef AFX_MSG_CALL
- #define AFX_MSG_CALL
- #endif
- typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void);
-
- enum AFX_DISPMAP_FLAGS
- {
- afxDispCustom = 0,
- afxDispStock = 1
- };
-
- struct AFX_DISPMAP_ENTRY
- {
- LPCTSTR lpszName; // member/property name
- long lDispID; // DISPID (may be DISPID_UNKNOWN)
- LPCSTR lpszParams; // member parameter description
- WORD vt; // return value type / or type of property
- AFX_PMSG pfn; // normal member On<membercall> or, OnGet<property>
- AFX_PMSG pfnSet; // special member for OnSet<property>
- size_t nPropOffset; // property offset
- AFX_DISPMAP_FLAGS flags;// flags (e.g. stock/custom)
- };
-
- struct AFX_EVENTSINKMAP_ENTRY
- {
- AFX_DISPMAP_ENTRY dispEntry;
- UINT nCtrlIDFirst;
- UINT nCtrlIDLast;
- };
-
- // DSC Sink state/reason codes passed to MFC user event handlers
- enum DSCSTATE
- {
- dscNoState = 0,
- dscOKToDo,
- dscCancelled,
- dscSyncBefore,
- dscAboutToDo,
- dscFailedToDo,
- dscSyncAfter,
- dscDidEvent
- };
-
- enum DSCREASON
- {
- dscNoReason = 0,
- dscClose,
- dscCommit,
- dscDelete,
- dscEdit,
- dscInsert,
- dscModify,
- dscMove
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CWnd implementation
-
- // structures (see afxext.h)
- struct CCreateContext; // context for creating things
- struct CPrintInfo; // print preview customization info
-
- struct AFX_MSGMAP_ENTRY
- {
- UINT nMessage; // windows message
- UINT nCode; // control code or WM_NOTIFY code
- UINT nID; // control ID (or 0 for windows messages)
- UINT nLastID; // used for entries specifying a range of control id's
- UINT nSig; // signature type (action) or pointer to message #
- AFX_PMSG pfn; // routine to call (or special value)
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CWnd - a Microsoft Windows application window
-
- class COleDropTarget; // for more information see AFXOLE.H
- class COleControlContainer;
- class COleControlSite;
-
- // CWnd::m_nFlags (generic to CWnd)
- #define WF_TOOLTIPS 0x0001 // window is enabled for tooltips
- #define WF_TEMPHIDE 0x0002 // window is temporarily hidden
- #define WF_STAYDISABLED 0x0004 // window should stay disabled
- #define WF_MODALLOOP 0x0008 // currently in modal loop
- #define WF_CONTINUEMODAL 0x0010 // modal loop should continue running
- #define WF_OLECTLCONTAINER 0x0100 // some descendant is an OLE control
- #define WF_TRACKINGTOOLTIPS 0x0400 // window is enabled for tracking tooltips
-
- // CWnd::m_nFlags (specific to CFrameWnd)
- #define WF_STAYACTIVE 0x0020 // look active even though not active
- #define WF_NOPOPMSG 0x0040 // ignore WM_POPMESSAGESTRING calls
- #define WF_MODALDISABLE 0x0080 // window is disabled
- #define WF_KEEPMINIACTIVE 0x0200 // stay activate even though you are deactivated
-
- // flags for CWnd::RunModalLoop
- #define MLF_NOIDLEMSG 0x0001 // don't send WM_ENTERIDLE messages
- #define MLF_NOKICKIDLE 0x0002 // don't send WM_KICKIDLE messages
- #define MLF_SHOWONIDLE 0x0004 // show window if not visible at idle time
-
- // extra MFC defined TTF_ flags for TOOLINFO::uFlags
- #define TTF_NOTBUTTON 0x80000000L // no status help on buttondown
- #define TTF_ALWAYSTIP 0x40000000L // always show the tip even if not active
-
- class CWnd : public CCmdTarget
- {
- DECLARE_DYNCREATE(CWnd)
- protected:
- static const MSG* PASCAL GetCurrentMessage();
-
- // Attributes
- public:
- HWND m_hWnd; // must be first data member
- operator HWND() const;
- BOOL operator==(const CWnd& wnd) const;
- BOOL operator!=(const CWnd& wnd) const;
-
- HWND GetSafeHwnd() const;
- DWORD GetStyle() const;
- DWORD GetExStyle() const;
- BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
- BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
-
- CWnd* GetOwner() const;
- void SetOwner(CWnd* pOwnerWnd);
-
- // Constructors and other creation
- CWnd();
-
- static CWnd* PASCAL FromHandle(HWND hWnd);
- static CWnd* PASCAL FromHandlePermanent(HWND hWnd);
- static void PASCAL DeleteTempMap();
- BOOL Attach(HWND hWndNew);
- HWND Detach();
-
- // subclassing/unsubclassing functions
- virtual void PreSubclassWindow();
- BOOL SubclassWindow(HWND hWnd);
- BOOL SubclassDlgItem(UINT nID, CWnd* pParent);
- HWND UnsubclassWindow();
-
- // handling of RT_DLGINIT resource (extension to RT_DIALOG)
- BOOL ExecuteDlgInit(LPCTSTR lpszResourceName);
- BOOL ExecuteDlgInit(LPVOID lpResource);
-
- public:
- // for child windows, views, panes etc
- virtual BOOL Create(LPCTSTR lpszClassName,
- LPCTSTR lpszWindowName, DWORD dwStyle,
- const RECT& rect,
- CWnd* pParentWnd, UINT nID,
- CCreateContext* pContext = NULL);
-
- // advanced creation (allows access to extended styles)
- BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
- LPCTSTR lpszWindowName, DWORD dwStyle,
- int x, int y, int nWidth, int nHeight,
- HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam = NULL);
-
- BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
- LPCTSTR lpszWindowName, DWORD dwStyle,
- const RECT& rect,
- CWnd* pParentWnd, UINT nID,
- LPVOID lpParam = NULL);
-
- #ifndef _AFX_NO_OCC_SUPPORT
- // for wrapping OLE controls
- BOOL CreateControl(REFCLSID clsid, LPCTSTR pszWindowName, DWORD dwStyle,
- const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist=NULL,
- BOOL bStorage=FALSE, BSTR bstrLicKey=NULL);
-
- BOOL CreateControl(LPCTSTR pszClass, LPCTSTR pszWindowName, DWORD dwStyle,
- const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist=NULL,
- BOOL bStorage=FALSE, BSTR bstrLicKey=NULL);
-
- // Another overload for creating controls that use default extents.
- BOOL CreateControl( REFCLSID clsid, LPCTSTR pszWindowName, DWORD dwStyle,
- const POINT* ppt, const SIZE* psize, CWnd* pParentWnd, UINT nID,
- CFile* pPersist = NULL, BOOL bStorage = FALSE, BSTR bstrLicKey = NULL );
-
- LPUNKNOWN GetControlUnknown();
- #endif
-
- virtual BOOL DestroyWindow();
-
- // special pre-creation and window rect adjustment hooks
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
-
- // Advanced: virtual AdjustWindowRect
- enum AdjustType { adjustBorder = 0, adjustOutside = 1 };
- virtual void CalcWindowRect(LPRECT lpClientRect,
- UINT nAdjustType = adjustBorder);
-
- // Window tree access
- int GetDlgCtrlID() const;
- int SetDlgCtrlID(int nID);
- // get and set window ID, for child windows only
- CWnd* GetDlgItem(int nID) const;
- // get immediate child with given ID
- void GetDlgItem(int nID, HWND* phWnd) const;
- // as above, but returns HWND
- CWnd* GetDescendantWindow(int nID, BOOL bOnlyPerm = FALSE) const;
- // like GetDlgItem but recursive
- void SendMessageToDescendants(UINT message, WPARAM wParam = 0,
- LPARAM lParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE);
- CFrameWnd* GetParentFrame() const;
- CWnd* GetTopLevelParent() const;
- CWnd* GetTopLevelOwner() const;
- CWnd* GetParentOwner() const;
- CFrameWnd* GetTopLevelFrame() const;
- static CWnd* PASCAL GetSafeOwner(CWnd* pParent = NULL, HWND* pWndTop = NULL);
-
- // Message Functions
- LRESULT SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
- BOOL PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
-
- BOOL SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam);
- BOOL SendChildNotifyLastMsg(LRESULT* pResult = NULL);
-
- // Message processing for modeless dialog-like windows
- BOOL IsDialogMessage(LPMSG lpMsg);
-
- // Window Text Functions
- void SetWindowText(LPCTSTR lpszString);
- int GetWindowText(LPTSTR lpszStringBuf, int nMaxCount) const;
- void GetWindowText(CString& rString) const;
- int GetWindowTextLength() const;
- void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
- CFont* GetFont() const;
-
- // CMenu Functions - non-Child windows only
- CMenu* GetMenu() const;
- BOOL SetMenu(CMenu* pMenu);
- void DrawMenuBar();
- CMenu* GetSystemMenu(BOOL bRevert) const;
- BOOL HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite);
-
- // Window Size and Position Functions
- BOOL IsIconic() const;
- BOOL IsZoomed() const;
- void MoveWindow(int x, int y, int nWidth, int nHeight,
- BOOL bRepaint = TRUE);
- void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);
- int SetWindowRgn(HRGN hRgn, BOOL bRedraw);
- int GetWindowRgn(HRGN hRgn) const;
-
- static AFX_DATA const CWnd wndTop; // SetWindowPos's pWndInsertAfter
- static AFX_DATA const CWnd wndBottom; // SetWindowPos's pWndInsertAfter
- static AFX_DATA const CWnd wndTopMost; // SetWindowPos pWndInsertAfter
- static AFX_DATA const CWnd wndNoTopMost; // SetWindowPos pWndInsertAfter
-
- BOOL SetWindowPos(const CWnd* pWndInsertAfter, int x, int y,
- int cx, int cy, UINT nFlags);
- UINT ArrangeIconicWindows();
- void BringWindowToTop();
- void GetWindowRect(LPRECT lpRect) const;
- void GetClientRect(LPRECT lpRect) const;
-
- BOOL GetWindowPlacement(WINDOWPLACEMENT* lpwndpl) const;
- BOOL SetWindowPlacement(const WINDOWPLACEMENT* lpwndpl);
-
- // Coordinate Mapping Functions
- void ClientToScreen(LPPOINT lpPoint) const;
- void ClientToScreen(LPRECT lpRect) const;
- void ScreenToClient(LPPOINT lpPoint) const;
- void ScreenToClient(LPRECT lpRect) const;
- void MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const;
- void MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const;
-
- // Update/Painting Functions
- CDC* BeginPaint(LPPAINTSTRUCT lpPaint);
- void EndPaint(LPPAINTSTRUCT lpPaint);
- CDC* GetDC();
- CDC* GetWindowDC();
- int ReleaseDC(CDC* pDC);
- void Print(CDC* pDC, DWORD dwFlags) const;
- void PrintClient(CDC* pDC, DWORD dwFlags) const;
-
- void UpdateWindow();
- void SetRedraw(BOOL bRedraw = TRUE);
- BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase = FALSE);
- int GetUpdateRgn(CRgn* pRgn, BOOL bErase = FALSE);
- void Invalidate(BOOL bErase = TRUE);
- void InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE);
- void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
- void ValidateRect(LPCRECT lpRect);
- void ValidateRgn(CRgn* pRgn);
- BOOL ShowWindow(int nCmdShow);
- BOOL IsWindowVisible() const;
- void ShowOwnedPopups(BOOL bShow = TRUE);
-
- CDC* GetDCEx(CRgn* prgnClip, DWORD flags);
- BOOL LockWindowUpdate(); // for backward compatibility
- void UnlockWindowUpdate();
- BOOL RedrawWindow(LPCRECT lpRectUpdate = NULL,
- CRgn* prgnUpdate = NULL,
- UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
- BOOL EnableScrollBar(int nSBFlags, UINT nArrowFlags = ESB_ENABLE_BOTH);
-
- // Timer Functions
- UINT SetTimer(UINT nIDEvent, UINT nElapse,
- void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD));
- BOOL KillTimer(int nIDEvent);
-
- // ToolTip Functions
- BOOL EnableToolTips(BOOL bEnable = TRUE);
- BOOL EnableTrackingToolTips(BOOL bEnable = TRUE);
- static void PASCAL CancelToolTips(BOOL bKeys = FALSE);
- void FilterToolTipMessage(MSG* pMsg);
-
- // for command hit testing (used for automatic tooltips)
- virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
-
- // Window State Functions
- BOOL IsWindowEnabled() const;
- BOOL EnableWindow(BOOL bEnable = TRUE);
-
- // the active window applies only to top-level (frame windows)
- static CWnd* PASCAL GetActiveWindow();
- CWnd* SetActiveWindow();
-
- // the foreground window applies only to top-level windows (frame windows)
- BOOL SetForegroundWindow();
- static CWnd* PASCAL GetForegroundWindow();
-
- // capture and focus apply to all windows
- static CWnd* PASCAL GetCapture();
- CWnd* SetCapture();
- static CWnd* PASCAL GetFocus();
- CWnd* SetFocus();
-
- static CWnd* PASCAL GetDesktopWindow();
-
- // Obsolete and non-portable APIs - not recommended for new code
- void CloseWindow();
- BOOL OpenIcon();
-
- // Dialog-Box Item Functions
- // (NOTE: Dialog-Box Items/Controls are not necessarily in dialog boxes!)
- void CheckDlgButton(int nIDButton, UINT nCheck);
- void CheckRadioButton(int nIDFirstButton, int nIDLastButton,
- int nIDCheckButton);
- int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);
- int DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
- int nIDStaticPath, UINT nFileType);
- int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
- int nIDStaticPath, UINT nFileType);
- BOOL DlgDirSelect(LPTSTR lpString, int nIDListBox);
- BOOL DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox);
-
- UINT GetDlgItemInt(int nID, BOOL* lpTrans = NULL,
- BOOL bSigned = TRUE) const;
- int GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const;
- int GetDlgItemText(int nID, CString& rString) const;
- CWnd* GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
-
- CWnd* GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
- UINT IsDlgButtonChecked(int nIDButton) const;
- LRESULT SendDlgItemMessage(int nID, UINT message,
- WPARAM wParam = 0, LPARAM lParam = 0);
- void SetDlgItemInt(int nID, UINT nValue, BOOL bSigned = TRUE);
- void SetDlgItemText(int nID, LPCTSTR lpszString);
-
- // Scrolling Functions
- int GetScrollPos(int nBar) const;
- void GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const;
- void ScrollWindow(int xAmount, int yAmount,
- LPCRECT lpRect = NULL,
- LPCRECT lpClipRect = NULL);
- int SetScrollPos(int nBar, int nPos, BOOL bRedraw = TRUE);
- void SetScrollRange(int nBar, int nMinPos, int nMaxPos,
- BOOL bRedraw = TRUE);
- void ShowScrollBar(UINT nBar, BOOL bShow = TRUE);
- void EnableScrollBarCtrl(int nBar, BOOL bEnable = TRUE);
- virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
- // return sibling scrollbar control (or NULL if none)
-
- int ScrollWindowEx(int dx, int dy,
- LPCRECT lpRectScroll, LPCRECT lpRectClip,
- CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags);
- BOOL SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo,
- BOOL bRedraw = TRUE);
- BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL);
- int GetScrollLimit(int nBar);
-
- // Window Access Functions
- CWnd* ChildWindowFromPoint(POINT point) const;
- CWnd* ChildWindowFromPoint(POINT point, UINT nFlags) const;
- static CWnd* PASCAL FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName);
- CWnd* GetNextWindow(UINT nFlag = GW_HWNDNEXT) const;
- CWnd* GetTopWindow() const;
-
- CWnd* GetWindow(UINT nCmd) const;
- CWnd* GetLastActivePopup() const;
-
- BOOL IsChild(const CWnd* pWnd) const;
- CWnd* GetParent() const;
- CWnd* SetParent(CWnd* pWndNewParent);
- static CWnd* PASCAL WindowFromPoint(POINT point);
-
- // Alert Functions
- BOOL FlashWindow(BOOL bInvert);
- int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
- UINT nType = MB_OK);
-
- // Clipboard Functions
- BOOL ChangeClipboardChain(HWND hWndNext);
- HWND SetClipboardViewer();
- BOOL OpenClipboard();
- static CWnd* PASCAL GetClipboardOwner();
- static CWnd* PASCAL GetClipboardViewer();
- static CWnd* PASCAL GetOpenClipboardWindow();
-
- // Caret Functions
- void CreateCaret(CBitmap* pBitmap);
- void CreateSolidCaret(int nWidth, int nHeight);
- void CreateGrayCaret(int nWidth, int nHeight);
- static CPoint PASCAL GetCaretPos();
- static void PASCAL SetCaretPos(POINT point);
- void HideCaret();
- void ShowCaret();
-
- // Shell Interaction Functions
- void DragAcceptFiles(BOOL bAccept = TRUE);
-
- // Icon Functions
- HICON SetIcon(HICON hIcon, BOOL bBigIcon);
- HICON GetIcon(BOOL bBigIcon) const;
-
- // Context Help Functions
- BOOL SetWindowContextHelpId(DWORD dwContextHelpId);
- DWORD GetWindowContextHelpId() const;
-
- // Dialog Data support
- public:
- BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
- // data wnd must be same type as this
-
- // Help Command Handlers
- afx_msg void OnHelp(); // F1 (uses current context)
- afx_msg void OnHelpIndex(); // ID_HELP_INDEX
- afx_msg void OnHelpFinder(); // ID_HELP_FINDER, ID_DEFAULT_HELP
- afx_msg void OnHelpUsing(); // ID_HELP_USING
- virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
-
- // Layout and other functions
- public:
- enum RepositionFlags
- { reposDefault = 0, reposQuery = 1, reposExtra = 2 };
- void RepositionBars(UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver,
- UINT nFlag = reposDefault, LPRECT lpRectParam = NULL,
- LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE);
-
- // dialog support
- void UpdateDialogControls(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
- void CenterWindow(CWnd* pAlternateOwner = NULL);
- int RunModalLoop(DWORD dwFlags = 0);
- virtual BOOL ContinueModal();
- virtual void EndModalLoop(int nResult);
-
- #ifndef _AFX_NO_OCC_SUPPORT
- // OLE control wrapper functions
- void AFX_CDECL InvokeHelper(DISPID dwDispID, WORD wFlags,
- VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...);
- void AFX_CDECL SetProperty(DISPID dwDispID, VARTYPE vtProp, ...);
- void GetProperty(DISPID dwDispID, VARTYPE vtProp, void* pvProp) const;
- IUnknown* GetDSCCursor();
- void BindDefaultProperty(DISPID dwDispID, VARTYPE vtProp, LPCTSTR szFieldName, CWnd* pDSCWnd);
- void BindProperty(DISPID dwDispId, CWnd* pWndDSC);
- #endif
-
- // Window-Management message handler member functions
- protected:
- virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
- virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
-
- afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
- afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
- afx_msg LRESULT OnActivateTopLevel(WPARAM, LPARAM);
- afx_msg void OnCancelMode();
- afx_msg void OnChildActivate();
- afx_msg void OnClose();
- afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos);
- afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
-
- afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
-
- afx_msg void OnDestroy();
- afx_msg void OnEnable(BOOL bEnable);
- afx_msg void OnEndSession(BOOL bEnding);
- afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
- afx_msg BOOL OnEraseBkgnd(CDC* pDC);
- afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
- afx_msg BOOL OnHelpInfo(HELPINFO* lpHelpInfo);
- afx_msg void OnIconEraseBkgnd(CDC* pDC);
- afx_msg void OnKillFocus(CWnd* pNewWnd);
- afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu);
- afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
- afx_msg void OnMove(int x, int y);
- afx_msg void OnPaint();
- afx_msg void OnParentNotify(UINT message, LPARAM lParam);
- afx_msg HCURSOR OnQueryDragIcon();
- afx_msg BOOL OnQueryEndSession();
- afx_msg BOOL OnQueryNewPalette();
- afx_msg BOOL OnQueryOpen();
- afx_msg void OnSetFocus(CWnd* pOldWnd);
- afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnTCard(UINT idAction, DWORD dwActionData);
- afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
- afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
-
- // Nonclient-Area message handler member functions
- afx_msg BOOL OnNcActivate(BOOL bActive);
- afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
- afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnNcDestroy();
- afx_msg UINT OnNcHitTest(CPoint point);
- afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
- afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
- afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
- afx_msg void OnNcMButtonDblClk(UINT nHitTest, CPoint point);
- afx_msg void OnNcMButtonDown(UINT nHitTest, CPoint point);
- afx_msg void OnNcMButtonUp(UINT nHitTest, CPoint point);
- afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
- afx_msg void OnNcPaint();
- afx_msg void OnNcRButtonDblClk(UINT nHitTest, CPoint point);
- afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);
- afx_msg void OnNcRButtonUp(UINT nHitTest, CPoint point);
-
- // System message handler member functions
- afx_msg void OnDropFiles(HDROP hDropInfo);
- afx_msg void OnPaletteIsChanging(CWnd* pRealizeWnd);
- afx_msg void OnSysChar(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
- afx_msg void OnSysDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnCompacting(UINT nCpuTime);
- afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
- afx_msg void OnFontChange();
- afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
- afx_msg void OnSpoolerStatus(UINT nStatus, UINT nJobs);
- afx_msg void OnSysColorChange();
- afx_msg void OnTimeChange();
- afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
- afx_msg void OnWinIniChange(LPCTSTR lpszSection);
-
- // Input message handler member functions
- afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
- afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
- afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
- afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
- afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
- afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
- afx_msg LRESULT OnRegisteredMouseWheel(WPARAM wParam, LPARAM lParam);
- afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
- afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
- afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
- afx_msg void OnTimer(UINT nIDEvent);
-
- // Initialization message handler member functions
- afx_msg void OnInitMenu(CMenu* pMenu);
- afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
-
- // Clipboard message handler member functions
- afx_msg void OnAskCbFormatName(UINT nMaxCount, LPTSTR lpszString);
- afx_msg void OnChangeCbChain(HWND hWndRemove, HWND hWndAfter);
- afx_msg void OnDestroyClipboard();
- afx_msg void OnDrawClipboard();
- afx_msg void OnHScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
- afx_msg void OnPaintClipboard(CWnd* pClipAppWnd, HGLOBAL hPaintStruct);
- afx_msg void OnRenderAllFormats();
- afx_msg void OnRenderFormat(UINT nFormat);
- afx_msg void OnSizeClipboard(CWnd* pClipAppWnd, HGLOBAL hRect);
- afx_msg void OnVScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
-
- // Control message handler member functions
- afx_msg int OnCompareItem(int nIDCtl, LPCOMPAREITEMSTRUCT lpCompareItemStruct);
- afx_msg void OnDeleteItem(int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct);
- afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
- afx_msg UINT OnGetDlgCode();
- afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
- afx_msg int OnCharToItem(UINT nChar, CListBox* pListBox, UINT nIndex);
- afx_msg int OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex);
-
- // MDI message handler member functions
- afx_msg void OnMDIActivate(BOOL bActivate,
- CWnd* pActivateWnd, CWnd* pDeactivateWnd);
-
- // Menu loop notification messages
- afx_msg void OnEnterMenuLoop(BOOL bIsTrackPopupMenu);
- afx_msg void OnExitMenuLoop(BOOL bIsTrackPopupMenu);
-
- // Win4 messages
- afx_msg void OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct);
- afx_msg void OnStyleChanging(int nStyleType, LPSTYLESTRUCT lpStyleStruct);
- afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
- afx_msg void OnMoving(UINT nSide, LPRECT lpRect);
- afx_msg void OnCaptureChanged(CWnd* pWnd);
- afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
-
- // Overridables and other helpers (for implementation of derived classes)
- protected:
- // for deriving from a standard control
- virtual WNDPROC* GetSuperWndProcAddr();
-
- // for dialog data exchange and validation
- virtual void DoDataExchange(CDataExchange* pDX);
-
- public:
- // for modality
- virtual void BeginModalState();
- virtual void EndModalState();
-
- // for translating Windows messages in main message pump
- virtual BOOL PreTranslateMessage(MSG* pMsg);
-
- #ifndef _AFX_NO_OCC_SUPPORT
- // for ambient properties exposed to contained OLE controls
- virtual BOOL OnAmbientProperty(COleControlSite* pSite, DISPID dispid,
- VARIANT* pvar);
- #endif
-
- protected:
- // for processing Windows messages
- virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
- virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
-
- // for handling default processing
- LRESULT Default();
- virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
-
- // for custom cleanup after WM_NCDESTROY
- virtual void PostNcDestroy();
-
- // for notifications from parent
- virtual BOOL OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
- // return TRUE if parent should not process this message
- BOOL ReflectChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
- static BOOL PASCAL ReflectLastMsg(HWND hWndChild, LRESULT* pResult = NULL);
-
- // Implementation
- public:
- virtual ~CWnd();
- virtual BOOL CheckAutoCenter();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- #ifndef _AFX_NO_CTL3D_SUPPORT
- // 3D support (these APIs will be obsolete with next version of Windows)
- BOOL SubclassCtl3d(int nControlType = -1);
- // see CTL3D.H for list of control types
- BOOL SubclassDlg3d(DWORD dwMask = 0xFFFF /*CTL3D_ALL*/);
- // see CTL3D.H for list of mask values
- #endif
- static BOOL PASCAL GrayCtlColor(HDC hDC, HWND hWnd, UINT nCtlColor,
- HBRUSH hbrGray, COLORREF clrText);
- #ifndef _AFX_NO_GRAYDLG_SUPPORT
- HBRUSH OnGrayCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
- #endif
-
- // helper routines for implementation
- BOOL HandleFloatingSysCommand(UINT nID, LPARAM lParam);
- BOOL IsTopParentActive() const;
- void ActivateTopParent();
- static BOOL PASCAL WalkPreTranslateTree(HWND hWndStop, MSG* pMsg);
- static CWnd* PASCAL GetDescendantWindow(HWND hWnd, int nID,
- BOOL bOnlyPerm);
- static void PASCAL SendMessageToDescendants(HWND hWnd, UINT message,
- WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm);
- virtual BOOL IsFrameWnd() const; // IsKindOf(RUNTIME_CLASS(CFrameWnd)))
- virtual void OnFinalRelease();
- BOOL PreTranslateInput(LPMSG lpMsg);
- static BOOL PASCAL ModifyStyle(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
- UINT nFlags);
- static BOOL PASCAL ModifyStyleEx(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
- UINT nFlags);
- static void PASCAL _FilterToolTipMessage(MSG* pMsg, CWnd* pWnd);
- BOOL _EnableToolTips(BOOL bEnable, UINT nFlag);
- static HWND PASCAL GetSafeOwner_(HWND hWnd, HWND* pWndTop);
-
- public:
- HWND m_hWndOwner; // implementation of SetOwner and GetOwner
- UINT m_nFlags; // see WF_ flags above
-
- protected:
- WNDPROC m_pfnSuper; // for subclassing of controls
- static const UINT m_nMsgDragList;
- int m_nModalResult; // for return values from CWnd::RunModalLoop
-
- COleDropTarget* m_pDropTarget; // for automatic cleanup of drop target
- friend class COleDropTarget;
- friend class CFrameWnd;
-
- // for creating dialogs and dialog-like windows
- BOOL CreateDlg(LPCTSTR lpszTemplateName, CWnd* pParentWnd);
- BOOL CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd);
- BOOL CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
- HINSTANCE hInst);
-
- #ifndef _AFX_NO_OCC_SUPPORT
- COleControlContainer* m_pCtrlCont; // for containing OLE controls
- COleControlSite* m_pCtrlSite; // for wrapping an OLE control
- friend class COccManager;
- friend class COleControlSite;
- friend class COleControlContainer;
- BOOL InitControlContainer();
- virtual BOOL SetOccDialogInfo(struct _AFX_OCC_DIALOG_INFO* pOccDialogInfo);
- void AttachControlSite(CHandleMap* pMap);
- public:
- void AttachControlSite(CWnd* pWndParent);
- #endif
-
- protected:
- // implementation of message dispatch/hooking
- friend LRESULT CALLBACK _AfxSendMsgHook(int, WPARAM, LPARAM);
- friend void AFXAPI _AfxStandardSubclass(HWND);
- friend LRESULT CALLBACK _AfxCbtFilterHook(int, WPARAM, LPARAM);
- friend LRESULT AFXAPI AfxCallWndProc(CWnd*, HWND, UINT, WPARAM, LPARAM);
-
- // standard message implementation
- afx_msg LRESULT OnNTCtlColor(WPARAM wParam, LPARAM lParam);
- #ifndef _AFX_NO_CTL3D_SUPPORT
- afx_msg LRESULT OnQuery3dControls(WPARAM, LPARAM);
- #endif
- afx_msg LRESULT OnDisplayChange(WPARAM, LPARAM);
- afx_msg LRESULT OnDragList(WPARAM, LPARAM);
-
- //{{AFX_MSG(CWnd)
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
-
- private:
- CWnd(HWND hWnd); // just for special initialization
- };
-
- // helpers for registering your own WNDCLASSes
- LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,
- HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0);
-
- BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);
-
- // helper to initialize rich edit control
- BOOL AFXAPI AfxInitRichEdit();
-
- // Implementation
- LRESULT CALLBACK AfxWndProc(HWND, UINT, WPARAM, LPARAM);
-
- WNDPROC AFXAPI AfxGetAfxWndProc();
- #define AfxWndProc (*AfxGetAfxWndProc())
-
- typedef void (AFX_MSG_CALL CWnd::*AFX_PMSGW)(void);
- // like 'AFX_PMSG' but for CWnd derived classes only
-
- typedef void (AFX_MSG_CALL CWinThread::*AFX_PMSGT)(void);
- // like 'AFX_PMSG' but for CWinThread-derived classes only
-
- /////////////////////////////////////////////////////////////////////////////
- // CDialog - a modal or modeless dialog
-
- class CDialog : public CWnd
- {
- DECLARE_DYNAMIC(CDialog)
-
- // Modeless construct
- public:
- CDialog();
-
- BOOL Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
- BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
- BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
- void* lpDialogInit = NULL);
- BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);
-
- // Modal construct
- public:
- CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
- CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
- BOOL InitModalIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
- void* lpDialogInit = NULL);
- BOOL InitModalIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);
-
- // Attributes
- public:
- void MapDialogRect(LPRECT lpRect) const;
- void SetHelpID(UINT nIDR);
-
- // Operations
- public:
- // modal processing
- virtual int DoModal();
-
- // support for passing on tab control - use 'PostMessage' if needed
- void NextDlgCtrl() const;
- void PrevDlgCtrl() const;
- void GotoDlgCtrl(CWnd* pWndCtrl);
-
- // default button access
- void SetDefID(UINT nID);
- DWORD GetDefID() const;
-
- // termination
- void EndDialog(int nResult);
-
- // Overridables (special message map entries)
- virtual BOOL OnInitDialog();
- virtual void OnSetFont(CFont* pFont);
- protected:
- virtual void OnOK();
- virtual void OnCancel();
-
- // Implementation
- public:
- virtual ~CDialog();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- virtual BOOL PreTranslateMessage(MSG* pMsg);
- virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo);
- virtual BOOL CheckAutoCenter();
-
- protected:
- UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
-
- // parameters for 'DoModal'
- LPCTSTR m_lpszTemplateName; // name or MAKEINTRESOURCE
- HGLOBAL m_hDialogTemplate; // indirect (m_lpDialogTemplate == NULL)
- LPCDLGTEMPLATE m_lpDialogTemplate; // indirect if (m_lpszTemplateName == NULL)
- void* m_lpDialogInit; // DLGINIT resource data
- CWnd* m_pParentWnd; // parent/owner window
- HWND m_hWndTop; // top level parent window (may be disabled)
-
- #ifndef _AFX_NO_OCC_SUPPORT
- _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
- virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
- #endif
- virtual void PreInitDialog();
-
- // implementation helpers
- HWND PreModal();
- void PostModal();
-
- BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
- void* lpDialogInit, HINSTANCE hInst);
- BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd,
- HINSTANCE hInst);
-
- protected:
- //{{AFX_MSG(CDialog)
- afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
- afx_msg LRESULT HandleSetFont(WPARAM, LPARAM);
- //}}AFX_MSG
- #ifndef _AFX_NO_GRAYDLG_SUPPORT
- afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
- #endif
- DECLARE_MESSAGE_MAP()
- };
-
- // all CModalDialog functionality is now in CDialog
- #define CModalDialog CDialog
-
- /////////////////////////////////////////////////////////////////////////////
- // Standard Windows controls
-
- class CStatic : public CWnd
- {
- DECLARE_DYNAMIC(CStatic)
-
- // Constructors
- public:
- CStatic();
- BOOL Create(LPCTSTR lpszText, DWORD dwStyle,
- const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);
-
- // Operations
- HICON SetIcon(HICON hIcon);
- HICON GetIcon() const;
-
- #if (WINVER >= 0x400)
- HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);
- HENHMETAFILE GetEnhMetaFile() const;
- HBITMAP SetBitmap(HBITMAP hBitmap);
- HBITMAP GetBitmap() const;
- HCURSOR SetCursor(HCURSOR hCursor);
- HCURSOR GetCursor();
- #endif
-
- // Implementation
- public:
- virtual ~CStatic();
- };
-
- class CButton : public CWnd
- {
- DECLARE_DYNAMIC(CButton)
-
- // Constructors
- public:
- CButton();
- BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,
- const RECT& rect, CWnd* pParentWnd, UINT nID);
-
- // Attributes
- UINT GetState() const;
- void SetState(BOOL bHighlight);
- int GetCheck() const;
- void SetCheck(int nCheck);
- UINT GetButtonStyle() const;
- void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE);
-
- #if (WINVER >= 0x400)
- HICON SetIcon(HICON hIcon);
- HICON GetIcon() const;
- HBITMAP SetBitmap(HBITMAP hBitmap);
- HBITMAP GetBitmap() const;
- HCURSOR SetCursor(HCURSOR hCursor);
- HCURSOR GetCursor();
- #endif
-
- // Overridables (for owner draw only)
- virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
-
- // Implementation
- public:
- virtual ~CButton();
- protected:
- virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
- };
-
- class CListBox : public CWnd
- {
- DECLARE_DYNAMIC(CListBox)
-
- // Constructors
- public:
- CListBox();
- BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
-
- // Attributes
-
- // for entire listbox
- int GetCount() const;
- int GetHorizontalExtent() const;
- void SetHorizontalExtent(int cxExtent);
- int GetTopIndex() const;
- int SetTopIndex(int nIndex);
- LCID GetLocale() const;
- LCID SetLocale(LCID nNewLocale);
- #if (WINVER >= 0x400)
- int InitStorage(int nItems, UINT nBytes);
- UINT ItemFromPoint(CPoint pt, BOOL& bOutside) const;
- #endif
- // for single-selection listboxes
- int GetCurSel() const;
- int SetCurSel(int nSelect);
-
- // for multiple-selection listboxes
- int GetSel(int nIndex) const; // also works for single-selection
- int SetSel(int nIndex, BOOL bSelect = TRUE);
- int GetSelCount() const;
- int GetSelItems(int nMaxItems, LPINT rgIndex) const;
- void SetAnchorIndex(int nIndex);
- int GetAnchorIndex() const;
-
- // for listbox items
- DWORD GetItemData(int nIndex) const;
- int SetItemData(int nIndex, DWORD dwItemData);
- void* GetItemDataPtr(int nIndex) const;
- int SetItemDataPtr(int nIndex, void* pData);
- int GetItemRect(int nIndex, LPRECT lpRect) const;
- int GetText(int nIndex, LPTSTR lpszBuffer) const;
- void GetText(int nIndex, CString& rString) const;
- int GetTextLen(int nIndex) const;
-
- // Settable only attributes
- void SetColumnWidth(int cxWidth);
- BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
- void SetTabStops();
- BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
-
- int SetItemHeight(int nIndex, UINT cyItemHeight);
- int GetItemHeight(int nIndex) const;
- int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
- int GetCaretIndex() const;
- int SetCaretIndex(int nIndex, BOOL bScroll = TRUE);
-
- // Operations
- // manipulating listbox items
- int AddString(LPCTSTR lpszItem);
- int DeleteString(UINT nIndex);
- int InsertString(int nIndex, LPCTSTR lpszItem);
- void ResetContent();
- int Dir(UINT attr, LPCTSTR lpszWildCard);
-
- // selection helpers
- int FindString(int nStartAfter, LPCTSTR lpszItem) const;
- int SelectString(int nStartAfter, LPCTSTR lpszItem);
- int SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem);
-
- // Overridables (must override draw, measure and compare for owner draw)
- virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
- virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
- virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
- virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
- virtual int VKeyToItem(UINT nKey, UINT nIndex);
- virtual int CharToItem(UINT nKey, UINT nIndex);
-
- // Implementation
- public:
- virtual ~CListBox();
- protected:
- virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
- };
-
- class CCheckListBox : public CListBox
- {
- DECLARE_DYNAMIC(CCheckListBox)
-
- // Constructors
- public:
- CCheckListBox();
- BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
-
- // Attributes
- void SetCheckStyle(UINT nStyle);
- UINT GetCheckStyle();
- void SetCheck(int nIndex, int nCheck);
- int GetCheck(int nIndex);
- void Enable(int nIndex, BOOL bEnabled = TRUE);
- BOOL IsEnabled(int nIndex);
-
- virtual CRect OnGetCheckPosition(CRect rectItem, CRect rectCheckBox);
-
- // Overridables (must override draw, measure and compare for owner draw)
- virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
- virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
-
- // Implementation
- protected:
- void PreDrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
- void PreMeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
- int PreCompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
- void PreDeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
-
- virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
-
- void SetSelectionCheck( int nCheck );
-
- #ifdef _DEBUG
- virtual void PreSubclassWindow();
- #endif
-
- int CalcMinimumItemHeight();
- void InvalidateCheck(int nIndex);
- void InvalidateItem(int nIndex);
- int CheckFromPoint(CPoint point, BOOL& bInCheck);
-
- int m_cyText;
- UINT m_nStyle;
-
- // Message map functions
- protected:
- //{{AFX_MSG(CCheckListBox)
- afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
- afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBAddString(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBFindString(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBFindStringExact(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBGetItemData(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBGetText(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBInsertString(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBSelectString(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBSetItemData(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnLBSetItemHeight(WPARAM wParam, LPARAM lParam);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- class CComboBox : public CWnd
- {
- DECLARE_DYNAMIC(CComboBox)
-
- // Constructors
- public:
- CComboBox();
- BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
-
- // Attributes
- // for entire combo box
- int GetCount() const;
- int GetCurSel() const;
- int SetCurSel(int nSelect);
- LCID GetLocale() const;
- LCID SetLocale(LCID nNewLocale);
- // Win4
- int GetTopIndex() const;
- int SetTopIndex(int nIndex);
- int InitStorage(int nItems, UINT nBytes);
- void SetHorizontalExtent(UINT nExtent);
- UINT GetHorizontalExtent() const;
- int SetDroppedWidth(UINT nWidth);
- int GetDroppedWidth() const;
-
- // for edit control
- DWORD GetEditSel() const;
- BOOL LimitText(int nMaxChars);
- BOOL SetEditSel(int nStartChar, int nEndChar);
-
- // for combobox item
- DWORD GetItemData(int nIndex) const;
- int SetItemData(int nIndex, DWORD dwItemData);
- void* GetItemDataPtr(int nIndex) const;
- int SetItemDataPtr(int nIndex, void* pData);
- int GetLBText(int nIndex, LPTSTR lpszText) const;
- void GetLBText(int nIndex, CString& rString) const;
- int GetLBTextLen(int nIndex) const;
-
- int SetItemHeight(int nIndex, UINT cyItemHeight);
- int GetItemHeight(int nIndex) const;
- int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
- int SetExtendedUI(BOOL bExtended = TRUE);
- BOOL GetExtendedUI() const;
- void GetDroppedControlRect(LPRECT lprect) const;
- BOOL GetDroppedState() const;
-
- // Operations
- // for drop-down combo boxes
- void ShowDropDown(BOOL bShowIt = TRUE);
-
- // manipulating listbox items
- int AddString(LPCTSTR lpszString);
- int DeleteString(UINT nIndex);
- int InsertString(int nIndex, LPCTSTR lpszString);
- void ResetContent();
- int Dir(UINT attr, LPCTSTR lpszWildCard);
-
- // selection helpers
- int FindString(int nStartAfter, LPCTSTR lpszString) const;
- int SelectString(int nStartAfter, LPCTSTR lpszString);
-
- // Clipboard operations
- void Clear();
- void Copy();
- void Cut();
- void Paste();
-
- // Overridables (must override draw, measure and compare for owner draw)
- virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
- virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
- virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
- virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
-
- // Implementation
- public:
- virtual ~CComboBox();
- protected:
- virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
- };
-
- class CEdit : public CWnd
- {
- DECLARE_DYNAMIC(CEdit)
-
- // Constructors
- public:
- CEdit();
- BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
-
- // Attributes
- BOOL CanUndo() const;
- int GetLineCount() const;
- BOOL GetModify() const;
- void SetModify(BOOL bModified = TRUE);
- void GetRect(LPRECT lpRect) const;
- DWORD GetSel() const;
- void GetSel(int& nStartChar, int& nEndChar) const;
- HLOCAL GetHandle() const;
- void SetHandle(HLOCAL hBuffer);
- #if (WINVER >= 0x400)
- void SetMargins(UINT nLeft, UINT nRight);
- DWORD GetMargins() const;
- void SetLimitText(UINT nMax);
- UINT GetLimitText() const;
- CPoint PosFromChar(UINT nChar) const;
- int CharFromPos(CPoint pt) const;
- #endif
-
- // NOTE: first word in lpszBuffer must contain the size of the buffer!
- int GetLine(int nIndex, LPTSTR lpszBuffer) const;
- int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
-
- // Operations
- void EmptyUndoBuffer();
- BOOL FmtLines(BOOL bAddEOL);
-
- void LimitText(int nChars = 0);
- int LineFromChar(int nIndex = -1) const;
- int LineIndex(int nLine = -1) const;
- int LineLength(int nLine = -1) const;
- void LineScroll(int nLines, int nChars = 0);
- void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
- void SetPasswordChar(TCHAR ch);
- void SetRect(LPCRECT lpRect);
- void SetRectNP(LPCRECT lpRect);
- void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);
- void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE);
- BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
- void SetTabStops();
- BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
-
- // Clipboard operations
- BOOL Undo();
- void Clear();
- void Copy();
- void Cut();
- void Paste();
-
- BOOL SetReadOnly(BOOL bReadOnly = TRUE);
- int GetFirstVisibleLine() const;
- TCHAR GetPasswordChar() const;
-
- // Implementation
- public:
- virtual ~CEdit();
- };
-
- class CScrollBar : public CWnd
- {
- DECLARE_DYNAMIC(CScrollBar)
-
- // Constructors
- public:
- CScrollBar();
- BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
-
- // Attributes
- int GetScrollPos() const;
- int SetScrollPos(int nPos, BOOL bRedraw = TRUE);
- void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const;
- void SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw = TRUE);
- void ShowScrollBar(BOOL bShow = TRUE);
-
- BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);
-
- BOOL SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE);
- BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL);
- int GetScrollLimit();
-
- // Implementation
- public:
- virtual ~CScrollBar();
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CFrameWnd - base class for SDI and other frame windows
-
- // Frame window styles
- #define FWS_ADDTOTITLE 0x00008000L // modify title based on content
- #define FWS_PREFIXTITLE 0x00004000L // show document name before app name
- #define FWS_SNAPTOBARS 0x00002000L // snap size to size of contained bars
-
- struct CPrintPreviewState; // forward reference (see afxext.h)
- class CControlBar; // forward reference (see afxext.h)
- class CReBar; // forward reference (see afxext.h)
-
- class CDockBar; // forward reference (see afxpriv.h)
- class CMiniDockFrameWnd; // forward reference (see afxpriv.h)
- class CDockState; // forward reference (see afxpriv.h)
-
- class COleFrameHook; // forward reference (see ..\src\oleimpl2.h)
-
- class CFrameWnd : public CWnd
- {
- DECLARE_DYNCREATE(CFrameWnd)
-
- // Constructors
- public:
- static AFX_DATA const CRect rectDefault;
- CFrameWnd();
-
- BOOL LoadAccelTable(LPCTSTR lpszResourceName);
- BOOL Create(LPCTSTR lpszClassName,
- LPCTSTR lpszWindowName,
- DWORD dwStyle = WS_OVERLAPPEDWINDOW,
- const RECT& rect = rectDefault,
- CWnd* pParentWnd = NULL, // != NULL for popups
- LPCTSTR lpszMenuName = NULL,
- DWORD dwExStyle = 0,
- CCreateContext* pContext = NULL);
-
- // dynamic creation - load frame and associated resources
- virtual BOOL LoadFrame(UINT nIDResource,
- DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
- CWnd* pParentWnd = NULL,
- CCreateContext* pContext = NULL);
-
- // special helper for view creation
- CWnd* CreateView(CCreateContext* pContext, UINT nID = AFX_IDW_PANE_FIRST);
-
- // Attributes
- virtual CDocument* GetActiveDocument();
-
- // Active child view maintenance
- CView* GetActiveView() const; // active view or NULL
- void SetActiveView(CView* pViewNew, BOOL bNotify = TRUE);
- // active view or NULL, bNotify == FALSE if focus should not be set
-
- // Active frame (for frames within frames -- MDI)
- virtual CFrameWnd* GetActiveFrame();
-
- // For customizing the default messages on the status bar
- virtual void GetMessageString(UINT nID, CString& rMessage) const;
-
- BOOL m_bAutoMenuEnable;
- // TRUE => menu items without handlers will be disabled
-
- BOOL IsTracking() const;
-
- // Operations
- virtual void RecalcLayout(BOOL bNotify = TRUE);
- virtual void ActivateFrame(int nCmdShow = -1);
- void InitialUpdateFrame(CDocument* pDoc, BOOL bMakeVisible);
- void SetTitle(LPCTSTR lpszTitle);
- CString GetTitle() const;
-
- // to set text of standard status bar
- void SetMessageText(LPCTSTR lpszText);
- void SetMessageText(UINT nID);
-
- // control bar docking
- void EnableDocking(DWORD dwDockStyle);
- void DockControlBar(CControlBar* pBar, UINT nDockBarID = 0,
- LPCRECT lpRect = NULL);
- void FloatControlBar(CControlBar* pBar, CPoint point,
- DWORD dwStyle = CBRS_ALIGN_TOP);
- CControlBar* GetControlBar(UINT nID);
-
- // frame window based modality
- virtual void BeginModalState();
- virtual void EndModalState();
- BOOL InModalState() const;
- void ShowOwnedWindows(BOOL bShow);
-
- // saving and loading control bar state
- void LoadBarState(LPCTSTR lpszProfileName);
- void SaveBarState(LPCTSTR lpszProfileName) const;
- void ShowControlBar(CControlBar* pBar, BOOL bShow, BOOL bDelay);
- void SetDockState(const CDockState& state);
- void GetDockState(CDockState& state) const;
-
- // Overridables
- virtual void OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState);
- virtual CWnd* GetMessageBar();
-
- // border space negotiation
- enum BorderCmd
- { borderGet = 1, borderRequest = 2, borderSet = 3 };
- virtual BOOL NegotiateBorderSpace(UINT nBorderCmd, LPRECT lpRectBorder);
-
- protected:
- virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
-
- // Command Handlers
- public:
- afx_msg void OnContextHelp(); // for Shift+F1 help
- afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
- afx_msg BOOL OnBarCheck(UINT nID);
-
- // Implementation
- public:
- virtual ~CFrameWnd();
- int m_nWindow; // general purpose window number - display as ":n"
- // -1 => unknown, 0 => only window viewing document
- // 1 => first of many windows viewing document, 2=> second
-
- HMENU m_hMenuDefault; // default menu resource for this frame
- HACCEL m_hAccelTable; // accelerator table
- DWORD m_dwPromptContext; // current help prompt context for message box
- BOOL m_bHelpMode; // if TRUE, then Shift+F1 help mode is active
- CFrameWnd* m_pNextFrameWnd; // next CFrameWnd in app global list
- CRect m_rectBorder; // for OLE border space negotiation
- COleFrameHook* m_pNotifyHook;
-
- CPtrList m_listControlBars; // array of all control bars that have this
- // window as their dock site
- int m_nShowDelay; // SW_ command for delay show/hide
-
- CMiniDockFrameWnd* CreateFloatingFrame(DWORD dwStyle);
- DWORD CanDock(CRect rect, DWORD dwDockStyle,
- CDockBar** ppDockBar = NULL); // called by CDockContext
- void AddControlBar(CControlBar *pBar);
- void RemoveControlBar(CControlBar *pBar);
- void DockControlBar(CControlBar* pBar, CDockBar* pDockBar,
- LPCRECT lpRect = NULL);
- void ReDockControlBar(CControlBar* pBar, CDockBar* pDockBar,
- LPCRECT lpRect = NULL);
- void NotifyFloatingWindows(DWORD dwFlags);
- void DestroyDockBars();
-
- protected:
- UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
- UINT m_nIDTracking; // tracking command ID or string IDS
- UINT m_nIDLastMessage; // last displayed message string IDS
- CView* m_pViewActive; // current active view
- BOOL (CALLBACK* m_lpfnCloseProc)(CFrameWnd* pFrameWnd);
- UINT m_cModalStack; // BeginModalState depth
- HWND* m_phWndDisable; // windows disabled because of BeginModalState
- HMENU m_hMenuAlt; // menu to update to (NULL means default)
- CString m_strTitle; // default title (original)
- BOOL m_bInRecalcLayout; // avoid recursion in RecalcLayout
- CRuntimeClass* m_pFloatingFrameClass;
- static const DWORD dwDockBarMap[4][2];
-
- public:
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- virtual BOOL IsFrameWnd() const;
- virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo);
- virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
- virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
- virtual HACCEL GetDefaultAccelerator();
- virtual BOOL PreTranslateMessage(MSG* pMsg);
-
- // idle update of frame user interface
- enum IdleFlags
- { idleMenu = 1, idleTitle = 2, idleNotify = 4, idleLayout = 8 };
- UINT m_nIdleFlags; // set of bit flags for idle processing
- virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
- void DelayUpdateFrameTitle();
- void DelayRecalcLayout(BOOL bNotify = TRUE);
-
- // for Shift+F1 help support
- BOOL CanEnterHelpMode();
- virtual void ExitHelpMode();
-
- // implementation helpers
- public:
- void UpdateFrameTitleForDocument(LPCTSTR lpszDocName);
- protected:
- LPCTSTR GetIconWndClass(DWORD dwDefaultStyle, UINT nIDResource);
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
- virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
- virtual void PostNcDestroy(); // default to delete this.
- int OnCreateHelper(LPCREATESTRUCT lpcs, CCreateContext* pContext);
- void BringToTop(int nCmdShow);
- // bring window to top for SW_ commands which affect z-order
-
- // implementation helpers for Shift+F1 help mode
- BOOL ProcessHelpMsg(MSG& msg, DWORD* pContext);
- HWND SetHelpCapture(POINT point, BOOL* pbDescendant);
-
- // CFrameWnd list management
- void AddFrameWnd();
- void RemoveFrameWnd();
-
- friend class CWnd; // for access to m_bModalDisable
- friend class CReBar; // for access to m_bInRecalcLayout
-
- //{{AFX_MSG(CFrameWnd)
- // Windows messages
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnDestroy();
- afx_msg void OnClose();
- afx_msg void OnInitMenu(CMenu*);
- afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
- afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
- afx_msg LRESULT OnPopMessageString(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnHelpPromptAddr(WPARAM wParam, LPARAM lParam);
- afx_msg void OnIdleUpdateCmdUI();
- afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
- afx_msg void OnSetFocus(CWnd* pOldWnd);
- afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg BOOL OnEraseBkgnd(CDC* pDC);
- afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
- afx_msg BOOL OnNcActivate(BOOL bActive);
- afx_msg void OnSysCommand(UINT nID, LONG lParam);
- afx_msg BOOL OnQueryEndSession();
- afx_msg void OnEndSession(BOOL bEnding);
- afx_msg void OnDropFiles(HDROP hDropInfo);
- afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
- afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnActivateTopLevel(WPARAM wParam, LPARAM lParam);
- afx_msg void OnEnable(BOOL bEnable);
- afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
- afx_msg BOOL OnQueryNewPalette();
- // standard commands
- afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult);
- afx_msg void OnUpdateKeyIndicator(CCmdUI* pCmdUI);
- afx_msg void OnHelp();
- afx_msg void OnUpdateContextHelp(CCmdUI* pCmdUI);
- //}}AFX_MSG
- protected:
- afx_msg LRESULT OnDDEInitiate(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnDDEExecute(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnDDETerminate(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnRegisteredMouseWheel(WPARAM wParam, LPARAM lParam);
- DECLARE_MESSAGE_MAP()
-
- friend class CWinApp;
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // MDI Support
-
- class CMDIFrameWnd : public CFrameWnd
- {
- DECLARE_DYNCREATE(CMDIFrameWnd)
-
- public:
- // Constructors
- CMDIFrameWnd();
-
- // Operations
- void MDIActivate(CWnd* pWndActivate);
- CMDIChildWnd* MDIGetActive(BOOL* pbMaximized = NULL) const;
- void MDIIconArrange();
- void MDIMaximize(CWnd* pWnd);
- void MDINext();
- void MDIRestore(CWnd* pWnd);
- CMenu* MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu);
- void MDITile();
- void MDICascade();
- void MDITile(int nType);
- void MDICascade(int nType);
- CMDIChildWnd* CreateNewChild(CRuntimeClass* pClass, UINT nResource,
- HMENU hMenu = NULL, HACCEL hAccel = NULL);
-
- // Overridables
- // MFC 1.0 backward compatible CreateClient hook (called by OnCreateClient)
- virtual BOOL CreateClient(LPCREATESTRUCT lpCreateStruct, CMenu* pWindowMenu);
- // customize if using an 'Window' menu with non-standard IDs
- virtual HMENU GetWindowMenuPopup(HMENU hMenuBar);
-
- // Implementation
- public:
- HWND m_hWndMDIClient; // MDI Client window handle
-
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
- virtual BOOL LoadFrame(UINT nIDResource,
- DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
- CWnd* pParentWnd = NULL,
- CCreateContext* pContext = NULL);
- virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
- virtual BOOL PreTranslateMessage(MSG* pMsg);
- virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
- virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo);
- virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
- virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
- virtual CFrameWnd* GetActiveFrame();
-
- protected:
- virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
- virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
-
- //{{AFX_MSG(CMDIFrameWnd)
- afx_msg void OnDestroy();
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnUpdateMDIWindowCmd(CCmdUI* pCmdUI);
- afx_msg BOOL OnMDIWindowCmd(UINT nID);
- afx_msg void OnWindowNew();
- afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
- afx_msg void OnIdleUpdateCmdUI();
- afx_msg LRESULT OnMenuChar(UINT nChar, UINT, CMenu*);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- class CMDIChildWnd : public CFrameWnd
- {
- DECLARE_DYNCREATE(CMDIChildWnd)
-
- // Constructors
- public:
- CMDIChildWnd();
-
- virtual BOOL Create(LPCTSTR lpszClassName,
- LPCTSTR lpszWindowName,
- DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
- const RECT& rect = rectDefault,
- CMDIFrameWnd* pParentWnd = NULL,
- CCreateContext* pContext = NULL);
-
- // Attributes
- CMDIFrameWnd* GetMDIFrame();
-
- // Operations
- void MDIDestroy();
- void MDIActivate();
- void MDIMaximize();
- void MDIRestore();
- void SetHandles(HMENU hMenu, HACCEL hAccel);
-
- // Implementation
- protected:
- HMENU m_hMenuShared; // menu when we are active
-
- public:
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
-
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
- virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle,
- CWnd* pParentWnd, CCreateContext* pContext = NULL);
- // 'pParentWnd' parameter is required for MDI Child
- virtual BOOL DestroyWindow();
- virtual BOOL PreTranslateMessage(MSG* pMsg);
- virtual void ActivateFrame(int nCmdShow = -1);
- virtual void OnUpdateFrameMenu(BOOL bActive, CWnd* pActivateWnd,
- HMENU hMenuAlt);
-
- BOOL m_bPseudoInactive; // TRUE if window is MDI active according to
- // windows, but not according to MFC...
-
- protected:
- virtual CWnd* GetMessageBar();
- virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
- virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
- BOOL UpdateClientEdge(LPRECT lpRect = NULL);
-
- //{{AFX_MSG(CMDIChildWnd)
- afx_msg void OnMDIActivate(BOOL bActivate, CWnd*, CWnd*);
- afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
- afx_msg BOOL OnNcActivate(BOOL bActive);
- afx_msg void OnDestroy();
- afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CMiniFrameWnd
-
- // MiniFrame window styles
- #define MFS_SYNCACTIVE 0x00000100L // syncronize activation w/ parent
- #define MFS_4THICKFRAME 0x00000200L // thick frame all around (no tiles)
- #define MFS_THICKFRAME 0x00000400L // use instead of WS_THICKFRAME
- #define MFS_MOVEFRAME 0x00000800L // no sizing, just moving
- #define MFS_BLOCKSYSMENU 0x00001000L // block hit testing on system menu
-
- class CMiniFrameWnd : public CFrameWnd
- {
- DECLARE_DYNCREATE(CMiniFrameWnd)
-
- // Constructors
- public:
- CMiniFrameWnd();
- BOOL Create(LPCTSTR lpClassName, LPCTSTR lpWindowName,
- DWORD dwStyle, const RECT& rect,
- CWnd* pParentWnd = NULL, UINT nID = 0);
- BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName,
- DWORD dwStyle, const RECT& rect,
- CWnd* pParentWnd = NULL, UINT nID = 0);
-
- // Implementation
- public:
- ~CMiniFrameWnd();
-
- static void AFX_CDECL Initialize();
-
- //{{AFX_MSG(CMiniFrameWnd)
- afx_msg BOOL OnNcActivate(BOOL bActive);
- afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpParams);
- afx_msg UINT OnNcHitTest(CPoint point);
- afx_msg void OnNcPaint();
- afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint pt);
- afx_msg void OnLButtonUp(UINT nFlags, CPoint pt);
- afx_msg void OnMouseMove(UINT nFlags, CPoint pt);
- afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
- afx_msg void OnGetMinMaxInfo(MINMAXINFO* pMMI);
- afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnFloatStatus(WPARAM wParam, LPARAM lParam);
- afx_msg LRESULT OnQueryCenterWnd(WPARAM wParam, LPARAM lParam);
- afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
-
- public:
- virtual void CalcWindowRect(LPRECT lpClientRect,
- UINT nAdjustType = adjustBorder);
-
- static void PASCAL CalcBorders(LPRECT lpClientRect,
- DWORD dwStyle = WS_THICKFRAME | WS_CAPTION, DWORD dwExStyle = 0);
-
- protected:
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
-
- protected:
- BOOL m_bSysTracking;
- BOOL m_bInSys;
- BOOL m_bActive;
- CString m_strCaption;
-
- void InvertSysMenu();
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // class CView is the client area UI for a document
-
- class CPrintDialog; // forward reference (see afxdlgs.h)
- class CPreviewView; // forward reference (see afxpriv.h)
- class CSplitterWnd; // forward reference (see afxext.h)
- class COleServerDoc; // forward reference (see afxole.h)
-
- typedef DWORD DROPEFFECT;
- class COleDataObject; // forward reference (see afxole.h)
-
- #ifdef _AFXDLL
- class CView : public CWnd
- #else
- class AFX_NOVTABLE CView : public CWnd
- #endif
- {
- DECLARE_DYNAMIC(CView)
-
- // Constructors
- protected:
- CView();
-
- // Attributes
- public:
- CDocument* GetDocument() const;
-
- // Operations
- public:
- // for standard printing setup (override OnPreparePrinting)
- BOOL DoPreparePrinting(CPrintInfo* pInfo);
-
- // Overridables
- public:
- virtual BOOL IsSelected(const CObject* pDocItem) const; // support for OLE
-
- // OLE scrolling support (used for drag/drop as well)
- virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
- virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
-
- // OLE drag/drop support
- virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject,
- DWORD dwKeyState, CPoint point);
- virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject,
- DWORD dwKeyState, CPoint point);
- virtual void OnDragLeave();
- virtual BOOL OnDrop(COleDataObject* pDataObject,
- DROPEFFECT dropEffect, CPoint point);
- virtual DROPEFFECT OnDropEx(COleDataObject* pDataObject,
- DROPEFFECT dropDefault, DROPEFFECT dropList, CPoint point);
- virtual DROPEFFECT OnDragScroll(DWORD dwKeyState, CPoint point);
-
- virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
-
- virtual void OnInitialUpdate(); // called first time after construct
-
- protected:
- // Activation
- virtual void OnActivateView(BOOL bActivate, CView* pActivateView,
- CView* pDeactiveView);
- virtual void OnActivateFrame(UINT nState, CFrameWnd* pFrameWnd);
-
- // General drawing/updating
- virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
- virtual void OnDraw(CDC* pDC) = 0;
-
- // Printing support
- virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
- // must override to enable printing and print preview
-
- virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
- virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
- virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
-
- // Advanced: end print preview mode, move to point
- virtual void OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point,
- CPreviewView* pView);
-
- // Implementation
- public:
- virtual ~CView();
- #ifdef _DEBUG
- virtual void Dump(CDumpContext&) const;
- virtual void AssertValid() const;
- #endif //_DEBUG
-
- // Advanced: for implementing custom print preview
- BOOL DoPrintPreview(UINT nIDResource, CView* pPrintView,
- CRuntimeClass* pPreviewViewClass, CPrintPreviewState* pState);
-
- virtual void CalcWindowRect(LPRECT lpClientRect,
- UINT nAdjustType = adjustBorder);
- virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
- static CSplitterWnd* PASCAL GetParentSplitter(
- const CWnd* pWnd, BOOL bAnyState);
-
- protected:
- CDocument* m_pDocument;
-
- public:
- virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo);
- protected:
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
- virtual void PostNcDestroy();
-
- // friend classes that call protected CView overridables
- friend class CDocument;
- friend class CDocTemplate;
- friend class CPreviewView;
- friend class CFrameWnd;
- friend class CMDIFrameWnd;
- friend class CMDIChildWnd;
- friend class CSplitterWnd;
- friend class COleServerDoc;
- friend class CDocObjectServer;
-
- //{{AFX_MSG(CView)
- afx_msg int OnCreate(LPCREATESTRUCT lpcs);
- afx_msg void OnDestroy();
- afx_msg void OnPaint();
- afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
- // commands
- afx_msg void OnUpdateSplitCmd(CCmdUI* pCmdUI);
- afx_msg BOOL OnSplitCmd(UINT nID);
- afx_msg void OnUpdateNextPaneMenu(CCmdUI* pCmdUI);
- afx_msg BOOL OnNextPaneCmd(UINT nID);
-
- // not mapped commands - must be mapped in derived class
- afx_msg void OnFilePrint();
- afx_msg void OnFilePrintPreview();
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // class CCtrlView allows almost any control to be a view
-
- #ifdef _AFXDLL
- class CCtrlView : public CView
- #else
- class AFX_NOVTABLE CCtrlView : public CView
- #endif
- {
- DECLARE_DYNCREATE(CCtrlView)
-
- public:
- CCtrlView(LPCTSTR lpszClass, DWORD dwStyle);
-
- // Attributes
- protected:
- CString m_strClass;
- DWORD m_dwDefaultStyle;
-
- // Overrides
- virtual void OnDraw(CDC*);
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
-
- // Implementation
- public:
- #ifdef _DEBUG
- virtual void Dump(CDumpContext&) const;
- virtual void AssertValid() const;
- #endif //_DEBUG
-
- protected:
- afx_msg void OnPaint();
- DECLARE_MESSAGE_MAP()
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // class CScrollView supports simple scrolling and scaling
-
- class CScrollView : public CView
- {
- DECLARE_DYNAMIC(CScrollView)
-
- // Constructors
- protected:
- CScrollView();
-
- public:
- static AFX_DATA const SIZE sizeDefault;
- // used to specify default calculated page and line sizes
-
- // in logical units - call one of the following Set routines
- void SetScaleToFitSize(SIZE sizeTotal);
- void SetScrollSizes(int nMapMode, SIZE sizeTotal,
- const SIZE& sizePage = sizeDefault,
- const SIZE& sizeLine = sizeDefault);
-
- // Attributes
- public:
- CPoint GetScrollPosition() const; // upper corner of scrolling
- CSize GetTotalSize() const; // logical size
-
- // for device units
- CPoint GetDeviceScrollPosition() const;
- void GetDeviceScrollSizes(int& nMapMode, SIZE& sizeTotal,
- SIZE& sizePage, SIZE& sizeLine) const;
-
- // Operations
- public:
- void ScrollToPosition(POINT pt); // set upper left position
- void FillOutsideRect(CDC* pDC, CBrush* pBrush);
- void ResizeParentToFit(BOOL bShrinkOnly = TRUE);
- BOOL DoMouseWheel(UINT fFlags, short zDelta, CPoint point);
-
- // Implementation
- protected:
- int m_nMapMode;
- CSize m_totalLog; // total size in logical units (no rounding)
- CSize m_totalDev; // total size in device units
- CSize m_pageDev; // per page scroll size in device units
- CSize m_lineDev; // per line scroll size in device units
-
- BOOL m_bCenter; // Center output if larger than total size
- BOOL m_bInsideUpdate; // internal state for OnSize callback
- void CenterOnPoint(CPoint ptCenter);
- void ScrollToDevicePosition(POINT ptDev); // explicit scrolling no checking
-
- protected:
- virtual void OnDraw(CDC* pDC) = 0; // pass on pure virtual
-
- void UpdateBars(); // adjust scrollbars etc
- BOOL GetTrueClientSize(CSize& size, CSize& sizeSb);
- // size with no bars
- void GetScrollBarSizes(CSize& sizeSb);
- void GetScrollBarState(CSize sizeClient, CSize& needSb,
- CSize& sizeRange, CPoint& ptMove, BOOL bInsideClient);
-
- public:
- virtual ~CScrollView();
- #ifdef _DEBUG
- virtual void Dump(CDumpContext&) const;
- virtual void AssertValid() const;
- #endif //_DEBUG
- virtual void CalcWindowRect(LPRECT lpClientRect,
- UINT nAdjustType = adjustBorder);
- virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
-
- // scrolling implementation support for OLE
- virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
- virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
-
- //{{AFX_MSG(CScrollView)
- 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 OnMouseWheel(UINT fFlags, short zDelta, CPoint point);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CWinThread
-
- typedef UINT (AFX_CDECL *AFX_THREADPROC)(LPVOID);
-
- class COleMessageFilter; // forward reference (see afxole.h)
-
- class CWinThread : public CCmdTarget
- {
- DECLARE_DYNAMIC(CWinThread)
-
- public:
- // Constructors
- CWinThread();
- BOOL CreateThread(DWORD dwCreateFlags = 0, UINT nStackSize = 0,
- LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
-
- // Attributes
- CWnd* m_pMainWnd; // main window (usually same AfxGetApp()->m_pMainWnd)
- CWnd* m_pActiveWnd; // active main window (may not be m_pMainWnd)
- BOOL m_bAutoDelete; // enables 'delete this' after thread termination
-
- // only valid while running
- HANDLE m_hThread; // this thread's HANDLE
- operator HANDLE() const;
- DWORD m_nThreadID; // this thread's ID
-
- int GetThreadPriority();
- BOOL SetThreadPriority(int nPriority);
-
- // Operations
- DWORD SuspendThread();
- DWORD ResumeThread();
- BOOL PostThreadMessage(UINT message, WPARAM wParam, LPARAM lParam);
-
- // Overridables
- // thread initialization
- virtual BOOL InitInstance();
-
- // running and idle processing
- virtual int Run();
- virtual BOOL PreTranslateMessage(MSG* pMsg);
- virtual BOOL PumpMessage(); // low level message pump
- virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
- virtual BOOL IsIdleMessage(MSG* pMsg); // checks for special messages
-
- // thread termination
- virtual int ExitInstance(); // default will 'delete this'
-
- // Advanced: exception handling
- virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
-
- // Advanced: handling messages sent to message filter hook
- virtual BOOL ProcessMessageFilter(int code, LPMSG lpMsg);
-
- // Advanced: virtual access to m_pMainWnd
- virtual CWnd* GetMainWnd();
-
- // Implementation
- public:
- virtual ~CWinThread();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- int m_nDisablePumpCount; // Diagnostic trap to detect illegal re-entrancy
- #endif
- void CommonConstruct();
- virtual void Delete();
- // 'delete this' only if m_bAutoDelete == TRUE
-
- // message pump for Run
- MSG m_msgCur; // current message
-
- public:
- // constructor used by implementation of AfxBeginThread
- CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam);
-
- // valid after construction
- LPVOID m_pThreadParams; // generic parameters passed to starting function
- AFX_THREADPROC m_pfnThreadProc;
-
- // set after OLE is initialized
- void (AFXAPI* m_lpfnOleTermOrFreeLib)(BOOL, BOOL);
- COleMessageFilter* m_pMessageFilter;
-
- protected:
- CPoint m_ptCursorLast; // last mouse position
- UINT m_nMsgLast; // last mouse message
- BOOL DispatchThreadMessageEx(MSG* msg); // helper
- void DispatchThreadMessage(MSG* msg); // obsolete
- };
-
- // global helpers for threads
-
- CWinThread* AFXAPI AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam,
- int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
- DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
- CWinThread* AFXAPI AfxBeginThread(CRuntimeClass* pThreadClass,
- int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
- DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
-
- CWinThread* AFXAPI AfxGetThread();
- void AFXAPI AfxEndThread(UINT nExitCode, BOOL bDelete = TRUE);
-
- void AFXAPI AfxInitThread();
- void AFXAPI AfxTermThread(HINSTANCE hInstTerm = NULL);
-
- /////////////////////////////////////////////////////////////////////////////
- // Global functions for access to the one and only CWinApp
-
- #define afxCurrentWinApp AfxGetModuleState()->m_pCurrentWinApp
- #define afxCurrentInstanceHandle AfxGetModuleState()->m_hCurrentInstanceHandle
- #define afxCurrentResourceHandle AfxGetModuleState()->m_hCurrentResourceHandle
- #define afxCurrentAppName AfxGetModuleState()->m_lpszCurrentAppName
- #define afxContextIsDLL AfxGetModuleState()->m_bDLL
- #define afxRegisteredClasses AfxGetModuleState()->m_fRegisteredClasses
-
- #ifndef _AFX_NO_OCC_SUPPORT
- #define afxOccManager AfxGetModuleState()->m_pOccManager
- #endif
-
- // Advanced initialization: for overriding default WinMain
- BOOL AFXAPI AfxWinInit(HINSTANCE hInstance, HINSTANCE hPrevInstance,
- LPTSTR lpCmdLine, int nCmdShow);
- void AFXAPI AfxWinTerm();
-
- // Global Windows state data helper functions (inlines)
- CWinApp* AFXAPI AfxGetApp();
- CWnd* AFXAPI AfxGetMainWnd();
- HINSTANCE AFXAPI AfxGetInstanceHandle();
- HINSTANCE AFXAPI AfxGetResourceHandle();
- void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);
- LPCTSTR AFXAPI AfxGetAppName();
-
- // Use instead of PostQuitMessage in OLE server applications
- void AFXAPI AfxPostQuitMessage(int nExitCode);
-
- // Use AfxFindResourceHandle to find resource in chain of extension DLLs
- #ifndef _AFXDLL
- #define AfxFindResourceHandle(lpszResource, lpszType) AfxGetResourceHandle()
- #else
- HINSTANCE AFXAPI AfxFindResourceHandle(LPCTSTR lpszName, LPCTSTR lpszType);
- #endif
-
- LONG AFXAPI AfxDelRegTreeHelper(HKEY hParentKey, const CString& strKeyName);
-
- class CRecentFileList; // forward reference (see afxpriv.h)
-
- // access to message filter in CWinApp
- COleMessageFilter* AFXAPI AfxOleGetMessageFilter();
-
- /////////////////////////////////////////////////////////////////////////////
- // CCommandLineInfo
-
- class CCommandLineInfo : public CObject
- {
- public:
- // Sets default values
- CCommandLineInfo();
-
- //plain char* version on UNICODE for source-code backwards compatibility
- virtual void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);
- #ifdef _UNICODE
- virtual void ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast);
- #endif
-
- BOOL m_bShowSplash;
- BOOL m_bRunEmbedded;
- BOOL m_bRunAutomated;
- enum { FileNew, FileOpen, FilePrint, FilePrintTo, FileDDE,
- AppUnregister, FileNothing = -1 } m_nShellCommand;
-
- // not valid for FileNew
- CString m_strFileName;
-
- // valid only for FilePrintTo
- CString m_strPrinterName;
- CString m_strDriverName;
- CString m_strPortName;
-
- ~CCommandLineInfo();
- // Implementation
- protected:
- void ParseParamFlag(const char* pszParam);
- void ParseParamNotFlag(const TCHAR* pszParam);
- #ifdef _UNICODE
- void ParseParamNotFlag(const char* pszParam);
- #endif
- void ParseLast(BOOL bLast);
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CDocManager
-
- class CDocManager : public CObject
- {
- DECLARE_DYNAMIC(CDocManager)
- public:
-
- // Constructor
- CDocManager();
-
- //Document functions
- virtual void AddDocTemplate(CDocTemplate* pTemplate);
- virtual POSITION GetFirstDocTemplatePosition() const;
- virtual CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
- virtual void RegisterShellFileTypes(BOOL bCompat);
- void UnregisterShellFileTypes();
- virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
- virtual BOOL SaveAllModified(); // save before exit
- virtual void CloseAllDocuments(BOOL bEndSession); // close documents before exiting
- virtual int GetOpenDocumentCount();
-
- // helper for standard commdlg dialogs
- virtual BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
- DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
-
- //Commands
- // Advanced: process async DDE request
- virtual BOOL OnDDECommand(LPTSTR lpszCommand);
- virtual void OnFileNew();
- virtual void OnFileOpen();
-
- // Implementation
- protected:
- CPtrList m_templateList;
- int GetDocumentCount(); // helper to count number of total documents
-
- public:
- static CPtrList* pStaticList; // for static CDocTemplate objects
- static BOOL bStaticInit; // TRUE during static initialization
- static CDocManager* pStaticDocManager; // for static CDocTemplate objects
-
- public:
- virtual ~CDocManager();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // CWinApp - the root of all Windows applications
-
- #define _AFX_MRU_COUNT 4 // default support for 4 entries in file MRU
- #define _AFX_MRU_MAX_COUNT 16 // currently allocated id range supports 16
-
- class CWinApp : public CWinThread
- {
- DECLARE_DYNAMIC(CWinApp)
- public:
-
- // Constructor
- CWinApp(LPCTSTR lpszAppName = NULL); // app name defaults to EXE name
-
- // Attributes
- // Startup args (do not change)
- HINSTANCE m_hInstance;
- HINSTANCE m_hPrevInstance;
- LPTSTR m_lpCmdLine;
- int m_nCmdShow;
-
- // Running args (can be changed in InitInstance)
- LPCTSTR m_pszAppName; // human readable name
- // (from constructor or AFX_IDS_APP_TITLE)
- LPCTSTR m_pszRegistryKey; // used for registry entries
- CDocManager* m_pDocManager;
-
- // Support for Shift+F1 help mode.
- BOOL m_bHelpMode; // are we in Shift+F1 mode?
-
- public: // set in constructor to override default
- LPCTSTR m_pszExeName; // executable name (no spaces)
- LPCTSTR m_pszHelpFilePath; // default based on module path
- LPCTSTR m_pszProfileName; // default based on app name
-
- // Initialization Operations - should be done in InitInstance
- protected:
- void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT); // load MRU file list and last preview state
- void EnableShellOpen();
-
- #ifndef _AFX_NO_GRAYDLG_SUPPORT
- void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192),
- COLORREF clrCtlText = RGB(0, 0, 0));
- // set dialog box and message box background color
- #endif
-
- void SetRegistryKey(LPCTSTR lpszRegistryKey);
- void SetRegistryKey(UINT nIDRegistryKey);
- // enables app settings in registry instead of INI files
- // (registry key is usually a "company name")
-
- #ifndef _AFX_NO_CTL3D_SUPPORT
- BOOL Enable3dControls(); // use CTL3D32.DLL for 3D controls in dialogs
- #ifndef _AFXDLL
- BOOL Enable3dControlsStatic(); // statically link CTL3D.LIB instead
- #endif
- #endif
-
- void RegisterShellFileTypes(BOOL bCompat=FALSE);
- // call after all doc templates are registered
- void RegisterShellFileTypesCompat();
- // for backwards compatibility
- void UnregisterShellFileTypes();
-
- // Helper Operations - usually done in InitInstance
- public:
- // Cursors
- HCURSOR LoadCursor(LPCTSTR lpszResourceName) const;
- HCURSOR LoadCursor(UINT nIDResource) const;
- HCURSOR LoadStandardCursor(LPCTSTR lpszCursorName) const; // for IDC_ values
- HCURSOR LoadOEMCursor(UINT nIDCursor) const; // for OCR_ values
-
- // Icons
- HICON LoadIcon(LPCTSTR lpszResourceName) const;
- HICON LoadIcon(UINT nIDResource) const;
- HICON LoadStandardIcon(LPCTSTR lpszIconName) const; // for IDI_ values
- HICON LoadOEMIcon(UINT nIDIcon) const; // for OIC_ values
-
- // Profile settings (to the app specific .INI file, or registry)
- UINT GetProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault);
- BOOL WriteProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);
- CString GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
- LPCTSTR lpszDefault = NULL);
- BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
- LPCTSTR lpszValue);
- BOOL GetProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
- LPBYTE* ppData, UINT* pBytes);
- BOOL WriteProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
- LPBYTE pData, UINT nBytes);
-
- BOOL Unregister();
- LONG DelRegTree(HKEY hParentKey, const CString& strKeyName);
-
- // Running Operations - to be done on a running application
- // Dealing with document templates
- void AddDocTemplate(CDocTemplate* pTemplate);
- POSITION GetFirstDocTemplatePosition() const;
- CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
-
- // Dealing with files
- virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
- virtual void AddToRecentFileList(LPCTSTR lpszPathName); // add to MRU
-
- // Printer DC Setup routine, 'struct tagPD' is a PRINTDLG structure
- void SelectPrinter(HANDLE hDevNames, HANDLE hDevMode,
- BOOL bFreeOld = TRUE);
- BOOL CreatePrinterDC(CDC& dc);
- #ifndef _UNICODE
- BOOL GetPrinterDeviceDefaults(struct tagPDA* pPrintDlg);
- #else
- BOOL GetPrinterDeviceDefaults(struct tagPDW* pPrintDlg);
- #endif
-
- // Command line parsing
- BOOL RunEmbedded();
- BOOL RunAutomated();
- void ParseCommandLine(CCommandLineInfo& rCmdInfo);
- BOOL ProcessShellCommand(CCommandLineInfo& rCmdInfo);
-
- // Overridables
- // hooks for your initialization code
- virtual BOOL InitApplication();
-
- // exiting
- virtual BOOL SaveAllModified(); // save before exit
- void HideApplication();
- void CloseAllDocuments(BOOL bEndSession); // close documents before exiting
-
- // Advanced: to override message boxes and other hooks
- virtual int DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt);
- virtual void DoWaitCursor(int nCode); // 0 => restore, 1=> begin, -1=> end
-
- // Advanced: process async DDE request
- virtual BOOL OnDDECommand(LPTSTR lpszCommand);
-
- // Advanced: Help support
- virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
-
- // Command Handlers
- protected:
- // map to the following for file new/open
- afx_msg void OnFileNew();
- afx_msg void OnFileOpen();
-
- // map to the following to enable print setup
- afx_msg void OnFilePrintSetup();
-
- // map to the following to enable help
- afx_msg void OnContextHelp(); // shift-F1
- afx_msg void OnHelp(); // F1 (uses current context)
- afx_msg void OnHelpIndex(); // ID_HELP_INDEX
- afx_msg void OnHelpFinder(); // ID_HELP_FINDER, ID_DEFAULT_HELP
- afx_msg void OnHelpUsing(); // ID_HELP_USING
-
- // Implementation
- protected:
- HGLOBAL m_hDevMode; // printer Dev Mode
- HGLOBAL m_hDevNames; // printer Device Names
- DWORD m_dwPromptContext; // help context override for message box
-
- int m_nWaitCursorCount; // for wait cursor (>0 => waiting)
- HCURSOR m_hcurWaitCursorRestore; // old cursor to restore after wait cursor
-
- CRecentFileList* m_pRecentFileList;
-
- void UpdatePrinterSelection(BOOL bForceDefaults);
- void SaveStdProfileSettings(); // save options to .INI file
-
- public: // public for implementation access
- CCommandLineInfo* m_pCmdInfo;
-
- ATOM m_atomApp, m_atomSystemTopic; // for DDE open
- UINT m_nNumPreviewPages; // number of default printed pages
-
- size_t m_nSafetyPoolSize; // ideal size
-
- void (AFXAPI* m_lpfnDaoTerm)();
-
- void DevModeChange(LPTSTR lpDeviceName);
- void SetCurrentHandles();
- int GetOpenDocumentCount();
-
- // helpers for standard commdlg dialogs
- BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
- DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
- int DoPrintDialog(CPrintDialog* pPD);
-
- void EnableModeless(BOOL bEnable); // to disable OLE in-place dialogs
-
- // overrides for implementation
- virtual BOOL InitInstance();
- virtual int ExitInstance(); // return app exit code
- virtual int Run();
- virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
- virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
-
- public:
- virtual ~CWinApp();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
-
- // helpers for registration
- HKEY GetSectionKey(LPCTSTR lpszSection);
- HKEY GetAppRegistryKey();
-
- protected:
- //{{AFX_MSG(CWinApp)
- afx_msg void OnAppExit();
- afx_msg void OnUpdateRecentFileMenu(CCmdUI* pCmdUI);
- afx_msg BOOL OnOpenRecentFile(UINT nID);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // class CWaitCursor
-
- class CWaitCursor
- {
- // Construction/Destruction
- public:
- CWaitCursor();
- ~CWaitCursor();
-
- // Operations
- public:
- void Restore();
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // class CDocTemplate creates documents
-
- #ifdef _AFXDLL
- class CDocTemplate : public CCmdTarget
- #else
- class AFX_NOVTABLE CDocTemplate : public CCmdTarget
- #endif
- {
- DECLARE_DYNAMIC(CDocTemplate)
-
- // Constructors
- protected:
- CDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
- CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
-
- public:
- virtual void LoadTemplate();
-
- // Attributes
- public:
- // setup for OLE containers
- void SetContainerInfo(UINT nIDOleInPlaceContainer);
-
- // setup for OLE servers
- void SetServerInfo(UINT nIDOleEmbedding, UINT nIDOleInPlaceServer = 0,
- CRuntimeClass* pOleFrameClass = NULL, CRuntimeClass* pOleViewClass = NULL);
-
- // iterating over open documents
- virtual POSITION GetFirstDocPosition() const = 0;
- virtual CDocument* GetNextDoc(POSITION& rPos) const = 0;
-
- // Operations
- public:
- virtual void AddDocument(CDocument* pDoc); // must override
- virtual void RemoveDocument(CDocument* pDoc); // must override
-
- enum DocStringIndex
- {
- windowTitle, // default window title
- docName, // user visible name for default document
- fileNewName, // user visible name for FileNew
- // for file based documents:
- filterName, // user visible name for FileOpen
- filterExt, // user visible extension for FileOpen
- // for file based documents with Shell open support:
- regFileTypeId, // REGEDIT visible registered file type identifier
- regFileTypeName, // Shell visible registered file type name
- };
- virtual BOOL GetDocString(CString& rString,
- enum DocStringIndex index) const; // get one of the info strings
- CFrameWnd* CreateOleFrame(CWnd* pParentWnd, CDocument* pDoc,
- BOOL bCreateView);
-
- // Overridables
- public:
- enum Confidence
- {
- noAttempt,
- maybeAttemptForeign,
- maybeAttemptNative,
- yesAttemptForeign,
- yesAttemptNative,
- yesAlreadyOpen
- };
- virtual Confidence MatchDocType(LPCTSTR lpszPathName,
- CDocument*& rpDocMatch);
- virtual CDocument* CreateNewDocument();
- virtual CFrameWnd* CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther);
- virtual void InitialUpdateFrame(CFrameWnd* pFrame, CDocument* pDoc,
- BOOL bMakeVisible = TRUE);
- virtual BOOL SaveAllModified(); // for all documents
- virtual void CloseAllDocuments(BOOL bEndSession);
- virtual CDocument* OpenDocumentFile(
- LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE) = 0;
- // open named file
- // if lpszPathName == NULL => create new file with this type
- virtual void SetDefaultTitle(CDocument* pDocument) = 0;
-
- // Implementation
- public:
- BOOL m_bAutoDelete;
- virtual ~CDocTemplate();
-
- // back pointer to OLE or other server (NULL if none or disabled)
- CObject* m_pAttachedFactory;
-
- // menu & accelerator resources for in-place container
- HMENU m_hMenuInPlace;
- HACCEL m_hAccelInPlace;
-
- // menu & accelerator resource for server editing embedding
- HMENU m_hMenuEmbedding;
- HACCEL m_hAccelEmbedding;
-
- // menu & accelerator resource for server editing in-place
- HMENU m_hMenuInPlaceServer;
- HACCEL m_hAccelInPlaceServer;
-
- #ifdef _DEBUG
- virtual void Dump(CDumpContext&) const;
- virtual void AssertValid() const;
- #endif
- virtual void OnIdle(); // for all documents
- virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo);
-
- protected:
- UINT m_nIDResource; // IDR_ for frame/menu/accel as well
- UINT m_nIDServerResource; // IDR_ for OLE inplace frame/menu/accel
- UINT m_nIDEmbeddingResource; // IDR_ for OLE open frame/menu/accel
- UINT m_nIDContainerResource; // IDR_ for container frame/menu/accel
-
- CRuntimeClass* m_pDocClass; // class for creating new documents
- CRuntimeClass* m_pFrameClass; // class for creating new frames
- CRuntimeClass* m_pViewClass; // class for creating new views
- CRuntimeClass* m_pOleFrameClass; // class for creating in-place frame
- CRuntimeClass* m_pOleViewClass; // class for creating in-place view
-
- CString m_strDocStrings; // '\n' separated names
- // The document names sub-strings are represented as _one_ string:
- // windowTitle\ndocName\n ... (see DocStringIndex enum)
- };
-
- // SDI support (1 document only)
- class CSingleDocTemplate : public CDocTemplate
- {
- DECLARE_DYNAMIC(CSingleDocTemplate)
-
- // Constructors
- public:
- CSingleDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
- CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
-
- // Implementation
- public:
- virtual ~CSingleDocTemplate();
- virtual void AddDocument(CDocument* pDoc);
- virtual void RemoveDocument(CDocument* pDoc);
- virtual POSITION GetFirstDocPosition() const;
- virtual CDocument* GetNextDoc(POSITION& rPos) const;
- virtual CDocument* OpenDocumentFile(
- LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
- virtual void SetDefaultTitle(CDocument* pDocument);
-
- #ifdef _DEBUG
- virtual void Dump(CDumpContext&) const;
- virtual void AssertValid() const;
- #endif //_DEBUG
-
- protected: // standard implementation
- CDocument* m_pOnlyDoc;
- };
-
- // MDI support (zero or more documents)
- class CMultiDocTemplate : public CDocTemplate
- {
- DECLARE_DYNAMIC(CMultiDocTemplate)
-
- // Constructors
- public:
- CMultiDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
- CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
-
- // Implementation
- public:
- // Menu and accel table for MDI Child windows of this type
- HMENU m_hMenuShared;
- HACCEL m_hAccelTable;
-
- virtual ~CMultiDocTemplate();
- virtual void LoadTemplate();
- virtual void AddDocument(CDocument* pDoc);
- virtual void RemoveDocument(CDocument* pDoc);
- virtual POSITION GetFirstDocPosition() const;
- virtual CDocument* GetNextDoc(POSITION& rPos) const;
- virtual CDocument* OpenDocumentFile(
- LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
- virtual void SetDefaultTitle(CDocument* pDocument);
-
- #ifdef _DEBUG
- virtual void Dump(CDumpContext&) const;
- virtual void AssertValid() const;
- #endif //_DEBUG
-
- protected: // standard implementation
- CPtrList m_docList; // open documents of this type
- UINT m_nUntitledCount; // start at 0, for "Document1" title
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // class CDocument is the main document data abstraction
-
- #ifdef _AFXDLL
- class CDocument : public CCmdTarget
- #else
- class AFX_NOVTABLE CDocument : public CCmdTarget
- #endif
- {
- DECLARE_DYNAMIC(CDocument)
-
- public:
- // Constructors
- CDocument();
-
- // Attributes
- public:
- const CString& GetTitle() const;
- virtual void SetTitle(LPCTSTR lpszTitle);
- const CString& GetPathName() const;
- virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
-
- CDocTemplate* GetDocTemplate() const;
- virtual BOOL IsModified();
- virtual void SetModifiedFlag(BOOL bModified = TRUE);
-
- // Operations
- void AddView(CView* pView);
- void RemoveView(CView* pView);
- virtual POSITION GetFirstViewPosition() const;
- virtual CView* GetNextView(POSITION& rPosition) const;
-
- // Update Views (simple update - DAG only)
- void UpdateAllViews(CView* pSender, LPARAM lHint = 0L,
- CObject* pHint = NULL);
-
- // Overridables
- // Special notifications
- virtual void OnChangedViewList(); // after Add or Remove view
- virtual void DeleteContents(); // delete doc items etc
-
- // File helpers
- virtual BOOL OnNewDocument();
- virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
- virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
- virtual void OnCloseDocument();
- virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
- CException* e, BOOL bSaving, UINT nIDPDefault);
- virtual CFile* GetFile(LPCTSTR lpszFileName, UINT nOpenFlags,
- CFileException* pError);
- virtual void ReleaseFile(CFile* pFile, BOOL bAbort);
-
- // advanced overridables, closing down frame/doc, etc.
- virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
- virtual BOOL SaveModified(); // return TRUE if ok to continue
- virtual void PreCloseFrame(CFrameWnd* pFrame);
-
- // Implementation
- protected:
- // default implementation
- CString m_strTitle;
- CString m_strPathName;
- CDocTemplate* m_pDocTemplate;
- CPtrList m_viewList; // list of views
- BOOL m_bModified; // changed since last saved
-
- public:
- BOOL m_bAutoDelete; // TRUE => delete document when no more views
- BOOL m_bEmbedded; // TRUE => document is being created by OLE
-
- #ifdef _DEBUG
- virtual void Dump(CDumpContext&) const;
- virtual void AssertValid() const;
- #endif //_DEBUG
- virtual ~CDocument();
-
- // implementation helpers
- virtual BOOL DoSave(LPCTSTR lpszPathName, BOOL bReplace = TRUE);
- virtual BOOL DoFileSave();
- virtual void UpdateFrameCounts();
- void DisconnectViews();
- void SendInitialUpdate();
-
- // overridables for implementation
- virtual HMENU GetDefaultMenu(); // get menu depending on state
- virtual HACCEL GetDefaultAccelerator();
- virtual void OnIdle();
- virtual void OnFinalRelease();
-
- virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo);
- friend class CDocTemplate;
-
- protected:
- // file menu commands
- //{{AFX_MSG(CDocument)
- afx_msg void OnFileClose();
- afx_msg void OnFileSave();
- afx_msg void OnFileSaveAs();
- //}}AFX_MSG
- // mail enabling
- afx_msg void OnFileSendMail();
- afx_msg void OnUpdateFileSendMail(CCmdUI* pCmdUI);
- DECLARE_MESSAGE_MAP()
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // Extra diagnostic tracing options
-
- #ifdef _DEBUG
-
- extern AFX_DATA UINT afxTraceFlags;
- enum AfxTraceFlags
- {
- traceMultiApp = 1, // multi-app debugging
- traceAppMsg = 2, // main message pump trace (includes DDE)
- traceWinMsg = 4, // Windows message tracing
- traceCmdRouting = 8, // Windows command routing trace (set 4+8 for control notifications)
- traceOle = 16, // special OLE callback trace
- traceDatabase = 32, // special database trace
- traceInternet = 64 // special Internet client trace
- };
-
- #endif // _DEBUG
-
- //////////////////////////////////////////////////////////////////////////////
- // MessageBox helpers
-
- void AFXAPI AfxFormatString1(CString& rString, UINT nIDS, LPCTSTR lpsz1);
- void AFXAPI AfxFormatString2(CString& rString, UINT nIDS,
- LPCTSTR lpsz1, LPCTSTR lpsz2);
- int AFXAPI AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK,
- UINT nIDHelp = 0);
- int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK,
- UINT nIDHelp = (UINT)-1);
-
- // Implementation string helpers
- void AFXAPI AfxFormatStrings(CString& rString, UINT nIDS,
- LPCTSTR const* rglpsz, int nString);
- void AFXAPI AfxFormatStrings(CString& rString, LPCTSTR lpszFormat,
- LPCTSTR const* rglpsz, int nString);
- BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,
- int iSubString, TCHAR chSep = '\n');
-
- /////////////////////////////////////////////////////////////////////////////
- // Special target variant APIs
-
- #ifdef _AFXDLL
- #include <afxdll_.h>
- #endif
-
- // Windows Version compatibility (obsolete)
- #define AfxEnableWin30Compatibility()
- #define AfxEnableWin31Compatibility()
- #define AfxEnableWin40Compatibility()
-
- // Temporary map management (locks temp map on current thread)
- void AFXAPI AfxLockTempMaps();
- BOOL AFXAPI AfxUnlockTempMaps(BOOL bDeleteTemps = TRUE);
-
- /////////////////////////////////////////////////////////////////////////////
- // Special OLE related functions (see OLELOCK.CPP)
-
- void AFXAPI AfxOleOnReleaseAllObjects();
- BOOL AFXAPI AfxOleCanExitApp();
- void AFXAPI AfxOleLockApp();
- void AFXAPI AfxOleUnlockApp();
-
- void AFXAPI AfxOleSetUserCtrl(BOOL bUserCtrl);
- BOOL AFXAPI AfxOleGetUserCtrl();
-
- #ifndef _AFX_NO_OCC_SUPPORT
- BOOL AFXAPI AfxOleLockControl(REFCLSID clsid);
- BOOL AFXAPI AfxOleUnlockControl(REFCLSID clsid);
- BOOL AFXAPI AfxOleLockControl(LPCTSTR lpszProgID);
- BOOL AFXAPI AfxOleUnlockControl(LPCTSTR lpszProgID);
- void AFXAPI AfxOleUnlockAllControls();
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // Use version 1.0 of the RichEdit control
-
- #define _RICHEDIT_VER 0x0100
-
- /////////////////////////////////////////////////////////////////////////////
- // Inline function declarations
-
- #ifdef _AFX_PACKING
- #pragma pack(pop)
- #endif
-
- #ifdef _AFX_ENABLE_INLINES
- #define _AFXWIN_INLINE AFX_INLINE
- #include <afxwin1.inl>
- #include <afxwin2.inl>
- #endif
-
- #undef AFX_DATA
- #define AFX_DATA
-
- #ifdef _AFX_MINREBUILD
- #pragma component(minrebuild, on)
- #endif
- #ifndef _AFX_FULLTYPEINFO
- #pragma component(mintypeinfo, off)
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
-
- #else //RC_INVOKED
- #include <afxres.h> // standard resource IDs
- #endif //RC_INVOKED
-
- #endif //__AFXWIN_H__
-
- /////////////////////////////////////////////////////////////////////////////
-