PageHyperLinks.cpp
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:7k
源码类别:

界面编程

开发平台:

Visual C++

  1. // PageHyperLinks.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "profuis_controls.h"
  5. #include "PageHyperLinks.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. #define IDC_HAND MAKEINTRESOURCE(32649)
  12. #define __URL_WWW _T("www.prof-uis.com")
  13. #define __URL_E_MAIL _T("info@prof-uis.com")
  14. #define __TOOLTIP_WWW _T("Learn more about Prof-UIS")
  15. #define __TOOLTIP_E_MAIL _T("Contact us if you have any questions")
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CPageHyperLinks dialog
  18. CPageHyperLinks::CPageHyperLinks(CWnd* pParent /*=NULL*/)
  19. : CPageBase(CPageHyperLinks::IDD, pParent)
  20. , m_bInitComplete( false )
  21. {
  22. //{{AFX_DATA_INIT(CPageHyperLinks)
  23. //}}AFX_DATA_INIT
  24. }
  25. void CPageHyperLinks::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CPageBase::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CPageHyperLinks)
  29. DDX_Control(pDX, IDC_LINK_SHOW_FOCUS, m_wndLinkShowFocus);
  30. DDX_Control(pDX, IDC_LINK_ENABLE, m_wndLinkEnable);
  31. DDX_Control(pDX, IDC_LINK_CURSOR, m_wndLinkCursor);
  32. DDX_Control(pDX, IDC_LINK_URL, m_wndLinkURL);
  33. DDX_Control(pDX, IDC_LINK_CAPTION, m_wndLinkCaption);
  34. DDX_Control(pDX, IDC_STATIC_URL, m_wndLabelURL);
  35. DDX_Control(pDX, IDC_STATIC_CAPTION, m_wndLabelCaption);
  36. DDX_Control(pDX, IDC_STATIC_TOOLTIP, m_wndLabelTooltip);
  37. DDX_Control(pDX, IDC_STATIC_CURSOR, m_wndLabelCursor);
  38. DDX_Control(pDX, IDC_LINK_UNDERLINE, m_wndLinkUnderline);
  39. DDX_Control(pDX, IDC_LINK_TOOLTIP, m_wndLinkTooltip);
  40. DDX_Control(pDX, IDC_LINK_COLOR_VISITED, m_wndLinkColorVisited);
  41. DDX_Control(pDX, IDC_LINK_COLOR_HOVER, m_wndLinkColorHover);
  42. DDX_Control(pDX, IDC_LINK_COLOR, m_wndLinkColor);
  43. DDX_Control(pDX, IDC_HYPER_LINK2, m_wndHyperLink2);
  44. DDX_Control(pDX, IDC_HYPER_LINK1, m_wndHyperLink1);
  45. //}}AFX_DATA_MAP
  46. }
  47. BEGIN_MESSAGE_MAP(CPageHyperLinks, CPageBase)
  48. //{{AFX_MSG_MAP(CPageHyperLinks)
  49. ON_CBN_SELENDOK(IDC_LINK_CURSOR, OnSelendokLinkCursor)
  50. //}}AFX_MSG_MAP
  51. ON_REGISTERED_MESSAGE(
  52. CExtPopupColorMenuWnd::g_nMsgNotifyColorChangedFinally,
  53. OnColorChangedFinally
  54. )
  55. END_MESSAGE_MAP()
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CPageHyperLinks message handlers
  58. BOOL CPageHyperLinks::OnInitDialog() 
  59. {
  60. CPageBase::OnInitDialog();
  61. m_wndLinkColor.m_lParamCookie = LPARAM(IDC_LINK_COLOR);
  62. m_wndLinkColorHover.m_lParamCookie = LPARAM(IDC_LINK_COLOR_HOVER);
  63. m_wndLinkColorVisited.m_lParamCookie = LPARAM(IDC_LINK_COLOR_VISITED);
  64. m_wndLinkColorVisited.m_clrDefault = 
  65. m_wndLinkColorVisited.m_clrSelected = m_wndHyperLink1.GetTextColorVisited();
  66. m_wndLinkColorHover.m_clrDefault = 
  67. m_wndLinkColorHover.m_clrSelected = m_wndHyperLink1.GetTextColorHover();
  68. m_wndLinkColor.m_clrDefault = 
  69. m_wndLinkColor.m_clrSelected = m_wndHyperLink1.GetTextColorNormal();
  70. m_wndLinkColorVisited.SetDrawFocusRect( TRUE );
  71. m_wndLinkColorHover.SetDrawFocusRect( TRUE );
  72. m_wndLinkColor.SetDrawFocusRect( TRUE );
  73. m_wndLinkColorVisited.SetFlat( TRUE );
  74. m_wndLinkColorHover.SetFlat( TRUE );
  75. m_wndLinkColor.SetFlat( TRUE );
  76. m_wndLinkUnderline.SetCheck( m_wndHyperLink1.GetTextUnderline() != false );
  77. int nIndex = 0;
  78. int nInitSel = 0;
  79. nIndex = m_wndLinkCursor.AddString( _T("Default") );
  80. m_wndLinkCursor.SetItemData( nIndex, 0 );
  81. nInitSel = nIndex = m_wndLinkCursor.AddString( _T("Hand") );
  82. m_wndLinkCursor.SetItemData( nIndex, (DWORD)IDC_HAND);
  83. nIndex = m_wndLinkCursor.AddString( _T("Cross") );
  84. m_wndLinkCursor.SetItemData( nIndex, (DWORD)IDC_CROSS);
  85. nIndex = m_wndLinkCursor.AddString( _T("UpArrow") );
  86. m_wndLinkCursor.SetItemData( nIndex, (DWORD)IDC_UPARROW);
  87. nIndex = m_wndLinkCursor.AddString( _T("Wait") );
  88. m_wndLinkCursor.SetItemData( nIndex, (DWORD)IDC_WAIT);
  89. nIndex = m_wndLinkCursor.AddString( _T("SizeAll") );
  90. m_wndLinkCursor.SetItemData( nIndex, (DWORD)IDC_SIZEALL);
  91. m_wndLinkCursor.SetCurSel( nInitSel );
  92. CheckDlgButton( IDC_LINK_ENABLE, BST_CHECKED );
  93. m_wndHyperLink1.m_strURL = _T("http://");
  94. m_wndHyperLink1.m_strURL += __URL_WWW;
  95. m_wndHyperLink1.SetTooltipText( m_wndHyperLink1.m_strURL );
  96. m_wndLinkCaption.SetWindowText( __TOOLTIP_WWW );
  97. m_wndLinkURL.SetWindowText( m_wndHyperLink1.m_strURL );
  98. m_wndLinkTooltip.SetWindowText( __TOOLTIP_WWW );
  99. m_wndHyperLink2.m_strURL = _T("mailto:");
  100. m_wndHyperLink2.m_strURL += __URL_E_MAIL;
  101. m_wndHyperLink2.SetTooltipText( __TOOLTIP_E_MAIL );
  102. m_bInitComplete = true;
  103. OnCmdMsg( IDC_LINK_ENABLE, CN_COMMAND, NULL, NULL );
  104. OnCmdMsg( IDC_LINK_SHOW_FOCUS, CN_COMMAND, NULL, NULL );
  105. OnCmdMsg( IDC_LINK_UNDERLINE, CN_COMMAND, NULL, NULL );
  106. OnCmdMsg( IDC_LINK_TOOLTIP, EN_CHANGE, NULL, NULL );
  107. return TRUE;
  108. }
  109. //////////////////////////////////////////////////////////////////////////
  110. BOOL CPageHyperLinks::OnCmdMsg(UINT nID, INT nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
  111. {
  112. if( !m_bInitComplete )
  113. return CPageBase::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  114. if( nCode == EN_CHANGE )
  115. {
  116. CString sText;
  117. switch( nID )
  118. {
  119. case IDC_LINK_TOOLTIP:
  120. m_wndLinkTooltip.GetWindowText( sText );
  121. m_wndHyperLink1.SetTooltipText( LPCTSTR(sText) );
  122. break;
  123. case IDC_LINK_CAPTION:
  124. m_wndLinkCaption.GetWindowText( sText );
  125. m_wndHyperLink1.SetWindowText( LPCTSTR(sText) );
  126. break;
  127. case IDC_LINK_URL:
  128. m_wndLinkURL.GetWindowText( sText );
  129. m_wndHyperLink1.m_strURL = LPCTSTR(sText);
  130. break;
  131. default:
  132. return CPageBase::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  133. }
  134. return TRUE;
  135. }
  136. if( nCode == CN_COMMAND )
  137. {
  138. BOOL bChecked = FALSE;
  139. switch( nID )
  140. {
  141. case IDC_LINK_ENABLE:
  142. bChecked = IsDlgButtonChecked( nID );
  143. m_wndHyperLink1.EnableWindow( bChecked );
  144. m_wndHyperLink2.EnableWindow( bChecked );
  145. break;
  146. case IDC_LINK_SHOW_FOCUS:
  147. bChecked = IsDlgButtonChecked( nID );
  148. m_wndHyperLink1.SetDrawFocusRect( bChecked );
  149. m_wndHyperLink2.SetDrawFocusRect( bChecked );
  150. break;
  151. case IDC_LINK_UNDERLINE:
  152. bChecked = IsDlgButtonChecked( nID );
  153. m_wndHyperLink1.SetTextUnderline( bChecked != FALSE );
  154. m_wndHyperLink2.SetTextUnderline( bChecked != FALSE );
  155. break;
  156. default:
  157. return CPageBase::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  158. }
  159. return TRUE;
  160. }
  161. return CPageBase::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  162. }
  163. //////////////////////////////////////////////////////////////////////////
  164. LRESULT CPageHyperLinks::OnColorChangedFinally(WPARAM wParam, LPARAM lParam)
  165. {
  166. COLORREF clrColor = COLORREF(wParam);
  167. switch( lParam )
  168. {
  169. case IDC_LINK_COLOR:
  170. m_wndHyperLink1.SetTextColorNormal( clrColor );
  171. m_wndHyperLink2.SetTextColorNormal( clrColor );
  172. break;
  173. case IDC_LINK_COLOR_HOVER:
  174. m_wndHyperLink1.SetTextColorHover( clrColor );
  175. m_wndHyperLink2.SetTextColorHover( clrColor );
  176. break;
  177. case IDC_LINK_COLOR_VISITED:
  178. m_wndHyperLink1.SetTextColorVisited( clrColor );
  179. m_wndHyperLink2.SetTextColorVisited( clrColor );
  180. break;
  181. default:
  182. break;
  183. } // switch( lParam )
  184. return 0;
  185. }
  186. //////////////////////////////////////////////////////////////////////////
  187. void CPageHyperLinks::OnSelendokLinkCursor() 
  188. {
  189. int nCurSel = m_wndLinkCursor.GetCurSel();
  190. int nCursorType = int( m_wndLinkCursor.GetItemData( nCurSel ) );
  191. if( nCursorType == 0 )
  192. nCursorType = -1;
  193. m_wndHyperLink1.SetBtnCursor( nCursorType );
  194. m_wndHyperLink2.SetBtnCursor( nCursorType );
  195. }