00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #pragma once
00023
00024
00025
00026 class CHyperlink : public CString {
00027 public:
00028 CHyperlink(LPCTSTR lpLink = NULL) : CString(lpLink) { }
00029 ~CHyperlink() { }
00030 const CHyperlink& operator=(LPCTSTR lpsz) {
00031 CString::operator=(lpsz);
00032 return *this;
00033 }
00034 operator LPCTSTR() {
00035 return CString::operator LPCTSTR();
00036 }
00037 virtual HINSTANCE Navigate() {
00038 return IsEmpty() ? NULL :
00039 ShellExecute(0, _T("open"), *this, 0, 0, SW_SHOWNORMAL);
00040 }
00041 };
00042
00043
00044
00045 class CStaticLink : public CStatic
00046 {
00047 public:
00048 DECLARE_DYNAMIC(CStaticLink)
00049 CStaticLink(LPCTSTR lpText = NULL, BOOL bDeleteOnDestroy=FALSE);
00050 ~CStaticLink() { }
00051
00052
00053
00054 CHyperlink m_link;
00055 COLORREF m_color;
00056
00057
00058
00059 static COLORREF g_colorUnvisited;
00060 static COLORREF g_colorVisited;
00061
00062
00063
00064
00065 static HCURSOR g_hCursorLink;
00066
00067 protected:
00068 CFont m_font;
00069 BOOL m_bDeleteOnDestroy;
00070
00071 virtual void PostNcDestroy();
00072
00073
00074 DECLARE_MESSAGE_MAP()
00075 afx_msg LRESULT OnNcHitTest(CPoint point);
00076 afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
00077 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
00078 afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
00079 };
00080
00081