hlinkctl.h
上传用户:onward9999
上传日期:2022-06-27
资源大小:989k
文件大小:5k
源码类别:

其他游戏

开发平台:

Visual C++

  1. /*
  2. Module : HLINKCTRL.H
  3. Purpose: Interface for a MFC class for a static text control class with hyperlink support
  4. Created: PJN / HLINK/1 / 16-06-1997
  5. History: PJN           / 11-09-1997 Added support for a highlight color
  6. Copyright (c) 1997 by PJ Naughter.  
  7. All rights reserved.
  8. */
  9. /////////////////////////// Macros ///////////////////////////
  10. #ifndef __HLINKCTRL_H__
  11. #define __HLINKCTRL_H__
  12. /////////////////////////// Classes /////////////////////////////////
  13. class CHLinkCtrl : public CStatic
  14. {
  15. public:
  16. //Constructors / Destructors
  17. CHLinkCtrl();
  18. virtual ~CHLinkCtrl();
  19. //Set or get the hyperlink to use
  20. void SetHyperLink(const CString& sActualLink);
  21. CString GetActualHyperLink() const { return m_sActualLink; };
  22.   //Set or get the hyperlink description (really just the static's window text)
  23.   void SetHyperLinkDescription(const CString& sDescription);
  24.   CString GetHyperLinkDescription() const;
  25. //Set or get the hyperlink color 
  26. void SetLinkColor(const COLORREF& color);
  27. COLORREF GetLinkColor() { return m_Color; };
  28. //Set or get the hyperlink color for visited links
  29. void SetVisitedLinkColor(const COLORREF& color);
  30. COLORREF GetVisitedLinkColor() { return m_VisitedColor; };
  31. //Set or get the hyperlink color for highlighted links
  32. void SetHighlightLinkColor(const COLORREF& color);
  33. COLORREF GetHighlightLinkColor() { return m_HighlightColor; };
  34.   void SetUseHighlightColor(BOOL bUseHighlight) { m_bUseHighlight = bUseHighlight; };
  35. //Gets whether the hyperlink has been visited
  36. BOOL GetVisited() { return m_State == ST_VISITED; };
  37.   //Set or get whether the control should display a context menu
  38.   void SetAllowContextMenu(BOOL bAllowContextMenu) { m_bAllowContextMenu = bAllowContextMenu; };
  39.   BOOL GetAllowContextMenu() const { return m_bAllowContextMenu; };
  40.   //Gets whether the window is automatically adjusted to 
  41.   //the size of the description text displayed
  42. BOOL GetShrinkToFit() { return m_bShrinkToFit; }
  43.   //Saves the hyperlink to an actual shortcut on file
  44. #ifndef HLINK_NOOLE
  45.   BOOL Save(const CString& sFilename) const;
  46. #endif
  47. #ifndef HLINK_NOOLE
  48.   //Saves the hyperlink to the favorites folder
  49.   BOOL AddToFavorites() const;
  50. #endif
  51. #ifndef HLINK_NOOLE
  52.   //Saves the hyperlink to the desktop folder
  53.   BOOL AddToDesktop() const;
  54. #endif
  55.   //Displays the properties dialog for this URL
  56.   void ShowProperties() const;
  57.   //Connects to the URL
  58.   BOOL Open() const;
  59. protected:
  60.   enum State
  61.   {
  62.     ST_NOT_VISITED,
  63.     ST_VISITED,
  64.     ST_HIGHLIGHTED
  65.   };
  66. //{{AFX_VIRTUAL(CHLinkCtrl)
  67. //}}AFX_VIRTUAL
  68. //{{AFX_MSG(CHLinkCtrl)
  69. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  70. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  71. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  72. afx_msg void OnCopyShortcut();
  73. afx_msg void OnProperties();
  74.   afx_msg void OnOpen();
  75.   afx_msg void OnContextMenu(CWnd*, CPoint point);
  76. //}}AFX_MSG
  77. afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
  78. #ifndef HLINK_NOOLE
  79. afx_msg void OnAddToFavorites();
  80.   afx_msg void OnAddToDesktop();
  81. #endif
  82. void SetActualHyperLink(const CString& sActualLink);
  83. void HighLight(BOOL state);
  84. #ifndef HLINK_NOOLE
  85.   BOOL AddToSpecialFolder(int nFolder) const;
  86.   BOOL OpenUsingCom() const;
  87. #endif
  88.   BOOL OpenUsingShellExecute() const;
  89. CString  m_sLinkDescription;
  90. CString  m_sActualLink;
  91. HCURSOR  m_hLinkCursor;
  92.   HCURSOR  m_hArrowCursor;
  93. COLORREF m_Color;
  94. COLORREF m_VisitedColor;
  95.   COLORREF m_HighlightColor;
  96. BOOL     m_bShrinkToFit;
  97.   BOOL     m_bUseHighlight;
  98.   State    m_State;
  99.   State    m_OldState;
  100.   BOOL     m_bShowingContext;
  101.   CFont    m_font;
  102.   BOOL     m_bAllowContextMenu;
  103. DECLARE_MESSAGE_MAP()
  104. };
  105. /*class CHLinkPage : public CPropertyPage
  106. {
  107. public:
  108. CHLinkPage();
  109. ~CHLinkPage();
  110.   void SetBuddy(const CHLinkCtrl* pBuddy) { m_pBuddy = pBuddy; };
  111. //{{AFX_DATA(CHLinkPage)
  112. enum { IDD = IDD_HLINK_PROPERTIES };
  113. //}}AFX_DATA
  114. protected:
  115. //{{AFX_VIRTUAL(CHLinkPage)
  116. protected:
  117. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  118. //}}AFX_VIRTUAL
  119. DECLARE_DYNCREATE(CHLinkPage)
  120. //{{AFX_MSG(CHLinkPage)
  121. virtual BOOL OnInitDialog();
  122. //}}AFX_MSG
  123. DECLARE_MESSAGE_MAP()
  124.   const CHLinkCtrl* m_pBuddy;
  125. };
  126. class CHLinkSheet : public CPropertySheet
  127. {
  128. public:
  129. CHLinkSheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
  130. CHLinkSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
  131. virtual ~CHLinkSheet();
  132.   void SetBuddy(const CHLinkCtrl* pBuddy) { m_page1.SetBuddy(pBuddy); };
  133. protected:
  134. //{{AFX_VIRTUAL(CHLinkSheet)
  135. //}}AFX_VIRTUAL
  136. DECLARE_DYNAMIC(CHLinkSheet)
  137. //{{AFX_MSG(CHLinkSheet)
  138. //}}AFX_MSG
  139. DECLARE_MESSAGE_MAP()
  140.   CHLinkPage  m_page1;
  141. };
  142. */
  143. #endif //__HLINKCTRL_H__