// WebLinkButton.cpp : implementation file // #include "precompiled.h" #include "stdafx.h" #include "ScEd.h" #include "WebLinkButton.h" ///////////////////////////////////////////////////////////////////////////// // CWebLinkButton CWebLinkButton::CWebLinkButton() : m_Clicked(FALSE), m_HandCursor(0) { } CWebLinkButton::~CWebLinkButton() { } BEGIN_MESSAGE_MAP(CWebLinkButton, CButton) //{{AFX_MSG_MAP(CWebLinkButton) ON_CONTROL_REFLECT(BN_CLICKED, OnClicked) ON_WM_MOUSEMOVE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CWebLinkButton message handlers void CWebLinkButton::OnClicked() { m_Clicked=TRUE; CString url("http://"); url+=m_Address; ShellExecute(NULL,"open",(LPCTSTR) url,NULL,NULL,SW_SHOW); } void CWebLinkButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); CRect rect = lpDrawItemStruct->rcItem; if (m_Address.GetLength()>0) { // get a LOGFONT for current font, but underlined CFont* font=GetFont(); LOGFONT logFont; font->GetLogFont(&logFont); logFont.lfUnderline=TRUE; // build font from this, select into DC CFont newfont; newfont.CreateFontIndirect(&logFont); CFont* oldfont=pDC->SelectObject(&newfont); // draw text pDC->SetTextColor(m_Clicked ? RGB(0,0,128) : RGB(0,0,255)); pDC->TextOut(rect.left,(rect.bottom+rect.top)/2,m_Address); // restore old font pDC->SelectObject(&oldfont); } } void CWebLinkButton::OnMouseMove(UINT nFlags, CPoint point) { if (!m_HandCursor){//!m_MouseHovering) { m_HandCursor=AfxGetApp()->LoadStandardCursor(MAKEINTRESOURCE(32649)); if (!m_HandCursor) { // ack - couldn't get the hand : must be running on Win95/Win98 (unsupported?) .. just // use any difference cursor for the minute m_HandCursor=AfxGetApp()->LoadStandardCursor(IDC_UPARROW); } } ::SetCursor(m_HandCursor); }