home *** CD-ROM | disk | FTP | other *** search
/ Total C++ 2 / TOTALCTWO.iso / borland / mfcinc.pak / AFXCMN.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  27KB  |  921 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1995 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. #ifndef _AFX_NOFORCE_LIBS
  34. #ifndef _MAC
  35.  
  36. /////////////////////////////////////////////////////////////////////////////
  37. // Win32 libraries
  38.  
  39. #else //!_MAC
  40.  
  41. /////////////////////////////////////////////////////////////////////////////
  42. // Mac libraries
  43.  
  44. // RichEdit requires OLE
  45. #if !defined(_AFXDLL) && !defined(_USRDLL)
  46.     #ifdef _DEBUG
  47.         #pragma comment(lib, "wlmoled.lib")
  48.     #else
  49.         #pragma comment(lib, "wlmole.lib")
  50.     #endif
  51. #else
  52.     #ifdef _DEBUG
  53.         #pragma comment(lib, "msvcoled.lib")
  54.     #else
  55.         #pragma comment(lib, "msvcole.lib")
  56.     #endif
  57. #endif
  58.  
  59. #pragma comment(lib, "uuid.lib")
  60.  
  61. #ifdef _DEBUG
  62.     #pragma comment(lib, "ole2d.lib")
  63.     #pragma comment(lib, "ole2autd.lib")
  64. #else
  65.     #pragma comment(lib, "ole2.lib")
  66.     #pragma comment(lib, "ole2auto.lib")
  67. #endif
  68.  
  69. #endif //_MAC
  70. #endif //!_AFX_NOFORCE_LIBS
  71.  
  72. /////////////////////////////////////////////////////////////////////////////
  73.  
  74. #ifdef _AFX_PACKING
  75. #pragma pack(push, _AFX_PACKING)
  76. #endif
  77.  
  78. #ifndef _AFX_NO_RICHEDIT_SUPPORT
  79.     #ifndef _RICHEDIT_
  80.         #include <richedit.h>
  81.     #endif
  82.     #ifdef __AFXOLE_H__  // only include richole if OLE support is included
  83.         #ifndef _RICHOLE_
  84.             #include <richole.h>
  85.             #define _RICHOLE_
  86.         #endif
  87.     #else
  88.         struct IRichEditOle;
  89.         struct IRichEditOleCallback;
  90.     #endif
  91. #endif
  92.  
  93. /////////////////////////////////////////////////////////////////////////////
  94. // AFXCMN - MFC COMCTL32 Control Classes
  95.  
  96. // Classes declared in this file
  97.  
  98. //TOOLINFO
  99.     class CToolInfo;
  100.  
  101. //CObject
  102.     class CImageList;
  103.     //CCmdTarget;
  104.         //CWnd
  105.             // class CListBox;
  106.                 class CDragListBox;
  107.             class CListCtrl;
  108.             class CTreeCtrl;
  109.             class CSpinButtonCtrl;
  110.             class CHeaderCtrl;
  111.             class CSliderCtrl;
  112.             class CProgressCtrl;
  113.             class CHotKeyCtrl;
  114.             class CToolTipCtrl;
  115.             class CTabCtrl;
  116.             class CAnimateCtrl;
  117.             class CToolBarCtrl;
  118.             class CStatusBarCtrl;
  119.             class CRichEditCtrl;
  120.  
  121. #undef AFX_DATA
  122. #define AFX_DATA AFX_CORE_DATA
  123.  
  124. /////////////////////////////////////////////////////////////////////////////
  125. // CToolInfo
  126.  
  127. #ifdef _UNICODE
  128. class CToolInfo : public tagTOOLINFOW
  129. #else
  130. class CToolInfo : public tagTOOLINFOA
  131. #endif
  132. {
  133. public:
  134.     TCHAR szText[256];
  135. };
  136.  
  137. /////////////////////////////////////////////////////////////////////////////
  138. // CDragListBox
  139.  
  140. class CDragListBox : public CListBox
  141. {
  142.     DECLARE_DYNAMIC(CDragListBox)
  143.  
  144. // Constructors
  145. public:
  146.     CDragListBox();
  147.  
  148. // Attributes
  149.     int ItemFromPt(CPoint pt, BOOL bAutoScroll = TRUE) const;
  150.  
  151. // Operations
  152.     virtual void DrawInsert(int nItem);
  153.  
  154. // Overridables
  155.     virtual BOOL BeginDrag(CPoint pt);
  156.     virtual void CancelDrag(CPoint pt);
  157.     virtual UINT Dragging(CPoint pt);
  158.     virtual void Dropped(int nSrcIndex, CPoint pt);
  159.  
  160. // Implementation
  161. public:
  162.     int m_nLast;
  163.     void DrawSingle(int nIndex);
  164.     virtual void PreSubclassWindow();
  165.     virtual ~CDragListBox();
  166. protected:
  167.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  168. };
  169.  
  170. /////////////////////////////////////////////////////////////////////////////
  171. // CStatusBarCtrl
  172.  
  173. class CStatusBarCtrl : public CWnd
  174. {
  175.     DECLARE_DYNAMIC(CStatusBarCtrl)
  176.  
  177. // Constructors
  178. public:
  179.     CStatusBarCtrl();
  180.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  181.  
  182. // Attributes
  183.     BOOL SetText(LPCTSTR lpszText, int nPane, int nType);
  184.     CString GetText(int nPane, int* pType = NULL) const;
  185.     int GetText(LPCTSTR lpszText, int nPane, int* pType = NULL) const;
  186.     int GetTextLength(int nPane, int* pType = NULL) const;
  187.     BOOL SetParts(int nParts, int* pWidths);
  188.     int GetParts(int nParts, int* pParts) const;
  189.     BOOL GetBorders(int* pBorders) const;
  190.     BOOL GetBorders(int& nHorz, int& nVert, int& nSpacing) const;
  191.     void SetMinHeight(int nMin);
  192.     BOOL SetSimple(BOOL bSimple = TRUE);
  193.     BOOL GetRect(int nPane, LPRECT lpRect) const;
  194.  
  195. // Overridables
  196.     virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  197.  
  198. // Implementation
  199. public:
  200.     virtual ~CStatusBarCtrl();
  201. protected:
  202.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  203. };
  204.  
  205. /////////////////////////////////////////////////////////////////////////////
  206. // CListCtrl
  207.  
  208. class CListCtrl : public CWnd
  209. {
  210.     DECLARE_DYNAMIC(CListCtrl)
  211.  
  212. // Constructors
  213. public:
  214.     CListCtrl();
  215.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  216.  
  217. // Attributes
  218.     COLORREF GetBkColor() const;
  219.     BOOL SetBkColor(COLORREF cr);
  220.     CImageList* GetImageList(int nImageList) const;
  221.     CImageList* SetImageList(CImageList* pImageList, int nImageListType);
  222.     int GetItemCount() const;
  223.     BOOL GetItem(LV_ITEM* pItem) const;
  224.     BOOL SetItem(const LV_ITEM* pItem);
  225.     BOOL SetItem(int nItem, int nSubItem, UINT nMask, LPCTSTR lpszItem,
  226.         int nImage, UINT nState, UINT nStateMask, LPARAM lParam);
  227.     UINT GetCallbackMask() const;
  228.     BOOL SetCallbackMask(UINT nMask);
  229.     int GetNextItem(int nItem, int nFlags) const;
  230.     BOOL GetItemRect(int nItem, LPRECT lpRect, UINT nCode) const;
  231.     BOOL SetItemPosition(int nItem, POINT pt);
  232.     BOOL GetItemPosition(int nItem, LPPOINT lpPoint) const;
  233.     int GetStringWidth(LPCTSTR lpsz) const;
  234.     CEdit* GetEditControl() const;
  235.     BOOL GetColumn(int nCol, LV_COLUMN* pColumn) const;
  236.     BOOL SetColumn(int nCol, const LV_COLUMN* pColumn);
  237.     int GetColumnWidth(int nCol) const;
  238.     BOOL SetColumnWidth(int nCol, int cx);
  239.     BOOL GetViewRect(LPRECT lpRect) const;
  240.     COLORREF GetTextColor() const;
  241.     BOOL SetTextColor(COLORREF cr);
  242.     COLORREF GetTextBkColor() const;
  243.     BOOL SetTextBkColor(COLORREF cr);
  244.     int GetTopIndex() const;
  245.     int GetCountPerPage() const;
  246.     BOOL GetOrigin(LPPOINT lpPoint) const;
  247.     BOOL SetItemState(int nItem, LV_ITEM* pItem);
  248.     BOOL SetItemState(int nItem, UINT nState, UINT nMask);
  249.     UINT GetItemState(int nItem, UINT nMask) const;
  250.     CString GetItemText(int nItem, int nSubItem) const;
  251.     int GetItemText(int nItem, int nSubItem, LPTSTR lpszText, int nLen) const;
  252.     BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
  253.     void SetItemCount(int nItems);
  254.     BOOL SetItemData(int nItem, DWORD dwData);
  255.     DWORD GetItemData(int nItem) const;
  256.     UINT GetSelectedCount() const;
  257.  
  258. // Operations
  259.     int InsertItem(const LV_ITEM* pItem);
  260.     int InsertItem(int nItem, LPCTSTR lpszItem);
  261.     int InsertItem(int nItem, LPCTSTR lpszItem, int nImage);
  262.     BOOL DeleteItem(int nItem);
  263.     BOOL DeleteAllItems();
  264.     int FindItem(LV_FINDINFO* pFindInfo, int nStart = -1) const;
  265.     int HitTest(LV_HITTESTINFO* pHitTestInfo) const;
  266.     int HitTest(CPoint pt, UINT* pFlags = NULL) const;
  267.     BOOL EnsureVisible(int nItem, BOOL bPartialOK);
  268.     BOOL Scroll(CSize size);
  269.     BOOL RedrawItems(int nFirst, int nLast);
  270.     BOOL Arrange(UINT nCode);
  271.     CEdit* EditLabel(int nItem);
  272.     int InsertColumn(int nCol, const LV_COLUMN* pColumn);
  273.     int InsertColumn(int nCol, LPCTSTR lpszColumnHeading,
  274.         int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1);
  275.     BOOL DeleteColumn(int nCol);
  276.     CImageList* CreateDragImage(int nItem, LPPOINT lpPoint);
  277.     BOOL Update(int nItem);
  278.     BOOL SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData);
  279.  
  280. // Overridables
  281.     virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  282.  
  283. // Implementation
  284. public:
  285.     int InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState,
  286.         UINT nStateMask, int nImage, LPARAM lParam);
  287.     virtual ~CListCtrl();
  288. protected:
  289.     void RemoveImageList(int nImageList);
  290.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  291. protected:
  292.     //{{AFX_MSG(CListCtrl)
  293.     afx_msg void OnNcDestroy();
  294.     //}}AFX_MSG
  295.     DECLARE_MESSAGE_MAP()
  296. };
  297.  
  298. /////////////////////////////////////////////////////////////////////////////
  299. // CTreeCtrl
  300.  
  301. class CTreeCtrl : public CWnd
  302. {
  303.     DECLARE_DYNAMIC(CTreeCtrl)
  304.  
  305. // Constructors
  306. public:
  307.     CTreeCtrl();
  308.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  309.  
  310. // Attributes
  311.     BOOL GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly) const;
  312.     UINT GetCount() const;
  313.     UINT GetIndent() const;
  314.     void SetIndent(UINT nIndent);
  315.     CImageList* GetImageList(UINT nImageList) const;
  316.     CImageList* SetImageList(CImageList* pImageList, int nImageListType);
  317.     HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode) const;
  318.     HTREEITEM GetChildItem(HTREEITEM hItem) const;
  319.     HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const;
  320.     HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const;
  321.     HTREEITEM GetParentItem(HTREEITEM hItem) const;
  322.     HTREEITEM GetFirstVisibleItem() const;
  323.     HTREEITEM GetNextVisibleItem(HTREEITEM hItem) const;
  324.     HTREEITEM GetPrevVisibleItem(HTREEITEM hItem) const;
  325.     HTREEITEM GetSelectedItem() const;
  326.     HTREEITEM GetDropHilightItem() const;
  327.     HTREEITEM GetRootItem() const;
  328.     BOOL GetItem(TV_ITEM* pItem) const;
  329.     CString GetItemText(HTREEITEM hItem) const;
  330.     BOOL GetItemImage(HTREEITEM hItem, int& nImage, int& nSelectedImage) const;
  331.     UINT GetItemState(HTREEITEM hItem, UINT nStateMask) const;
  332.     DWORD GetItemData(HTREEITEM hItem) const;
  333.     BOOL SetItem(TV_ITEM* pItem);
  334.     BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem, int nImage,
  335.         int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam);
  336.     BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem);
  337.     BOOL SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage);
  338.     BOOL SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask);
  339.     BOOL SetItemData(HTREEITEM hItem, DWORD dwData);
  340.     BOOL ItemHasChildren(HTREEITEM hItem) const;
  341.     CEdit* GetEditControl() const;
  342.     UINT GetVisibleCount() const;
  343.  
  344. // Operations
  345.     HTREEITEM InsertItem(LPTV_INSERTSTRUCT lpInsertStruct);
  346.     HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage,
  347.         int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
  348.         HTREEITEM hParent, HTREEITEM hInsertAfter);
  349.     HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT,
  350.         HTREEITEM hInsertAfter = TVI_LAST);
  351.     HTREEITEM InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage,
  352.         HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
  353.     BOOL DeleteItem(HTREEITEM hItem);
  354.     BOOL DeleteAllItems();
  355.     BOOL Expand(HTREEITEM hItem, UINT nCode);
  356.     HTREEITEM Select(HTREEITEM hItem, UINT nCode);
  357.     HTREEITEM SelectItem(HTREEITEM hItem);
  358.     HTREEITEM SelectDropTarget(HTREEITEM hItem);
  359.     HTREEITEM SelectSetFirstVisible(HTREEITEM hItem);
  360.     CEdit* EditLabel(HTREEITEM hItem);
  361.     HTREEITEM HitTest(CPoint pt, UINT* pFlags = NULL) const;
  362.     HTREEITEM HitTest(TV_HITTESTINFO* pHitTestInfo) const;
  363.     CImageList* CreateDragImage(HTREEITEM hItem);
  364.     BOOL SortChildren(HTREEITEM hItem);
  365.     BOOL EnsureVisible(HTREEITEM hItem);
  366.     BOOL SortChildrenCB(LPTV_SORTCB pSort);
  367.  
  368. // Implementation
  369. protected:
  370.     void RemoveImageList(int nImageList);
  371. public:
  372.     virtual ~CTreeCtrl();
  373.     //{{AFX_MSG(CTreeCtrl)
  374.     afx_msg void OnDestroy();
  375.     //}}AFX_MSG
  376.     DECLARE_MESSAGE_MAP()
  377. };
  378.  
  379. /////////////////////////////////////////////////////////////////////////////
  380. // CSpinButtonCtrl
  381.  
  382. class CSpinButtonCtrl : public CWnd
  383. {
  384.     DECLARE_DYNAMIC(CSpinButtonCtrl)
  385.  
  386. // Constructors
  387. public:
  388.     CSpinButtonCtrl();
  389.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  390.  
  391. // Attributes
  392.     BOOL SetAccel(int nAccel, UDACCEL* pAccel);
  393.     UINT GetAccel(int nAccel, UDACCEL* pAccel) const;
  394.     int SetBase(int nBase);
  395.     UINT GetBase() const;
  396.     CWnd* SetBuddy(CWnd* pWndBuddy);
  397.     CWnd* GetBuddy() const;
  398.     int SetPos(int nPos);
  399.     int GetPos() const;
  400.     void SetRange(int nLower, int nUpper);
  401.     DWORD GetRange() const;
  402.     void GetRange(int &lower, int& upper) const;
  403.  
  404. // Implementation
  405. public:
  406.     virtual ~CSpinButtonCtrl();
  407. };
  408.  
  409. /////////////////////////////////////////////////////////////////////////////
  410. // CSliderCtrl
  411.  
  412. class CSliderCtrl : public CWnd
  413. {
  414.     DECLARE_DYNAMIC(CSliderCtrl)
  415.  
  416. // Constructors
  417. public:
  418.     CSliderCtrl();
  419.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  420.  
  421. // Attributes
  422.     int GetLineSize() const;
  423.     int SetLineSize(int nSize);
  424.     int GetPageSize() const;
  425.     int SetPageSize(int nSize);
  426.     int GetRangeMax() const;
  427.     int GetRangeMin() const;
  428.     void GetRange(int& nMin, int& nMax) const;
  429.     void SetRangeMin(int nMin, BOOL bRedraw = FALSE);
  430.     void SetRangeMax(int nMax, BOOL bRedraw = FALSE);
  431.     void SetRange(int nMin, int nMax, BOOL bRedraw = FALSE);
  432.     void GetSelection(int& nMin, int& nMax) const;
  433.     void SetSelection(int nMin, int nMax);
  434.     void GetChannelRect(LPRECT lprc) const;
  435.     void GetThumbRect(LPRECT lprc) const;
  436.     int GetPos() const;
  437.     void SetPos(int nPos);
  438.     UINT GetNumTics() const;
  439.     DWORD* GetTicArray() const;
  440.     int GetTic(int nTic) const;
  441.     int GetTicPos(int nTic) const;
  442.     BOOL SetTic(int nTic);
  443.     void SetTicFreq(int nFreq);
  444.  
  445. // Operations
  446.     void ClearSel(BOOL bRedraw = FALSE);
  447.     void VerifyPos();
  448.     void ClearTics(BOOL bRedraw = FALSE);
  449.  
  450. // Implementation
  451. public:
  452.     virtual ~CSliderCtrl();
  453. };
  454.  
  455. /////////////////////////////////////////////////////////////////////////////
  456. // CProgressCtrl
  457.  
  458. class CProgressCtrl : public CWnd
  459. {
  460.     DECLARE_DYNAMIC(CProgressCtrl)
  461.  
  462. // Constructors
  463. public:
  464.     CProgressCtrl();
  465.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  466.  
  467. // Attributes
  468.     void SetRange(int nLower, int nUpper);
  469.     int SetPos(int nPos);
  470.     int OffsetPos(int nPos);
  471.     int SetStep(int nStep);
  472.  
  473. // Operations
  474.     int StepIt();
  475.  
  476. // Implementation
  477. public:
  478.     virtual ~CProgressCtrl();
  479. };
  480.  
  481. /////////////////////////////////////////////////////////////////////////////
  482. // CHeaderCtrl
  483.  
  484. class CHeaderCtrl : public CWnd
  485. {
  486.     DECLARE_DYNAMIC(CHeaderCtrl)
  487.  
  488. // Constructors
  489. public:
  490.     CHeaderCtrl();
  491.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  492.  
  493. // Attributes
  494.     int GetItemCount() const;
  495.     BOOL GetItem(int nPos, HD_ITEM* pHeaderItem) const;
  496.     BOOL SetItem(int nPos, HD_ITEM* pHeaderItem);
  497.  
  498. // Operations
  499.     int InsertItem(int nPos, HD_ITEM* phdi);
  500.     BOOL DeleteItem(int nPos);
  501.     BOOL Layout(HD_LAYOUT* pHeaderLayout);
  502.  
  503. // Overridables
  504.     virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  505.  
  506. // Implementation
  507. public:
  508.     virtual ~CHeaderCtrl();
  509. protected:
  510.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  511.  
  512. };
  513.  
  514. /////////////////////////////////////////////////////////////////////////////
  515. // CHotKeyCtrl
  516.  
  517. class CHotKeyCtrl : public CWnd
  518. {
  519.     DECLARE_DYNAMIC(CHotKeyCtrl)
  520.  
  521. // Constructors
  522. public:
  523.     CHotKeyCtrl();
  524.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  525.  
  526. // Attributes
  527.     void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers);
  528.     DWORD GetHotKey() const;
  529.     void GetHotKey(WORD &wVirtualKeyCode, WORD &wModifiers) const;
  530.  
  531. // Operations
  532.     void SetRules(WORD wInvalidComb, WORD wModifiers);
  533.  
  534. // Implementation
  535. public:
  536.     virtual ~CHotKeyCtrl();
  537. };
  538.  
  539. /////////////////////////////////////////////////////////////////////////////
  540. // CToolTipCtrl
  541.  
  542. class CToolTipCtrl : public CWnd
  543. {
  544.     DECLARE_DYNAMIC(CToolTipCtrl)
  545.  
  546. // Constructors
  547. public:
  548.     CToolTipCtrl();
  549.     BOOL Create(CWnd* pParentWnd, DWORD dwStyle = 0);
  550.  
  551. // Attributes
  552.     void GetText(CString& str, CWnd* pWnd, UINT nIDTool = 0) const;
  553.     BOOL GetToolInfo(CToolInfo& ToolInfo, CWnd* pWnd, UINT nIDTool = 0) const;
  554.     void SetToolInfo(LPTOOLINFO lpToolInfo);
  555.     void SetToolRect(CWnd* pWnd, UINT nIDTool, LPCRECT lpRect);
  556.     int GetToolCount() const;
  557.  
  558. // Operations
  559.     void Activate(BOOL bActivate);
  560.  
  561.     BOOL AddTool(CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL,
  562.         UINT nIDTool = 0);
  563.     BOOL AddTool(CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
  564.         LPCRECT lpRectTool = NULL, UINT nIDTool = 0);
  565.  
  566.     void DelTool(CWnd* pWnd, UINT nIDTool = 0);
  567.  
  568.     BOOL HitTest(CWnd* pWnd, CPoint pt, LPTOOLINFO lpToolInfo) const;
  569.     void RelayEvent(LPMSG lpMsg);
  570.     void SetDelayTime(UINT nDelay);
  571.     void UpdateTipText(LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0);
  572.     void UpdateTipText(UINT nIDText, CWnd* pWnd, UINT nIDTool = 0);
  573.  
  574. // Implementation
  575. public:
  576.     void FillInToolInfo(TOOLINFO& ti, CWnd* pWnd, UINT nIDTool) const;
  577.     virtual ~CToolTipCtrl();
  578.     BOOL DestroyToolTipCtrl();
  579.  
  580. protected:
  581.     //{{AFX_MSG(CToolTipCtrl)
  582.     afx_msg LRESULT OnDisableModal(WPARAM, LPARAM);
  583.     afx_msg LRESULT OnWindowFromPoint(WPARAM, LPARAM);
  584.     afx_msg LRESULT OnAddTool(WPARAM, LPARAM);
  585.     //}}AFX_MSG
  586.     DECLARE_MESSAGE_MAP()
  587.  
  588.     CMapStringToPtr m_mapString;
  589.  
  590.     friend class CWnd;
  591.     friend class CToolBar;
  592. };
  593.  
  594. /////////////////////////////////////////////////////////////////////////////
  595. // CTabCtrl
  596.  
  597. class CTabCtrl : public CWnd
  598. {
  599.     DECLARE_DYNAMIC(CTabCtrl)
  600.  
  601. // Constructors
  602. public:
  603.     CTabCtrl();
  604.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  605.  
  606. // Attributes
  607.     CImageList* GetImageList() const;
  608.     CImageList* SetImageList(CImageList* pImageList);
  609.     int GetItemCount() const;
  610.     BOOL GetItem(int nItem, TC_ITEM* pTabCtrlItem) const;
  611.     BOOL SetItem(int nItem, TC_ITEM* pTabCtrlItem);
  612.     BOOL GetItemRect(int nItem, LPRECT lpRect) const;
  613.     int GetCurSel() const;
  614.     int SetCurSel(int nItem);
  615.     CSize SetItemSize(CSize size);
  616.     void SetPadding(CSize size);
  617.     int GetRowCount() const;
  618.     CToolTipCtrl* GetTooltips() const;
  619.     void SetTooltips(CToolTipCtrl* pWndTip);
  620.     int GetCurFocus() const;
  621.  
  622. // Operations
  623.     BOOL InsertItem(int nItem, TC_ITEM* pTabCtrlItem);
  624.     BOOL DeleteItem(int nItem);
  625.     BOOL DeleteAllItems();
  626.     void AdjustRect(BOOL bLarger, LPRECT lpRect);
  627.     void RemoveImage(int nImage);
  628.     int HitTest(TC_HITTESTINFO* pHitTestInfo) const;
  629.  
  630. // Overridables
  631.     virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  632.  
  633. // Implementation
  634. public:
  635.     virtual ~CTabCtrl();
  636. protected:
  637.     virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
  638.     //{{AFX_MSG(CTabCtrl)
  639.     afx_msg void OnDestroy();
  640.     //}}AFX_MSG
  641.     DECLARE_MESSAGE_MAP()
  642. };
  643.  
  644. /////////////////////////////////////////////////////////////////////////////
  645. // CAnimateCtrl
  646.  
  647. class CAnimateCtrl : public CWnd
  648. {
  649.     DECLARE_DYNAMIC(CAnimateCtrl)
  650.  
  651. // Constructors
  652. public:
  653.     CAnimateCtrl();
  654.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  655.  
  656. // Operations
  657.     BOOL Open(LPCTSTR lpszFileName);
  658.     BOOL Open(UINT nID);
  659.     BOOL Play(UINT nFrom, UINT nTo, UINT nRep);
  660.     BOOL Stop();
  661.     BOOL Close();
  662.     BOOL Seek(UINT nTo);
  663.  
  664. // Implementation
  665. public:
  666.     virtual ~CAnimateCtrl();
  667. };
  668.  
  669. /////////////////////////////////////////////////////////////////////////////
  670. // CImageList
  671.  
  672. class CImageList : public CObject
  673. {
  674.     DECLARE_DYNCREATE(CImageList)
  675.  
  676. // Constructors
  677. public:
  678.     CImageList();
  679.     BOOL Create(int cx, int cy, BOOL bMask, int nInitial, int nGrow);
  680.     BOOL Create(UINT nBitmapID, int cx, int nGrow, COLORREF crMask);
  681.     BOOL Create(LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask);
  682.     BOOL Create(CImageList& imagelist1, int nImage1, CImageList& imagelist2,
  683.         int nImage2, int dx, int dy);
  684.  
  685. // Attributes
  686.     HIMAGELIST m_hImageList;            // must be first data member
  687.     operator HIMAGELIST() const;
  688.     HIMAGELIST GetSafeHandle() const;
  689.  
  690.     static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);
  691.     static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);
  692.     static void PASCAL DeleteTempMap();
  693.     BOOL Attach(HIMAGELIST hImageList);
  694.     HIMAGELIST Detach();
  695.  
  696.     int GetImageCount() const;
  697.     COLORREF SetBkColor(COLORREF cr);
  698.     COLORREF GetBkColor() const;
  699.     BOOL GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const;
  700.  
  701. // Operations
  702.     BOOL DeleteImageList();
  703.  
  704.     int Add(CBitmap* pbmImage, CBitmap* pbmMask);
  705.     int Add(CBitmap* pbmImage, COLORREF crMask);
  706.     BOOL Remove(int nImage);
  707.     BOOL Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask);
  708.     int  Add(HICON hIcon);
  709.     int  Replace(int nImage, HICON hIcon);
  710.     HICON ExtractIcon(int nImage);
  711.     BOOL Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle);
  712.     BOOL SetOverlayImage(int nImage, int nOverlay);
  713.  
  714. #ifndef _AFX_NO_OLE_SUPPORT
  715.     BOOL Read(CArchive* pArchive);
  716.     BOOL Write(CArchive* pArchive);
  717. #endif
  718.  
  719. // Drag APIs
  720.     BOOL BeginDrag(int nImage, CPoint ptHotSpot);
  721.     static void PASCAL EndDrag();
  722.     static BOOL PASCAL DragMove(CPoint pt);
  723.     BOOL SetDragCursorImage(int nDrag, CPoint ptHotSpot);
  724.     static BOOL PASCAL DragShowNolock(BOOL bShow);
  725.     static CImageList* PASCAL GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot);
  726.     static BOOL PASCAL DragEnter(CWnd* pWndLock, CPoint point);
  727.     static BOOL PASCAL DragLeave(CWnd* pWndLock);
  728.  
  729. // Implementation
  730. public:
  731.     virtual ~CImageList();
  732. #ifdef _DEBUG
  733.     virtual void Dump(CDumpContext& dc) const;
  734.     virtual void AssertValid() const;
  735. #endif
  736. };
  737.  
  738. /////////////////////////////////////////////////////////////////////////////
  739. // CToolBarCtrl
  740.  
  741. class CToolBarCtrl : public CWnd
  742. {
  743.     DECLARE_DYNAMIC(CToolBarCtrl)
  744. // Construction
  745. public:
  746.     CToolBarCtrl();
  747.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  748.  
  749. // Attributes
  750. public:
  751.     BOOL IsButtonEnabled(int nID) const;
  752.     BOOL IsButtonChecked(int nID) const;
  753.     BOOL IsButtonPressed(int nID) const;
  754.     BOOL IsButtonHidden(int nID) const;
  755.     BOOL IsButtonIndeterminate(int nID) const;
  756.     BOOL SetState(int nID, UINT nState);
  757.     int GetState(int nID) const;
  758.     BOOL GetButton(int nIndex, LPTBBUTTON lpButton) const;
  759.     int GetButtonCount() const;
  760.     BOOL GetItemRect(int nIndex, LPRECT lpRect) const;
  761.     void SetButtonStructSize(int nSize);
  762.     BOOL SetButtonSize(CSize size);
  763.     BOOL SetBitmapSize(CSize size);
  764.     CToolTipCtrl* GetToolTips() const;
  765.     void SetToolTips(CToolTipCtrl* pTip);
  766.     void SetOwner(CWnd* pWnd);
  767.     void SetRows(int nRows, BOOL bLarger, LPRECT lpRect);
  768.     int GetRows() const;
  769.     BOOL SetCmdID(int nIndex, UINT nID);
  770.     UINT GetBitmapFlags() const;
  771.  
  772. // Operations
  773. public:
  774.     BOOL EnableButton(int nID, BOOL bEnable = TRUE);
  775.     BOOL CheckButton(int nID, BOOL bCheck = TRUE);
  776.     BOOL PressButton(int nID, BOOL bPress = TRUE);
  777.     BOOL HideButton(int nID, BOOL bHide = TRUE);
  778.     BOOL Indeterminate(int nID, BOOL bIndeterminate = TRUE);
  779.     int AddBitmap(int nNumButtons, UINT nBitmapID);
  780.     int AddBitmap(int nNumButtons, CBitmap* pBitmap);
  781.     BOOL AddButtons(int nNumButtons, LPTBBUTTON lpButtons);
  782.     BOOL InsertButton(int nIndex, LPTBBUTTON lpButton);
  783.     BOOL DeleteButton(int nIndex);
  784.     UINT CommandToIndex(UINT nID) const;
  785.     void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
  786.         LPCTSTR lpszValueName);
  787.     void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
  788.         LPCTSTR lpszValueName);
  789.  
  790.     void Customize();
  791.     int AddString(UINT nStringID);
  792.     int AddStrings(LPCTSTR lpszStrings);
  793.     void AutoSize();
  794.  
  795. // Implementation
  796. public:
  797.     virtual ~CToolBarCtrl();
  798.  
  799. protected:
  800.     //{{AFX_MSG(CToolBarCtrl)
  801.     afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  802.     //}}AFX_MSG
  803.     DECLARE_MESSAGE_MAP()
  804. };
  805.  
  806. #ifndef _AFX_NO_RICHEDIT_SUPPORT
  807. /////////////////////////////////////////////////////////////////////////////
  808. // CRichEditCtrl
  809.  
  810. class CRichEditCtrl : public CWnd
  811. {
  812.     DECLARE_DYNAMIC(CRichEditCtrl)
  813.  
  814. // Constructors
  815. public:
  816.     CRichEditCtrl();
  817.     BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  818.  
  819. // Attributes
  820.     BOOL CanUndo() const;
  821.     int GetLineCount() const;
  822.     BOOL GetModify() const;
  823.     void SetModify(BOOL bModified = TRUE);
  824.     void GetRect(LPRECT lpRect) const;
  825.     CPoint GetCharPos(long lChar) const;
  826.     void SetOptions(WORD wOp, DWORD dwFlags);
  827.  
  828.     // NOTE: first word in lpszBuffer must contain the size of the buffer!
  829.     int GetLine(int nIndex, LPTSTR lpszBuffer) const;
  830.     int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
  831.  
  832.     BOOL CanPaste(UINT nFormat = 0) const;
  833.     void GetSel(long& nStartChar, long& nEndChar) const;
  834.     void GetSel(CHARRANGE &cr) const;
  835.     void LimitText(long nChars = 0);
  836.     long LineFromChar(long nIndex) const;
  837.     void SetSel(long nStartChar, long nEndChar);
  838.     void SetSel(CHARRANGE &cr);
  839.     DWORD GetDefaultCharFormat(CHARFORMAT &cf) const;
  840.     DWORD GetSelectionCharFormat(CHARFORMAT &cf) const;
  841.     long GetEventMask() const;
  842.     long GetLimitText() const;
  843.     DWORD GetParaFormat(PARAFORMAT &pf) const;
  844.     // richedit EM_GETSELTEXT is ANSI
  845.     long GetSelText(LPSTR lpBuf) const;
  846.     CString GetSelText() const;
  847.     WORD GetSelectionType() const;
  848.     COLORREF SetBackgroundColor(BOOL bSysColor, COLORREF cr);
  849.     BOOL SetDefaultCharFormat(CHARFORMAT &cf);
  850.     BOOL SetSelectionCharFormat(CHARFORMAT &cf);
  851.     BOOL SetWordCharFormat(CHARFORMAT &cf);
  852.     DWORD SetEventMask(DWORD dwEventMask);
  853.     BOOL SetParaFormat(PARAFORMAT &pf);
  854.     BOOL SetTargetDevice(HDC hDC, long lLineWidth);
  855.     BOOL SetTargetDevice(CDC &dc, long lLineWidth);
  856.     long GetTextLength() const;
  857.     BOOL SetReadOnly(BOOL bReadOnly = TRUE);
  858.     int GetFirstVisibleLine() const;
  859.  
  860. // Operations
  861.     void EmptyUndoBuffer();
  862.  
  863.     int LineIndex(int nLine = -1) const;
  864.     int LineLength(int nLine = -1) const;
  865.     void LineScroll(int nLines, int nChars = 0);
  866.     void ReplaceSel(LPCTSTR lpszNewText);
  867.     void SetRect(LPCRECT lpRect);
  868.  
  869.     BOOL DisplayBand(LPRECT pDisplayRect);
  870.     long FindText(DWORD dwFlags, FINDTEXTEX* pFindText) const;
  871.     long FormatRange(FORMATRANGE* pfr, BOOL bDisplay = TRUE);
  872.     void HideSelection(BOOL bHide, BOOL bPerm);
  873.     void PasteSpecial(UINT nClipFormat, DWORD dvAspect = 0, HMETAFILE hMF = 0);
  874.     void RequestResize();
  875.     long StreamIn(int nFormat, EDITSTREAM &es);
  876.     long StreamOut(int nFormat, EDITSTREAM &es);
  877.  
  878.     // Clipboard operations
  879.     BOOL Undo();
  880.     void Clear();
  881.     void Copy();
  882.     void Cut();
  883.     void Paste();
  884.  
  885. // OLE support
  886.     IRichEditOle* GetIRichEditOle() const;
  887.     BOOL SetOLECallback(IRichEditOleCallback* pCallback);
  888.  
  889. // Implementation
  890. public:
  891.     virtual ~CRichEditCtrl();
  892.     LRESULT Send32s(UINT nMsg, WPARAM wParam, LPARAM lParam) const;
  893. };
  894. #endif //!_AFX_NO_RICHEDIT_SUPPORT
  895. /////////////////////////////////////////////////////////////////////////////
  896. // Inline function declarations
  897.  
  898. #ifdef _AFX_PACKING
  899. #pragma pack(pop)
  900. #endif
  901.  
  902. #ifdef _AFX_ENABLE_INLINES
  903. #define _AFXCMN_INLINE inline
  904. #include <afxcmn.inl>
  905. #undef _AFXCMN_INLINE
  906. #endif
  907.  
  908. #undef AFX_DATA
  909. #define AFX_DATA
  910.  
  911. #ifdef _AFX_MINREBUILD
  912. #pragma component(minrebuild, on)
  913. #endif
  914. #ifndef _AFX_FULLTYPEINFO
  915. #pragma component(mintypeinfo, off)
  916. #endif
  917.  
  918. #endif //__AFXCMN_H__
  919.  
  920. /////////////////////////////////////////////////////////////////////////////
  921.