⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01_9_12_14.asp.html

📁 有用的VC教程,包括编程思想编程技巧程序效率等方面的指导
💻 HTML
📖 第 1 页 / 共 3 页
字号:
</td></tr></table><table width=100% ><tr><td class=a14>
	DECLARE_MESSAGE_MAP()</td></tr></table><table width=100% ><tr><td class=a14>
private:</td></tr></table><table width=100% ><tr><td class=a14>
BOOL m_bcaptured;             //捕捉鼠标移动</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF m_clickedtextcor;    //单击超联接后文本的颜色</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF m_moveontextcor;    //鼠标移动到超联接时的文本的颜色</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF m_ordinarytextcor;   //未激活超联接时文本的颜色</td></tr></table><table width=100% ><tr><td class=a14>
LOGFONT		m_lf;          </td></tr></table><table width=100% ><tr><td class=a14>
CFont		m_font;      //超联接上的文本的字体</td></tr></table><table width=100% ><tr><td class=a14>
};</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table>
  <table width=100% >
    <tr> 
      <td class=a14><b> 二、为类编写实现文件 </b></td>
    </tr>
  </table>
  <table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
      <td class=a14> 在类的两个重载构造函数中完成类的初始化工作 </td>
    </tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CSuperLinkCtrl::CSuperLinkCtrl()</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
	m_bClicked=FALSE;     </td></tr></table><table width=100% ><tr><td class=a14>
	m_bcaptured=FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
	m_clickedtextcor=RGB(0,255,255);</td></tr></table><table width=100% ><tr><td class=a14>
	m_moveontextcor=RGB(0,255,0);</td></tr></table><table width=100% ><tr><td class=a14>
	m_ordinarytextcor=RGB(0,0,255);</td></tr></table><table width=100% ><tr><td class=a14>
m_crText=m_ordinarytextcor;    </td></tr></table><table width=100% ><tr><td class=a14>
 // 设置初始化字体颜色</td></tr></table><table width=100% ><tr><td class=a14>
	::GetObject((HFONT)GetStockObject</td></tr></table><table width=100% ><tr><td class=a14>
(DEFAULT_GUI_FONT),sizeof(m_lf),&m_lf); </td></tr></table><table width=100% ><tr><td class=a14>
 //取得当前的缺省字体</td></tr></table><table width=100% ><tr><td class=a14>
m_lf.lfUnderline = TRUE;     </td></tr></table><table width=100% ><tr><td class=a14>
//为当前缺省字体加入下划线</td></tr></table><table width=100% ><tr><td class=a14>
	BOOL bCreated = m_font.CreateFontIndirect(&m_lf); </td></tr></table><table width=100% ><tr><td class=a14>
 // 创建超联接字体</td></tr></table><table width=100% ><tr><td class=a14>
	ASSERT(bCreated);</td></tr></table><table width=100% ><tr><td class=a14>
	m_hCursor=NULL;       </td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CSuperLinkCtrl::CSuperLinkCtrl(COLORREF</td></tr></table><table width=100% ><tr><td class=a14>
clickedtextcor,COLORREF </td></tr></table><table width=100% ><tr><td class=a14>
moveontextcor,COLORREF ordinarytextcor)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
	m_bClicked=FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
	m_bcaptured=FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
	m_clickedtextcor=clickedtextcor;</td></tr></table><table width=100% ><tr><td class=a14>
	m_moveontextcor=moveontextcor;</td></tr></table><table width=100% ><tr><td class=a14>
	m_ordinarytextcor=ordinarytextcor;</td></tr></table><table width=100% ><tr><td class=a14>
m_crText=m_ordinarytextcor;       </td></tr></table><table width=100% ><tr><td class=a14>
 // 设置初始化字体颜色</td></tr></table><table width=100% ><tr><td class=a14>
	::GetObject((HFONT)GetStockObject</td></tr></table><table width=100% ><tr><td class=a14>
(DEFAULT_GUI_FONT),sizeof(m_lf),&m_lf); </td></tr></table><table width=100% ><tr><td class=a14>
  //取得当前的缺省字体</td></tr></table><table width=100% ><tr><td class=a14>
m_lf.lfUnderline = TRUE;      </td></tr></table><table width=100% ><tr><td class=a14>
   //为当前缺省字体加入下划线</td></tr></table><table width=100% ><tr><td class=a14>
	BOOL bCreated = m_font.CreateFontIndirect(&m_lf); </td></tr></table><table width=100% ><tr><td class=a14>
  // 创建超联接字体</td></tr></table><table width=100% ><tr><td class=a14>
	ASSERT(bCreated);</td></tr></table><table width=100% ><tr><td class=a14>
    m_hCursor=NULL;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
在类的析构函数中删除在类的构造函数中创建的字体</td></tr></table><table width=100% ><tr><td class=a14>
CSuperLinkCtrl::~CSuperLinkCtrl()</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
	m_font.DeleteObject();   </td></tr></table><table width=100% ><tr><td class=a14>
  //删除在类的构造函数中创建的字体</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
用classwizard为类加入如下消息映射并编写消息映射函数</td></tr></table><table width=100% ><tr><td class=a14>
BEGIN_MESSAGE_MAP(CSuperLinkCtrl, CStatic)</td></tr></table><table width=100% ><tr><td class=a14>
	//{{AFX_MSG_MAP(CSuperLinkCtrl)</td></tr></table><table width=100% ><tr><td class=a14>
	ON_WM_CTLCOLOR_REFLECT()</td></tr></table><table width=100% ><tr><td class=a14>
	ON_WM_LBUTTONDOWN()</td></tr></table><table width=100% ><tr><td class=a14>
	ON_WM_SETCURSOR()</td></tr></table><table width=100% ><tr><td class=a14>
	ON_WM_MOUSEMOVE()</td></tr></table><table width=100% ><tr><td class=a14>
	//}}AFX_MSG_MAP</td></tr></table><table width=100% ><tr><td class=a14>
END_MESSAGE_MAP()</td></tr></table><table width=100% ><tr><td class=a14>
编写消息映射函数CtlColor()用于实现超联接文本颜色的变化</td></tr></table><table width=100% ><tr><td class=a14>
HBRUSH CSuperLinkCtrl::CtlColor(CDC* pDC, UINT nCtlColor) </td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
	// TODO: Change any attributes of the DC here</td></tr></table><table width=100% ><tr><td class=a14>
	if (CTLCOLOR_STATIC == nCtlColor)</td></tr></table><table width=100% ><tr><td class=a14>
	{</td></tr></table><table width=100% ><tr><td class=a14>
		pDC->SelectObject(&m_font);</td></tr></table><table width=100% ><tr><td class=a14>
		pDC->SetTextColor(m_crText);</td></tr></table><table width=100% ><tr><td class=a14>
		pDC->SetBkMode(TRANSPARENT);</td></tr></table><table width=100% ><tr><td class=a14>
	}</td></tr></table><table width=100% ><tr><td class=a14>
HBRUSH hBrush = ::CreateSolidBrush</td></tr></table><table width=100% ><tr><td class=a14>
(GetSysColor(COLOR_3DFACE));  //创建一个刷子句柄</td></tr></table><table width=100% ><tr><td class=a14>
return hBrush;  // 返回一个用来画控件背景的刷子句柄</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
实现鼠标按下左键消息</td></tr></table><table width=100% ><tr><td class=a14>
void CSuperLinkCtrl::OnLButtonDown</td></tr></table><table width=100% ><tr><td class=a14>
(UINT nFlags, CPoint point) </td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
	// TODO: Add your message handler </td></tr></table><table width=100% ><tr><td class=a14>
code here and/or call default</td></tr></table><table width=100% ><tr><td class=a14>
m_bClicked=TRUE;         </td></tr></table><table width=100% ><tr><td class=a14>
m_crText=m_clickedtextcor;  //设置超联接文本的颜色</td></tr></table><table width=100% ><tr><td class=a14>
RedrawWindow();    // 重画控件实现超联接文本颜色的变化</td></tr></table><table width=100% ><tr><td class=a14>
	if(m_linktext!="")  </td></tr></table><table width=100% ><tr><td class=a14>
//如果设置了超联接的地址则调用</td></tr></table><table width=100% ><tr><td class=a14>
ShellExecute函数实现超联接</td></tr></table><table width=100% ><tr><td class=a14>
    	ShellExecute(NULL, "open", m_linktext,</td></tr></table><table width=100% ><tr><td class=a14>
 NULL, NULL, SW_SHOWNORMAL);  </td></tr></table><table width=100% ><tr><td class=a14>
	CStatic::OnLButtonDown(nFlags, point);</td></tr></table><table width=100% ><tr><td class=a14>
 // 调用基类响应函数</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
设置超联接文本上的鼠标形状的消息映射函数</td></tr></table><table width=100% ><tr><td class=a14>
BOOL CSuperLinkCtrl::OnSetCursor(CWnd* pWnd, </td></tr></table><table width=100% ><tr><td class=a14>
UINT nHitTest, UINT message) </td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
// TODO: Add your message handler code here and/or call default</td></tr></table><table width=100% ><tr><td class=a14>
if (m_hCursor)   // 如果已取得光标句柄则设置新的鼠标形状</td></tr></table><table width=100% ><tr><td class=a14>
	{</td></tr></table><table width=100% ><tr><td class=a14>
		::SetCursor(m_hCursor);</td></tr></table><table width=100% ><tr><td class=a14>
		return TRUE;</td></tr></table><table width=100% ><tr><td class=a14>
	}</td></tr></table><table width=100% ><tr><td class=a14>
	return CStatic::OnSetCursor(pWnd, nHitTest, message);</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
设置超联接文本上的光标句柄</td></tr></table><table width=100% ><tr><td class=a14>
void CSuperLinkCtrl::SetLinkCursor(HCURSOR hCursor)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
		m_hCursor = hCursor;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
响应鼠标移动消息</td></tr></table><table width=100% ><tr><td class=a14>
void CSuperLinkCtrl::OnMouseMove</td></tr></table><table width=100% ><tr><td class=a14>
(UINT nFlags, CPoint point) </td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
	// TODO: Add your message handler </td></tr></table><table width=100% ><tr><td class=a14>
code here and/or call default</td></tr></table><table width=100% ><tr><td class=a14>
	SetCapture();     // 捕捉鼠标</td></tr></table><table width=100% ><tr><td class=a14>
	POINT mpoint;   </td></tr></table><table width=100% ><tr><td class=a14>
GetCursorPos(&mpoint);  // 取得当前鼠标位置</td></tr></table><table width=100% ><tr><td class=a14>
	CRect rect;</td></tr></table><table width=100% ><tr><td class=a14>
GetWindowRect(&rect);  // 取得控件的窗口大小</td></tr></table><table width=100% ><tr><td class=a14>
if(!rect.PtInRect(mpoint)) // 判断鼠标是否在控件的窗口内</td></tr></table><table width=100% ><tr><td class=a14>
{             // 鼠标不在控件的窗口内</td></tr></table><table width=100% ><tr><td class=a14>
		m_bcaptured=FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
		ReleaseCapture();    // 释放鼠标捕捉</td></tr></table><table width=100% ><tr><td class=a14>
		MouseLeave(); //  调用mouseleave()函数</td></tr></table><table width=100% ><tr><td class=a14>
		return;</td></tr></table><table width=100% ><tr><td class=a14>
	} </td></tr></table><table width=100% ><tr><td class=a14>
  // 鼠标在控件的窗口内</td></tr></table><table width=100% ><tr><td class=a14>
if(m_bcaptured)  // 如果鼠标在窗口内且已经被捕捉则返回</td></tr></table><table width=100% ><tr><td class=a14>
		return;</td></tr></table><table width=100% ><tr><td class=a14>
	m_bcaptured=TRUE;</td></tr></table><table width=100% ><tr><td class=a14>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -