home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / mfc / include / afxcmn.h < prev    next >
C/C++ Source or Header  |  1998-06-16  |  36KB  |  1,151 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1998 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10.  
  11. #ifndef __AFXCMN_H__
  12. #define __AFXCMN_H__
  13.  
  14. #ifdef _AFX_NO_AFXCMN_SUPPORT
  15.     #error Windows Common Control classes not supported in this library variant.
  16. #endif
  17.  
  18. #ifndef __AFXWIN_H__
  19.     #include <afxwin.h>
  20. #endif
  21.  
  22. #ifdef _AFX_MINREBUILD
  23. #pragma component(minrebuild, off)
  24. #endif
  25. #ifndef _AFX_FULLTYPEINFO
  26. #pragma component(mintypeinfo, on)
  27. #endif
  28.  
  29. #ifndef IMAGE_BITMAP
  30. #define IMAGE_BITMAP 0
  31. #endif
  32.  
  33. /////////////////////////////////////////////////////////////////////////////
  34.  
  35. #ifdef _AFX_PACKING
  36. #pragma pack(push, _AFX_PACKING)
  37. #endif
  38.  
  39. #ifndef _AFX_NO_RICHEDIT_SUPPORT
  40.     #ifndef _RICHEDIT_
  41.         #include <richedit.h>
  42.     #endif
  43.     #ifdef __AFXOLE_H__  // only include richole if OLE support is included
  44.         #ifndef _RICHOLE_
  45.             #include <richole.h>
  46.             #define _RICHOLE_
  47.         #endif
  48.     #else
  49.         struct IRichEditOle;
  50.         struct IRichEditOleCallback;
  51.     #endif
  52. #endif
  53.  
  54. /////////////////////////////////////////////////////////////////////////////
  55. // AFXCMN - MFC COMCTL32 Control Classes
  56.  
  57. // Classes declared in this file
  58.  
  59. //TOOLINFO
  60.     class CToolInfo;
  61.  
  62. //CObject
  63.     class CImageList;
  64.     //CCmdTarget;
  65.         //CWnd
  66.             // class CListBox;
  67.                 class CDragListBox;
  68.             class CListCtrl;
  69.             class CTreeCtrl;
  70.             class CSpinButtonCtrl;
  71.             class CHeaderCtrl;
  72.             class CSliderCtrl;
  73.             class CProgressCtrl;
  74.             // class CComboBox;
  75.                 class CComboBoxEx;
  76.             class CHotKeyCtrl;
  77.             class CToolTipCtrl;
  78.             class CTabCtrl;
  79.             class CAnimateCtrl;
  80.             class CToolBarCtrl;
  81.             class CStatusBarCtrl;
  82.             class CRichEditCtrl;
  83.             class CIPAddressCtrl;
  84.  
  85. #undef AFX_DATA
  86. #define AFX_DATA AFX_CORE_DATA
  87.  
  88. /////////////////////////////////////////////////////////////////////////////
  89. // CToolInfo
  90.  
  91. #ifdef _UNICODE
  92. class CToolInfo : public tagTOOLINFOW
  93. #else
  94. class CToolInfo : public tagTOOLINFOA
  95. #endif
  96. {
  97. public:
  98.     TCHAR szText[256];
  99. };
  100.  
  101. /////////////////////////////////////////////////////////////////////////////
  102. // CDragListBox
  103.  
  104. class CDragListBox : public CListBox
  105. {
  106.     DECLARE_DYNAMIC(CDragListBox)
  107.  
  108. // Constructors
  109. public:
  110.     CDragListBox();
  111.  
  112. // Attributes
  113.     int ItemFromPt(CPoint pt, BOOL bAutoScroll = TRUE) const;
  114.  
  115. // Operations
  116.     virtual void DrawInsert(int nItem);
  117.  
  118. // Overridables
  119.     virtual BOOL BeginDrag(CPoint pt);
  120.     virtual void CancelDrag(CPoint pt);
  121.     virtual UINT Dragging(CPoint pt);
  122.     virtual void Dropped(int nSrcIndex, CPoint pt);
  123.  
  124. // Implementation
  125. public:
  126.     int m_nLast;
  127.     void DrawSingle(int nIndex);
  128.     virtual void PreSubclassWindow();
  129.     virtual ~CDragListBox();
  130. protected:
  131.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  132. };
  133.  
  134. /////////////////////////////////////////////////////////////////////////////
  135. // CStatusBarCtrl
  136.  
  137. class CStatusBarCtrl : public CWnd
  138. {
  139.     DECLARE_DYNAMIC(CStatusBarCtrl)
  140.  
  141. // Constructors
  142. public:
  143.     CStatusBarCtrl();
  144.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  145.  
  146. // Attributes
  147.     BOOL SetText(LPCTSTR lpszText, int nPane, int nType);
  148.     CString GetText(int nPane, int* pType = NULL) const;
  149.     int GetText(LPCTSTR lpszText, int nPane, int* pType = NULL) const;
  150.     int GetTextLength(int nPane, int* pType = NULL) const;
  151.     BOOL SetParts(int nParts, int* pWidths);
  152.     int GetParts(int nParts, int* pParts) const;
  153.     BOOL GetBorders(int* pBorders) const;
  154.     BOOL GetBorders(int& nHorz, int& nVert, int& nSpacing) const;
  155.     void SetMinHeight(int nMin);
  156.     BOOL SetSimple(BOOL bSimple = TRUE);
  157.     BOOL GetRect(int nPane, LPRECT lpRect) const;
  158.     BOOL IsSimple() const;
  159.     CString GetTipText(int nPane) const;
  160.     void SetTipText(int nPane, LPCTSTR pszTipText);
  161.     COLORREF SetBkColor(COLORREF cr);
  162.     BOOL SetIcon(int nPane, HICON hIcon);
  163.  
  164. // Overridables
  165.     virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  166.  
  167. // Implementation
  168. public:
  169.     virtual ~CStatusBarCtrl();
  170. protected:
  171.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  172. };
  173.  
  174. /////////////////////////////////////////////////////////////////////////////
  175. // CListCtrl
  176.  
  177. class CListCtrl : public CWnd
  178. {
  179.     DECLARE_DYNAMIC(CListCtrl)
  180.  
  181. // Constructors
  182. public:
  183.     CListCtrl();
  184.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  185.  
  186. // Attributes
  187.     COLORREF GetBkColor() const;
  188.     BOOL SetBkColor(COLORREF cr);
  189.     CImageList* GetImageList(int nImageList) const;
  190.     CImageList* SetImageList(CImageList* pImageList, int nImageListType);
  191.     int GetItemCount() const;
  192.     BOOL GetItem(LVITEM* pItem) const;
  193.     BOOL SetItem(const LVITEM* pItem);
  194.     BOOL SetItem(int nItem, int nSubItem, UINT nMask, LPCTSTR lpszItem,
  195.         int nImage, UINT nState, UINT nStateMask, LPARAM lParam);
  196.     UINT GetCallbackMask() const;
  197.     BOOL SetCallbackMask(UINT nMask);
  198.     int GetNextItem(int nItem, int nFlags) const;
  199.     POSITION GetFirstSelectedItemPosition() const;
  200.     int GetNextSelectedItem(POSITION& pos) const;
  201.     BOOL GetItemRect(int nItem, LPRECT lpRect, UINT nCode) const;
  202.     BOOL SetItemPosition(int nItem, POINT pt);
  203.     BOOL GetItemPosition(int nItem, LPPOINT lpPoint) const;
  204.     int GetStringWidth(LPCTSTR lpsz) const;
  205.     CEdit* GetEditControl() const;
  206.     BOOL GetColumn(int nCol, LVCOLUMN* pColumn) const;
  207.     BOOL SetColumn(int nCol, const LVCOLUMN* pColumn);
  208.     int GetColumnWidth(int nCol) const;
  209.     BOOL SetColumnWidth(int nCol, int cx);
  210.     BOOL GetViewRect(LPRECT lpRect) const;
  211.     COLORREF GetTextColor() const;
  212.     BOOL SetTextColor(COLORREF cr);
  213.     COLORREF GetTextBkColor() const;
  214.     BOOL SetTextBkColor(COLORREF cr);
  215.     int GetTopIndex() const;
  216.     int GetCountPerPage() const;
  217.     BOOL GetOrigin(LPPOINT lpPoint) const;
  218.     BOOL SetItemState(int nItem, LVITEM* pItem);
  219.     BOOL SetItemState(int nItem, UINT nState, UINT nMask);
  220.     UINT GetItemState(int nItem, UINT nMask) const;
  221.     CString GetItemText(int nItem, int nSubItem) const;
  222.     int GetItemText(int nItem, int nSubItem, LPTSTR lpszText, int nLen) const;
  223.     BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
  224.     void SetItemCount(int nItems);
  225.     BOOL SetItemData(int nItem, DWORD dwData);
  226.     DWORD GetItemData(int nItem) const;
  227.     UINT GetSelectedCount() const;
  228.     BOOL SetColumnOrderArray(int iCount, LPINT piArray);
  229.     BOOL GetColumnOrderArray(LPINT piArray, int iCount = -1);
  230.     CSize SetIconSpacing(CSize size);
  231.     CSize SetIconSpacing(int cx, int cy);
  232.     CHeaderCtrl* GetHeaderCtrl();
  233.     HCURSOR GetHotCursor();
  234.     HCURSOR SetHotCursor(HCURSOR hc);
  235.     BOOL GetSubItemRect(int iItem, int iSubItem, int nArea, CRect& ref);
  236.     int GetHotItem();
  237.     int SetHotItem(int iIndex);
  238.     int GetSelectionMark();
  239.     int SetSelectionMark(int iIndex);
  240.     DWORD GetExtendedStyle();
  241.     DWORD SetExtendedStyle(DWORD dwNewStyle);
  242.     int SubItemHitTest(LPLVHITTESTINFO pInfo);
  243.     void SetWorkAreas(int nWorkAreas, LPRECT lpRect);
  244.     BOOL SetItemCountEx(int iCount, DWORD dwFlags = LVSICF_NOINVALIDATEALL);
  245.     CSize ApproximateViewRect(CSize sz = CSize(-1, -1), int iCount = -1) const;
  246.     BOOL GetBkImage(LVBKIMAGE* plvbkImage) const;
  247.     DWORD GetHoverTime() const;
  248.     void GetWorkAreas(int nWorkAreas, LPRECT prc) const;
  249.     BOOL SetBkImage(HBITMAP hbm, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0);
  250.     BOOL SetBkImage(LPTSTR pszUrl, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0);
  251.     BOOL SetBkImage(LVBKIMAGE* plvbkImage);
  252.     DWORD SetHoverTime(DWORD dwHoverTime = (DWORD)-1);
  253.     UINT GetNumberOfWorkAreas() const;
  254.     BOOL GetCheck(int nItem) const;
  255.     BOOL SetCheck(int nItem, BOOL fCheck = TRUE);
  256.  
  257. // Operations
  258.     int InsertItem(const LVITEM* pItem);
  259.     int InsertItem(int nItem, LPCTSTR lpszItem);
  260.     int InsertItem(int nItem, LPCTSTR lpszItem, int nImage);
  261.     BOOL DeleteItem(int nItem);
  262.     BOOL DeleteAllItems();
  263.     int FindItem(LVFINDINFO* pFindInfo, int nStart = -1) const;
  264.     int HitTest(LVHITTESTINFO* pHitTestInfo) const;
  265.     int HitTest(CPoint pt, UINT* pFlags = NULL) const;
  266.     BOOL EnsureVisible(int nItem, BOOL bPartialOK);
  267.     BOOL Scroll(CSize size);
  268.     BOOL RedrawItems(int nFirst, int nLast);
  269.     BOOL Arrange(UINT nCode);
  270.     CEdit* EditLabel(int nItem);
  271.     int InsertColumn(int nCol, const LVCOLUMN* pColumn);
  272.     int InsertColumn(int nCol, LPCTSTR lpszColumnHeading,
  273.         int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1);
  274.     BOOL DeleteColumn(int nCol);
  275.     CImageList* CreateDragImage(int nItem, LPPOINT lpPoint);
  276.     BOOL Update(int nItem);
  277.     BOOL SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData);
  278.  
  279. // Overridables
  280.     virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  281.  
  282. // Implementation
  283. public:
  284.     int InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState,
  285.         UINT nStateMask, int nImage, LPARAM lParam);
  286.     virtual ~CListCtrl();
  287. protected:
  288.     void RemoveImageList(int nImageList);
  289.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  290. protected:
  291.     //{{AFX_MSG(CListCtrl)
  292.     afx_msg void OnNcDestroy();
  293.     //}}AFX_MSG
  294.     DECLARE_MESSAGE_MAP()
  295. };
  296.  
  297. /////////////////////////////////////////////////////////////////////////////
  298. // CTreeCtrl
  299.  
  300. class CTreeCtrl : public CWnd
  301. {
  302.     DECLARE_DYNAMIC(CTreeCtrl)
  303.  
  304. // Constructors
  305. public:
  306.     CTreeCtrl();
  307.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  308.  
  309. // Attributes
  310.     BOOL GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly) const;
  311.     UINT GetCount() const;
  312.     UINT GetIndent() const;
  313.     void SetIndent(UINT nIndent);
  314.     CImageList* GetImageList(UINT nImageList) const;
  315.     CImageList* SetImageList(CImageList* pImageList, int nImageListType);
  316.     HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode) const;
  317.     HTREEITEM GetChildItem(HTREEITEM hItem) const;
  318.     HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const;
  319.     HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const;
  320.     HTREEITEM GetParentItem(HTREEITEM hItem) const;
  321.     HTREEITEM GetFirstVisibleItem() const;
  322.     HTREEITEM GetNextVisibleItem(HTREEITEM hItem) const;
  323.     HTREEITEM GetPrevVisibleItem(HTREEITEM hItem) const;
  324.     HTREEITEM GetSelectedItem() const;
  325.     HTREEITEM GetDropHilightItem() const;
  326.     HTREEITEM GetRootItem() const;
  327.     BOOL GetItem(TVITEM* pItem) const;
  328.     CString GetItemText(HTREEITEM hItem) const;
  329.     BOOL GetItemImage(HTREEITEM hItem, int& nImage, int& nSelectedImage) const;
  330.     UINT GetItemState(HTREEITEM hItem, UINT nStateMask) const;
  331.     DWORD GetItemData(HTREEITEM hItem) const;
  332.     BOOL SetItem(TVITEM* pItem);
  333.     BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem, int nImage,
  334.         int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam);
  335.     BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem);
  336.     BOOL SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage);
  337.     BOOL SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask);
  338.     BOOL SetItemData(HTREEITEM hItem, DWORD dwData);
  339.     BOOL ItemHasChildren(HTREEITEM hItem) const;
  340.     CEdit* GetEditControl() const;
  341.     UINT GetVisibleCount() const;
  342.     CToolTipCtrl* GetToolTips() const;
  343.     CToolTipCtrl* SetToolTips(CToolTipCtrl* pWndTip);
  344.     COLORREF GetBkColor() const;
  345.     COLORREF SetBkColor(COLORREF clr);
  346.     SHORT GetItemHeight() const;
  347.     SHORT SetItemHeight(SHORT cyHeight);
  348.     COLORREF GetTextColor() const;
  349.     COLORREF SetTextColor(COLORREF clr);
  350.     BOOL SetInsertMark(HTREEITEM hItem, BOOL fAfter = TRUE);
  351.     BOOL GetCheck(HTREEITEM hItem) const;
  352.     BOOL SetCheck(HTREEITEM hItem, BOOL fCheck = TRUE);
  353.     COLORREF GetInsertMarkColor() const;
  354.     COLORREF SetInsertMarkColor(COLORREF clrNew);
  355.  
  356. // Operations
  357.     HTREEITEM InsertItem(LPTVINSERTSTRUCT lpInsertStruct);
  358.     HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage,
  359.         int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
  360.         HTREEITEM hParent, HTREEITEM hInsertAfter);
  361.     HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT,
  362.         HTREEITEM hInsertAfter = TVI_LAST);
  363.     HTREEITEM InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage,
  364.         HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
  365.     BOOL DeleteItem(HTREEITEM hItem);
  366.     BOOL DeleteAllItems();
  367.     BOOL Expand(HTREEITEM hItem, UINT nCode);
  368.     BOOL Select(HTREEITEM hItem, UINT nCode);
  369.     BOOL SelectItem(HTREEITEM hItem);
  370.     BOOL SelectDropTarget(HTREEITEM hItem);
  371.     BOOL SelectSetFirstVisible(HTREEITEM hItem);
  372.     CEdit* EditLabel(HTREEITEM hItem);
  373.     HTREEITEM HitTest(CPoint pt, UINT* pFlags = NULL) const;
  374.     HTREEITEM HitTest(TVHITTESTINFO* pHitTestInfo) const;
  375.     CImageList* CreateDragImage(HTREEITEM hItem);
  376.     BOOL SortChildren(HTREEITEM hItem);
  377.     BOOL EnsureVisible(HTREEITEM hItem);
  378.     BOOL SortChildrenCB(LPTVSORTCB pSort);
  379.  
  380. // Implementation
  381. protected:
  382.     void RemoveImageList(int nImageList);
  383. public:
  384.     virtual ~CTreeCtrl();
  385.     //{{AFX_MSG(CTreeCtrl)
  386.     afx_msg void OnDestroy();
  387.     //}}AFX_MSG
  388.     DECLARE_MESSAGE_MAP()
  389. };
  390.  
  391. /////////////////////////////////////////////////////////////////////////////
  392. // CSpinButtonCtrl
  393.  
  394. class CSpinButtonCtrl : public CWnd
  395. {
  396.     DECLARE_DYNAMIC(CSpinButtonCtrl)
  397.  
  398. // Constructors
  399. public:
  400.     CSpinButtonCtrl();
  401.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  402.  
  403. // Attributes
  404.     BOOL SetAccel(int nAccel, UDACCEL* pAccel);
  405.     UINT GetAccel(int nAccel, UDACCEL* pAccel) const;
  406.     int SetBase(int nBase);
  407.     UINT GetBase() const;
  408.     CWnd* SetBuddy(CWnd* pWndBuddy);
  409.     CWnd* GetBuddy() const;
  410.     int SetPos(int nPos);
  411.     int GetPos() const;
  412.     void SetRange(int nLower, int nUpper);
  413.     void SetRange32(int nLower, int nUpper);
  414.     DWORD GetRange() const;
  415.     void GetRange(int &lower, int& upper) const;
  416.     void GetRange32(int &lower, int& upper) const;
  417.  
  418. // Implementation
  419. public:
  420.     virtual ~CSpinButtonCtrl();
  421. };
  422.  
  423. /////////////////////////////////////////////////////////////////////////////
  424. // CSliderCtrl
  425.  
  426. class CSliderCtrl : public CWnd
  427. {
  428.     DECLARE_DYNAMIC(CSliderCtrl)
  429.  
  430. // Constructors
  431. public:
  432.     CSliderCtrl();
  433.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  434.  
  435. // Attributes
  436.     int GetLineSize() const;
  437.     int SetLineSize(int nSize);
  438.     int GetPageSize() const;
  439.     int SetPageSize(int nSize);
  440.     int GetRangeMax() const;
  441.     int GetRangeMin() const;
  442.     void GetRange(int& nMin, int& nMax) const;
  443.     void SetRangeMin(int nMin, BOOL bRedraw = FALSE);
  444.     void SetRangeMax(int nMax, BOOL bRedraw = FALSE);
  445.     void SetRange(int nMin, int nMax, BOOL bRedraw = FALSE);
  446.     void GetSelection(int& nMin, int& nMax) const;
  447.     void SetSelection(int nMin, int nMax);
  448.     void GetChannelRect(LPRECT lprc) const;
  449.     void GetThumbRect(LPRECT lprc) const;
  450.     int GetPos() const;
  451.     void SetPos(int nPos);
  452.     UINT GetNumTics() const;
  453.     DWORD* GetTicArray() const;
  454.     int GetTic(int nTic) const;
  455.     int GetTicPos(int nTic) const;
  456.     BOOL SetTic(int nTic);
  457.     void SetTicFreq(int nFreq);
  458.     CWnd* GetBuddy(BOOL fLocation = TRUE) const;
  459.     CWnd* SetBuddy(CWnd* pWndBuddy, BOOL fLocation = TRUE);
  460.     CToolTipCtrl* GetToolTips() const;
  461.     void SetToolTips(CToolTipCtrl* pWndTip);
  462.     int SetTipSide(int nLocation);
  463.  
  464. // Operations
  465.     void ClearSel(BOOL bRedraw = FALSE);
  466.     void VerifyPos();
  467.     void ClearTics(BOOL bRedraw = FALSE);
  468.  
  469. // Implementation
  470. public:
  471.     virtual ~CSliderCtrl();
  472. };
  473.  
  474. /////////////////////////////////////////////////////////////////////////////
  475. // CProgressCtrl
  476.  
  477. class CProgressCtrl : public CWnd
  478. {
  479.     DECLARE_DYNAMIC(CProgressCtrl)
  480.  
  481. // Constructors
  482. public:
  483.     CProgressCtrl();
  484.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  485.  
  486. // Attributes
  487.     void SetRange(short nLower, short nUpper);
  488.     void SetRange32(int nLower, int nUpper);
  489.     void GetRange(int& nLower, int& nUpper);
  490.     int GetPos();
  491.     int SetPos(int nPos);
  492.     int OffsetPos(int nPos);
  493.     int SetStep(int nStep);
  494.  
  495. // Operations
  496.     int StepIt();
  497.  
  498. // Implementation
  499. public:
  500.     virtual ~CProgressCtrl();
  501. };
  502.  
  503. /////////////////////////////////////////////////////////////////////////////
  504. // CComboBoxEx
  505.  
  506. class CComboBoxEx : public CComboBox
  507. {
  508.     DECLARE_DYNAMIC(CComboBoxEx)
  509.  
  510. // Constructors
  511. public:
  512.     CComboBoxEx();
  513.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  514.  
  515. // Operations
  516.     int DeleteItem(int iIndex);
  517.     BOOL GetItem(COMBOBOXEXITEM* pCBItem);
  518.     int InsertItem(const COMBOBOXEXITEM* pCBItem);
  519.     BOOL SetItem(const COMBOBOXEXITEM* pCBItem);
  520.  
  521. // Attributes
  522.     BOOL HasEditChanged();
  523.     DWORD GetExtendedStyle() const;
  524.     DWORD SetExtendedStyle(DWORD dwExMask, DWORD dwExStyles);
  525.     CEdit* GetEditCtrl();
  526.     CComboBox* GetComboBoxCtrl();
  527.     CImageList* GetImageList() const;
  528.     CImageList* SetImageList(CImageList* pImageList);
  529.  
  530.     // These functions are supported by the Windows ComboBox control,
  531.     // but not supported by the Windows ComboBoxEx control.
  532.  
  533.     int Dir(UINT attr, LPCTSTR lpszWildCard);
  534.     int FindString(int nIndexStart, LPCTSTR lpszFind) const;
  535.     int AddString(LPCTSTR lpszString);
  536.     BOOL SetEditSel(int nStartChar, int nEndChar);
  537.     int InsertString(int nIndex, LPCTSTR lpszString);
  538.  
  539. // Implementation
  540. public:
  541.     virtual ~CComboBoxEx();
  542. };
  543.  
  544. /////////////////////////////////////////////////////////////////////////////
  545. // CHeaderCtrl
  546.  
  547. class CHeaderCtrl : public CWnd
  548. {
  549.     DECLARE_DYNAMIC(CHeaderCtrl)
  550.  
  551. // Constructors
  552. public:
  553.     CHeaderCtrl();
  554.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  555.  
  556. // Attributes
  557.     int GetItemCount() const;
  558.     BOOL GetItem(int nPos, HDITEM* pHeaderItem) const;
  559.     BOOL SetItem(int nPos, HDITEM* pHeaderItem);
  560.     CImageList* GetImageList() const;
  561.     CImageList* SetImageList(CImageList* pImageList);
  562.     BOOL GetItemRect(int nIndex, LPRECT lpRect) const;
  563.     BOOL GetOrderArray(LPINT piArray, int iCount = -1);
  564.     BOOL SetOrderArray(int iCount, LPINT piArray);
  565.     int OrderToIndex(int nOrder) const;
  566.  
  567. // Operations
  568.     int InsertItem(int nPos, HDITEM* phdi);
  569.     BOOL DeleteItem(int nPos);
  570.     BOOL Layout(HDLAYOUT* pHeaderLayout);
  571.     CImageList* CreateDragImage(int nIndex);
  572.     int SetHotDivider(CPoint pt);
  573.     int SetHotDivider(int nIndex);
  574.  
  575. // Overridables
  576.     virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  577.  
  578. // Implementation
  579. public:
  580.     virtual ~CHeaderCtrl();
  581. protected:
  582.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  583.  
  584. };
  585.  
  586. /////////////////////////////////////////////////////////////////////////////
  587. // CHotKeyCtrl
  588.  
  589. class CHotKeyCtrl : public CWnd
  590. {
  591.     DECLARE_DYNAMIC(CHotKeyCtrl)
  592.  
  593. // Constructors
  594. public:
  595.     CHotKeyCtrl();
  596.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  597.  
  598. // Attributes
  599.     void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers);
  600.     DWORD GetHotKey() const;
  601.     void GetHotKey(WORD &wVirtualKeyCode, WORD &wModifiers) const;
  602.  
  603. // Operations
  604.     void SetRules(WORD wInvalidComb, WORD wModifiers);
  605.  
  606. // Implementation
  607. public:
  608.     virtual ~CHotKeyCtrl();
  609. };
  610.  
  611. /////////////////////////////////////////////////////////////////////////////
  612. // CToolTipCtrl
  613.  
  614. class CToolTipCtrl : public CWnd
  615. {
  616.     DECLARE_DYNAMIC(CToolTipCtrl)
  617.  
  618. // Constructors
  619. public:
  620.     CToolTipCtrl();
  621.     BOOL Create(CWnd* pParentWnd, DWORD dwStyle = 0);
  622.  
  623. // Attributes
  624.     void GetText(CString& str, CWnd* pWnd, UINT nIDTool = 0) const;
  625.     BOOL GetToolInfo(CToolInfo& ToolInfo, CWnd* pWnd, UINT nIDTool = 0) const;
  626.     void SetToolInfo(LPTOOLINFO lpToolInfo);
  627.     void SetToolRect(CWnd* pWnd, UINT nIDTool, LPCRECT lpRect);
  628.     int GetToolCount() const;
  629.     int GetDelayTime(DWORD dwDuration) const;
  630.     void SetDelayTime(DWORD dwDuration, int iTime);
  631.     void GetMargin(LPRECT lprc) const;
  632.     void SetMargin(LPRECT lprc);
  633.     int GetMaxTipWidth() const;
  634.     int SetMaxTipWidth(int iWidth);
  635.     COLORREF GetTipBkColor() const;
  636.     void SetTipBkColor(COLORREF clr);
  637.     COLORREF GetTipTextColor() const;
  638.     void SetTipTextColor(COLORREF clr);
  639.  
  640. // Operations
  641.     void Activate(BOOL bActivate);
  642.  
  643.     BOOL AddTool(CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL,
  644.         UINT nIDTool = 0);
  645.     BOOL AddTool(CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
  646.         LPCRECT lpRectTool = NULL, UINT nIDTool = 0);
  647.  
  648.     void DelTool(CWnd* pWnd, UINT nIDTool = 0);
  649.  
  650.     BOOL HitTest(CWnd* pWnd, CPoint pt, LPTOOLINFO lpToolInfo) const;
  651.     void RelayEvent(LPMSG lpMsg);
  652.     void SetDelayTime(UINT nDelay);
  653.     void UpdateTipText(LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0);
  654.     void UpdateTipText(UINT nIDText, CWnd* pWnd, UINT nIDTool = 0);
  655.     void Update();
  656.  
  657.     void Pop();
  658.  
  659. // Implementation
  660. public:
  661.     void FillInToolInfo(TOOLINFO& ti, CWnd* pWnd, UINT nIDTool) const;
  662.     virtual ~CToolTipCtrl();
  663. #ifndef _AFXDLL
  664.     virtual BOOL DestroyToolTipCtrl();
  665. #else
  666.     BOOL DestroyToolTipCtrl();
  667. #endif
  668.  
  669. protected:
  670.     //{{AFX_MSG(CToolTipCtrl)
  671.     afx_msg LRESULT OnDisableModal(WPARAM, LPARAM);
  672.     afx_msg LRESULT OnWindowFromPoint(WPARAM, LPARAM);
  673.     afx_msg LRESULT OnAddTool(WPARAM, LPARAM);
  674.     afx_msg void OnEnable(BOOL bEnable);
  675.     //}}AFX_MSG
  676.     DECLARE_MESSAGE_MAP()
  677.  
  678.     CMapStringToPtr m_mapString;
  679.  
  680.     friend class CWnd;
  681.     friend class CToolBar;
  682. };
  683.  
  684. /////////////////////////////////////////////////////////////////////////////
  685. // CTabCtrl
  686.  
  687. class CTabCtrl : public CWnd
  688. {
  689.     DECLARE_DYNAMIC(CTabCtrl)
  690.  
  691. // Constructors
  692. public:
  693.     CTabCtrl();
  694.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  695.  
  696. // Attributes
  697.     CImageList* GetImageList() const;
  698.     CImageList* SetImageList(CImageList* pImageList);
  699.     int GetItemCount() const;
  700.     BOOL GetItem(int nItem, TCITEM* pTabCtrlItem) const;
  701.     BOOL SetItem(int nItem, TCITEM* pTabCtrlItem);
  702.     BOOL SetItemExtra(int nBytes);
  703.     BOOL GetItemRect(int nItem, LPRECT lpRect) const;
  704.     int GetCurSel() const;
  705.     int SetCurSel(int nItem);
  706.     void SetCurFocus(int nItem);
  707.     CSize SetItemSize(CSize size);
  708.     void SetPadding(CSize size);
  709.     int GetRowCount() const;
  710.     CToolTipCtrl* GetToolTips() const;
  711.     void SetToolTips(CToolTipCtrl* pWndTip);
  712.     int GetCurFocus() const;
  713.     int SetMinTabWidth(int cx);
  714.     DWORD GetExtendedStyle();
  715.     DWORD SetExtendedStyle(DWORD dwNewStyle, DWORD dwExMask = 0);
  716.     DWORD GetItemState(int nItem, DWORD dwMask) const;
  717.     BOOL SetItemState(int nItem, DWORD dwMask, DWORD dwState);
  718.  
  719. // Operations
  720.     BOOL InsertItem(int nItem, TCITEM* pTabCtrlItem);
  721.     BOOL InsertItem(int nItem, LPCTSTR lpszItem);
  722.     BOOL InsertItem(int nItem, LPCTSTR lpszItem, int nImage);
  723.     BOOL InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem,
  724.         int nImage, LPARAM lParam);
  725.     BOOL InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem,
  726.         int nImage, LPARAM lParam, DWORD dwState, DWORD dwStateMask);
  727.     BOOL DeleteItem(int nItem);
  728.     BOOL DeleteAllItems();
  729.     void AdjustRect(BOOL bLarger, LPRECT lpRect);
  730.     void RemoveImage(int nImage);
  731.     int HitTest(TCHITTESTINFO* pHitTestInfo) const;
  732.     void DeselectAll(BOOL fExcludeFocus);
  733.     BOOL HighlightItem(int idItem, BOOL fHighlight = TRUE);
  734.  
  735. // Overridables
  736.     virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  737.  
  738. // Implementation
  739. public:
  740.     virtual ~CTabCtrl();
  741. protected:
  742.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  743.     //{{AFX_MSG(CTabCtrl)
  744.     afx_msg void OnDestroy();
  745.     //}}AFX_MSG
  746.     DECLARE_MESSAGE_MAP()
  747. };
  748.  
  749. /////////////////////////////////////////////////////////////////////////////
  750. // CAnimateCtrl
  751.  
  752. class CAnimateCtrl : public CWnd
  753. {
  754.     DECLARE_DYNAMIC(CAnimateCtrl)
  755.  
  756. // Constructors
  757. public:
  758.     CAnimateCtrl();
  759.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  760.  
  761. // Operations
  762.     BOOL Open(LPCTSTR lpszFileName);
  763.     BOOL Open(UINT nID);
  764.     BOOL Play(UINT nFrom, UINT nTo, UINT nRep);
  765.     BOOL Stop();
  766.     BOOL Close();
  767.     BOOL Seek(UINT nTo);
  768.  
  769. // Implementation
  770. public:
  771.     virtual ~CAnimateCtrl();
  772. };
  773.  
  774. /////////////////////////////////////////////////////////////////////////////
  775. // CImageList
  776.  
  777. class CImageList : public CObject
  778. {
  779.     DECLARE_DYNCREATE(CImageList)
  780.  
  781. // Constructors
  782. public:
  783.     CImageList();
  784.     BOOL Create(int cx, int cy, UINT nFlags, int nInitial, int nGrow);
  785.     BOOL Create(UINT nBitmapID, int cx, int nGrow, COLORREF crMask);
  786.     BOOL Create(LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask);
  787.     BOOL Create(CImageList& imagelist1, int nImage1, CImageList& imagelist2,
  788.         int nImage2, int dx, int dy);
  789.     BOOL Create(CImageList* pImageList);
  790.  
  791. // Attributes
  792.     HIMAGELIST m_hImageList;            // must be first data member
  793.     operator HIMAGELIST() const;
  794.     HIMAGELIST GetSafeHandle() const;
  795.  
  796.     static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);
  797.     static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);
  798.     static void PASCAL DeleteTempMap();
  799.     BOOL Attach(HIMAGELIST hImageList);
  800.     HIMAGELIST Detach();
  801.  
  802.     int GetImageCount() const;
  803.     COLORREF SetBkColor(COLORREF cr);
  804.     COLORREF GetBkColor() const;
  805.     BOOL GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const;
  806.  
  807. // Operations
  808.     BOOL DeleteImageList();
  809.     BOOL SetImageCount(UINT uNewCount);
  810.  
  811.     int Add(CBitmap* pbmImage, CBitmap* pbmMask);
  812.     int Add(CBitmap* pbmImage, COLORREF crMask);
  813.     BOOL Remove(int nImage);
  814.     BOOL Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask);
  815.     int Add(HICON hIcon);
  816.     int Replace(int nImage, HICON hIcon);
  817.     HICON ExtractIcon(int nImage);
  818.     BOOL Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle);
  819.     BOOL SetOverlayImage(int nImage, int nOverlay);
  820.     BOOL Copy(int iDst, int iSrc, UINT uFlags = ILCF_MOVE);
  821.     BOOL Copy(int iDst, CImageList* pSrc, int iSrc, UINT uFlags = ILCF_MOVE);
  822.     BOOL DrawIndirect(IMAGELISTDRAWPARAMS* pimldp);
  823.     BOOL DrawIndirect(CDC* pDC, int nImage, POINT pt, SIZE sz, POINT ptOrigin,
  824.             UINT fStyle = ILD_NORMAL, DWORD dwRop = SRCCOPY,
  825.             COLORREF rgbBack = CLR_DEFAULT, COLORREF rgbFore = CLR_DEFAULT);
  826.  
  827. #ifndef _AFX_NO_OLE_SUPPORT
  828.     BOOL Read(CArchive* pArchive);
  829.     BOOL Write(CArchive* pArchive);
  830. #endif
  831.  
  832. // Drag APIs
  833.     BOOL BeginDrag(int nImage, CPoint ptHotSpot);
  834.     static void PASCAL EndDrag();
  835.     static BOOL PASCAL DragMove(CPoint pt);
  836.     BOOL SetDragCursorImage(int nDrag, CPoint ptHotSpot);
  837.     static BOOL PASCAL DragShowNolock(BOOL bShow);
  838.     static CImageList* PASCAL GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot);
  839.     static BOOL PASCAL DragEnter(CWnd* pWndLock, CPoint point);
  840.     static BOOL PASCAL DragLeave(CWnd* pWndLock);
  841.  
  842. // Implementation
  843. public:
  844.     virtual ~CImageList();
  845. #ifdef _DEBUG
  846.     virtual void Dump(CDumpContext& dc) const;
  847.     virtual void AssertValid() const;
  848. #endif
  849. };
  850.  
  851. /////////////////////////////////////////////////////////////////////////////
  852. // CToolBarCtrl
  853.  
  854. struct IDropTarget; // forward declaration
  855.  
  856. class CToolBarCtrl : public CWnd
  857. {
  858.     DECLARE_DYNAMIC(CToolBarCtrl)
  859. // Construction
  860. public:
  861.     CToolBarCtrl();
  862.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  863.  
  864. // Attributes
  865. public:
  866.     BOOL IsButtonEnabled(int nID) const;
  867.     BOOL IsButtonChecked(int nID) const;
  868.     BOOL IsButtonPressed(int nID) const;
  869.     BOOL IsButtonHidden(int nID) const;
  870.     BOOL IsButtonIndeterminate(int nID) const;
  871.     BOOL SetState(int nID, UINT nState);
  872.     int GetState(int nID) const;
  873.     BOOL GetButton(int nIndex, LPTBBUTTON lpButton) const;
  874.     int GetButtonCount() const;
  875.     BOOL GetItemRect(int nIndex, LPRECT lpRect) const;
  876.     BOOL GetRect(int nID, LPRECT lpRect) const;
  877.     void SetButtonStructSize(int nSize);
  878.     DWORD GetButtonSize() const;
  879.     BOOL SetButtonSize(CSize size);
  880.     BOOL SetBitmapSize(CSize size);
  881.     CToolTipCtrl* GetToolTips() const;
  882.     void SetToolTips(CToolTipCtrl* pTip);
  883.     void SetOwner(CWnd* pWnd);
  884.     void SetRows(int nRows, BOOL bLarger, LPRECT lpRect);
  885.     int GetRows() const;
  886.     BOOL SetCmdID(int nIndex, UINT nID);
  887.     UINT GetBitmapFlags() const;
  888.     CImageList* GetDisabledImageList() const;
  889.     CImageList* GetHotImageList() const;
  890.     CImageList* GetImageList() const;
  891.     DWORD GetStyle() const;
  892.     int GetMaxTextRows() const;
  893.     BOOL IsButtonHighlighted(int nID) const;
  894.     BOOL SetButtonWidth(int cxMin, int cxMax);
  895.     CImageList* SetDisabledImageList(CImageList* pImageList);
  896.     CImageList* SetHotImageList(CImageList* pImageList);
  897.     CImageList* SetImageList(CImageList* pImageList);
  898.     HRESULT GetDropTarget(IDropTarget** ppDropTarget) const;
  899.     BOOL SetIndent(int iIndent);
  900.     BOOL SetMaxTextRows(int iMaxRows);
  901.     void SetStyle(DWORD dwStyle);
  902.     BOOL GetButtonInfo(int nID, TBBUTTONINFO* ptbbi) const;
  903.     BOOL SetButtonInfo(int nID, TBBUTTONINFO* ptbbi);
  904.     DWORD SetDrawTextFlags(DWORD dwMask, DWORD dwDTFlags);
  905.     BOOL GetAnchorHighlight() const;
  906.     BOOL SetAnchorHighlight(BOOL fAnchor = TRUE);
  907.     int GetHotItem() const;
  908.     int SetHotItem(int nHot);
  909.     void GetInsertMark(TBINSERTMARK* ptbim) const;
  910.     void SetInsertMark(TBINSERTMARK* ptbim);
  911.     BOOL GetMaxSize(LPSIZE pSize) const;
  912.     BOOL InsertMarkHitTest(LPPOINT ppt, LPTBINSERTMARK ptbim) const;
  913.     DWORD GetExtendedStyle() const;
  914.     DWORD SetExtendedStyle(DWORD dwExStyle);
  915.     COLORREF GetInsertMarkColor() const;
  916.     COLORREF SetInsertMarkColor(COLORREF clrNew);
  917.  
  918. // Operations
  919. public:
  920.     BOOL EnableButton(int nID, BOOL bEnable = TRUE);
  921.     BOOL CheckButton(int nID, BOOL bCheck = TRUE);
  922.     BOOL PressButton(int nID, BOOL bPress = TRUE);
  923.     BOOL HideButton(int nID, BOOL bHide = TRUE);
  924.     BOOL Indeterminate(int nID, BOOL bIndeterminate = TRUE);
  925.     int AddBitmap(int nNumButtons, UINT nBitmapID);
  926.     int AddBitmap(int nNumButtons, CBitmap* pBitmap);
  927.     BOOL AddButtons(int nNumButtons, LPTBBUTTON lpButtons);
  928.     BOOL InsertButton(int nIndex, LPTBBUTTON lpButton);
  929.     BOOL DeleteButton(int nIndex);
  930.     UINT CommandToIndex(UINT nID) const;
  931.     void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
  932.         LPCTSTR lpszValueName);
  933.     void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
  934.         LPCTSTR lpszValueName);
  935.     void LoadImages(int iBitmapID, HINSTANCE hinst);
  936.     BOOL MapAccelerator(TCHAR chAccel, UINT* pIDBtn);
  937.     BOOL MarkButton(int nID, BOOL fHighlight = TRUE);
  938.     BOOL MoveButton(UINT nOldPos, UINT nNewPos);
  939.     int HitTest(LPPOINT ppt) const;
  940.  
  941.     void Customize();
  942.     int AddString(UINT nStringID);
  943.     int AddStrings(LPCTSTR lpszStrings);
  944.     void AutoSize();
  945.  
  946. // Implementation
  947. public:
  948.     virtual ~CToolBarCtrl();
  949.  
  950. protected:
  951.     //{{AFX_MSG(CToolBarCtrl)
  952.     afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  953.     //}}AFX_MSG
  954.     DECLARE_MESSAGE_MAP()
  955. };
  956.  
  957. class CReBarCtrl : public CWnd
  958. {
  959.     DECLARE_DYNAMIC(CReBarCtrl)
  960. // Construction
  961. public:
  962.     CReBarCtrl();
  963.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  964.  
  965. // Attributes
  966. public:
  967.     UINT GetBandCount() const;
  968.     BOOL GetBandInfo(UINT uBand, REBARBANDINFO* prbbi) const;
  969.     UINT GetBarHeight() const;
  970.     BOOL GetBarInfo(REBARINFO* prbi) const;
  971.     COLORREF GetBkColor() const;
  972.     IDropTarget* GetDropTarget() const;
  973.     BOOL GetRect(UINT uBand, LPRECT prc) const;
  974.     UINT GetRowCount() const;
  975.     UINT GetRowHeight(UINT uRow) const;
  976.     COLORREF GetTextColor() const;
  977.     CToolTipCtrl* GetToolTips() const;
  978.     int IDToIndex(UINT uBandID) const;
  979.     BOOL SetBandInfo(UINT uBand, REBARBANDINFO* prbbi);
  980.     BOOL SetBarInfo(REBARINFO* prbi);
  981.     COLORREF SetBkColor(COLORREF clr);
  982.     CWnd* SetOwner(CWnd* pWnd);
  983.     COLORREF SetTextColor(COLORREF clr);
  984.     void SetToolTips(CToolTipCtrl* pToolTip);
  985.     CImageList* GetImageList() const;
  986.     BOOL SetImageList(CImageList* pImageList);
  987.     void GetBandBorders(UINT uBand, LPRECT prc) const;
  988.     CPalette* GetPalette() const;
  989.     CPalette* SetPalette(HPALETTE hPal);
  990.     BOOL GetColorScheme(COLORSCHEME* lpcs);
  991.     void SetColorScheme(const COLORSCHEME* lpcs);
  992.  
  993. // Operations
  994. public:
  995.     void BeginDrag(UINT uBand, DWORD dwPos = (DWORD)-1);
  996.     BOOL DeleteBand(UINT uBand);
  997.     void DragMove(DWORD dwPos = (DWORD)-1);
  998.     void EndDrag();
  999.     int HitTest(RBHITTESTINFO* prbht);
  1000.     BOOL InsertBand(UINT uIndex, REBARBANDINFO* prbbi);
  1001.     void MaximizeBand(UINT uBand);
  1002.     void MinimizeBand(UINT uBand);
  1003.     BOOL ShowBand(UINT uBand, BOOL fShow = TRUE);
  1004.     BOOL SizeToRect(CRect& rect);
  1005.     BOOL MoveBand(UINT uFrom, UINT uTo);
  1006. };
  1007.  
  1008. #ifndef _AFX_NO_RICHEDIT_SUPPORT
  1009. /////////////////////////////////////////////////////////////////////////////
  1010. // CRichEditCtrl
  1011.  
  1012. class CRichEditCtrl : public CWnd
  1013. {
  1014.     DECLARE_DYNAMIC(CRichEditCtrl)
  1015.  
  1016. // Constructors
  1017. public:
  1018.     CRichEditCtrl();
  1019.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  1020.  
  1021. // Attributes
  1022.     BOOL CanUndo() const;
  1023.     int GetLineCount() const;
  1024.     BOOL GetModify() const;
  1025.     void SetModify(BOOL bModified = TRUE);
  1026.     void GetRect(LPRECT lpRect) const;
  1027.     CPoint GetCharPos(long lChar) const;
  1028.     void SetOptions(WORD wOp, DWORD dwFlags);
  1029.  
  1030.     // NOTE: first word in lpszBuffer must contain the size of the buffer!
  1031.     int GetLine(int nIndex, LPTSTR lpszBuffer) const;
  1032.     int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
  1033.  
  1034.     BOOL CanPaste(UINT nFormat = 0) const;
  1035.     void GetSel(long& nStartChar, long& nEndChar) const;
  1036.     void GetSel(CHARRANGE &cr) const;
  1037.     void LimitText(long nChars = 0);
  1038.     long LineFromChar(long nIndex) const;
  1039.     void SetSel(long nStartChar, long nEndChar);
  1040.     void SetSel(CHARRANGE &cr);
  1041.     DWORD GetDefaultCharFormat(CHARFORMAT &cf) const;
  1042.     DWORD GetSelectionCharFormat(CHARFORMAT &cf) const;
  1043.     long GetEventMask() const;
  1044.     long GetLimitText() const;
  1045.     DWORD GetParaFormat(PARAFORMAT &pf) const;
  1046.     // richedit EM_GETSELTEXT is ANSI
  1047.     long GetSelText(LPSTR lpBuf) const;
  1048.     CString GetSelText() const;
  1049.     WORD GetSelectionType() const;
  1050.     COLORREF SetBackgroundColor(BOOL bSysColor, COLORREF cr);
  1051.     BOOL SetDefaultCharFormat(CHARFORMAT &cf);
  1052.     BOOL SetSelectionCharFormat(CHARFORMAT &cf);
  1053.     BOOL SetWordCharFormat(CHARFORMAT &cf);
  1054.     DWORD SetEventMask(DWORD dwEventMask);
  1055.     BOOL SetParaFormat(PARAFORMAT &pf);
  1056.     BOOL SetTargetDevice(HDC hDC, long lLineWidth);
  1057.     BOOL SetTargetDevice(CDC &dc, long lLineWidth);
  1058.     long GetTextLength() const;
  1059.     BOOL SetReadOnly(BOOL bReadOnly = TRUE);
  1060.     int GetFirstVisibleLine() const;
  1061.  
  1062. // Operations
  1063.     void EmptyUndoBuffer();
  1064.  
  1065.     int LineIndex(int nLine = -1) const;
  1066.     int LineLength(int nLine = -1) const;
  1067.     void LineScroll(int nLines, int nChars = 0);
  1068.     void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
  1069.     void SetRect(LPCRECT lpRect);
  1070.  
  1071.     BOOL DisplayBand(LPRECT pDisplayRect);
  1072.     long FindText(DWORD dwFlags, FINDTEXTEX* pFindText) const;
  1073.     long FormatRange(FORMATRANGE* pfr, BOOL bDisplay = TRUE);
  1074.     void HideSelection(BOOL bHide, BOOL bPerm);
  1075.     void PasteSpecial(UINT nClipFormat, DWORD dvAspect = 0, HMETAFILE hMF = 0);
  1076.     void RequestResize();
  1077.     long StreamIn(int nFormat, EDITSTREAM &es);
  1078.     long StreamOut(int nFormat, EDITSTREAM &es);
  1079.  
  1080.     // Clipboard operations
  1081.     BOOL Undo();
  1082.     void Clear();
  1083.     void Copy();
  1084.     void Cut();
  1085.     void Paste();
  1086.  
  1087. // OLE support
  1088.     IRichEditOle* GetIRichEditOle() const;
  1089.     BOOL SetOLECallback(IRichEditOleCallback* pCallback);
  1090.  
  1091. // Implementation
  1092. public:
  1093.     virtual ~CRichEditCtrl();
  1094. };
  1095. #endif //!_AFX_NO_RICHEDIT_SUPPORT
  1096.  
  1097.  
  1098. /////////////////////////////////////////////////////////////////////////////
  1099. // CIPAddressCtrl
  1100.  
  1101. class CIPAddressCtrl : public CWnd
  1102. {
  1103.     DECLARE_DYNAMIC(CIPAddressCtrl)
  1104.  
  1105. // Constructors
  1106.     CIPAddressCtrl();
  1107.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  1108.  
  1109. // Attributes
  1110.     BOOL IsBlank() const;
  1111.     void ClearAddress();
  1112.     int GetAddress(BYTE& nField0, BYTE& nField1, BYTE& nField2, BYTE& nField3);
  1113.     int GetAddress(DWORD& dwAddress);
  1114.     void SetAddress(DWORD dwAddress); //TODO: return value?
  1115.     void SetAddress(BYTE nField0, BYTE nField1, BYTE nField2, BYTE nField3); //TODO: return value?
  1116.     void SetFieldFocus(WORD nField); //TODO: return value?
  1117.     void SetFieldRange(int nField, BYTE nLower, BYTE nUpper); //TODO: return value?
  1118.  
  1119. // Implementation
  1120. public:
  1121.     virtual ~CIPAddressCtrl();
  1122. };
  1123.  
  1124. /////////////////////////////////////////////////////////////////////////////
  1125. // Inline function declarations
  1126.  
  1127. #ifdef _AFX_PACKING
  1128. #pragma pack(pop)
  1129. #endif
  1130.  
  1131. #ifdef _AFX_ENABLE_INLINES
  1132. #define _AFXCMN_INLINE AFX_INLINE
  1133. #include <afxcmn.inl>
  1134. #include <afxcmn2.inl>
  1135. #undef _AFXCMN_INLINE
  1136. #endif
  1137.  
  1138. #undef AFX_DATA
  1139. #define AFX_DATA
  1140.  
  1141. #ifdef _AFX_MINREBUILD
  1142. #pragma component(minrebuild, on)
  1143. #endif
  1144. #ifndef _AFX_FULLTYPEINFO
  1145. #pragma component(mintypeinfo, off)
  1146. #endif
  1147.  
  1148. #endif //__AFXCMN_H__
  1149.  
  1150. /////////////////////////////////////////////////////////////////////////////
  1151.