鼠标在按钮上时,鼠标变成一个手掌,如何实现???? 问题如上,欢迎您的指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HCURSOR SetCursor( HCURSOR hCursor // handle to cursor); 然后响应MouseMove消息,SetCursor 貌似这个不同的IDE方法不一样吧。在C++Builder里面挺简单的,按钮有Cursor属性,设为crHandPoint就可以了,鼠标移到按钮显示食指。 大概代码如下:m_hHand = AfxGetApp()->LoadStandardCursor(IDC_HAND);m_hNormal = AfxGetApp()->LoadStandardCursor(IDC_IBEAM);void CLinkWnd::OnMouseMove(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 if (!m_bMouseHover) { TRACKMOUSEEVENT tme = {sizeof(TRACKMOUSEEVENT), TME_LEAVE, m_hWnd, 0}; m_bMouseHover = TrackMouseEvent(&tme); ::SetCursor(m_hHand); Invalidate(); } CStatic::OnMouseMove(nFlags, point);}void CLinkWnd::OnMouseLeave(){ // TODO: 在此添加消息处理程序代码和/或调用默认值 m_bMouseHover = FALSE; ::SetCursor(m_hNormal); Invalidate(); CStatic::OnMouseLeave();}BOOL CLinkWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message){ // TODO: 在此添加消息处理程序代码和/或调用默认值 return TRUE; return CStatic::OnSetCursor(pWnd, nHitTest, message);} 从CButton类中派生出一个子类,处理子类中的WM_MOVEMOUSE消息,在其中改变光标。然后将按钮关联到这个子类上去。第二种方法是用SetClassLong改变一下按钮窗口的光标。 从CButton派生一个新类 响应WM_SETCURSOR消息void CNewButton::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { // TODO: Add your message handler code here and/or call default { ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS)); return TRUE; } return CButton::OnSetCursor(pWnd, nHitTest, message);} 请教一个数据格式转换的问题,还请大家帮帮忙! 救命呀:)怎样在一个类中的按钮点击,去执行另一个类中的函数命令 有关Object基类的问题?? DoSomeFunction()没法用是怎么回事啊 顶者有分了 如何将缓冲区数据立即写入硬盘 directshow 的显示问题 如何使用OnPaint()函数? 请教一问题:我一程序在后台运行,在系统关机时,如何能让该程序得到响应? 哪有好的VC网站? VS2010 如何在状态栏右下方添加一个滚动条? 大家一起谈谈DHTML+VC实现UI吧
HCURSOR hCursor // handle to cursor
);
在C++Builder里面挺简单的,按钮有Cursor属性,设为crHandPoint就可以了,鼠标移到按钮显示食指。
m_hNormal = AfxGetApp()->LoadStandardCursor(IDC_IBEAM);void CLinkWnd::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (!m_bMouseHover)
{
TRACKMOUSEEVENT tme = {sizeof(TRACKMOUSEEVENT), TME_LEAVE, m_hWnd, 0};
m_bMouseHover = TrackMouseEvent(&tme);
::SetCursor(m_hHand);
Invalidate();
}
CStatic::OnMouseMove(nFlags, point);
}void CLinkWnd::OnMouseLeave()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_bMouseHover = FALSE;
::SetCursor(m_hNormal); Invalidate(); CStatic::OnMouseLeave();
}BOOL CLinkWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
return TRUE;
return CStatic::OnSetCursor(pWnd, nHitTest, message);
}
第二种方法是用SetClassLong改变一下按钮窗口的光标。
{
// TODO: Add your message handler code here and/or call default
{
::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS));
return TRUE;
}
return CButton::OnSetCursor(pWnd, nHitTest, message);
}