vs2008 Static Text 控件怎么添加 Mousemove消息? 小弟小菜一个,初学,愚昧. 高手见笑!vs2008 Static Text 控件怎么添加 Mousemove消息? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MouseMove是添加在对话框响应消息的,不是在控件上的。不知道你要干什么,假如你要在鼠标移动到字上改变字的颜色或者其他,你可以响应当鼠标移动消息,如果满足在有static text的周围一段的矩形区域内移动,则做出相应的改变即可而不是给控件添加MouseMove,是给有控件的对话框添加 能不能留一下代码,菜鸟菜鸟,嘿嘿,谢谢哦. 我是想移动到static text上面的时候修改鼠标指针为手型 响应MW_SETCURSOR事件,同时把静态文本属性中的notify设置为TRUEBOOL CYourDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message){ // TODO: Add your message handler code here and/or call default if(pWnd->GetDlgCtrlID() == IDC_STATIC1) { SetCursor(::LoadCursor(NULL, IDC_HAND)); return TRUE; } return CDialog::OnSetCursor(pWnd, nHitTest, message);} 方法1、可以自己写个类,继承CStatic(即自定义控件),在里面添加MouseMove处理,替换原来的Static控件方法2、响应对话框的MouseMove消息,通过判断鼠标是否在Static Text区域内来改变鼠标形状void CDlialog1::OnMouseMove(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CRect rc; // IDC_STATIC1为静态文本的ID号,此处获取其相对屏幕的位置 GetDlgItem(IDC_STATIC1).GetWindowRect(&rc); ScreenToClient(&rc); //转换成相对对话框的位置 if ( rc.PtInRect(point) ) //判断鼠标是否在Static Text内 SetCursor(LoadCursor(NULL,IDC_HAND)); else SetCursor(LoadCursor(NULL,IDC_ARROW)); CDialog::OnMouseMove(nFlags, point);} COPY楼上朋友的代码, 编译的时候GetDlgItem(IDC_STATICREG).GetWindowRect(&rc);这句出现1108) : error C2228: left of '.GetWindowRect' must have class/struct/union1> type is 'CWnd *'1> did you intend to use '->' instead? 写错了,是用"->", 这个主要是为了获取IDC_STATICREG在对话框中的相对位置,其实楼主也可以对话框初始话的时候就获取,或者自已设置,定义个成员变量就行了 MFC背景图最高像素多少 怎样用图片填充闭合的不规则区域,如扇形区域.本贴可加高分,解决才结. 我想做一个不用服务器端的局域网通讯软件,大家来谈谈 请教高手ATL做的COM能实现网络连接吗??? 弱智问题......8要BS我,初学中.....100分!钱还是有DI <-__-> 求教调试中的怪问题. 共享和求助并行:~!!!! 关于串口服务器的串口通讯 关于硬盘分区的问题,请教! 请高手指教,一个消息——得不到处理的问题............. 大家在三层架构中.如何处理数据表对像模型(modules)? 窗口画线的问题
不知道你要干什么,假如你要在鼠标移动到字上改变字的颜色或者其他,你可以响应当鼠标移动消息,如果满足在有static text的周围一段的矩形区域内移动,则做出相应的改变即可
而不是给控件添加MouseMove,是给有控件的对话框添加
能不能留一下代码,菜鸟菜鸟,嘿嘿,谢谢哦. 我是想移动到static text上面的时候修改鼠标指针为手型
BOOL CYourDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
if(pWnd->GetDlgCtrlID() == IDC_STATIC1)
{
SetCursor(::LoadCursor(NULL, IDC_HAND));
return TRUE;
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rc;
// IDC_STATIC1为静态文本的ID号,此处获取其相对屏幕的位置
GetDlgItem(IDC_STATIC1).GetWindowRect(&rc);
ScreenToClient(&rc); //转换成相对对话框的位置
if ( rc.PtInRect(point) ) //判断鼠标是否在Static Text内
SetCursor(LoadCursor(NULL,IDC_HAND));
else SetCursor(LoadCursor(NULL,IDC_ARROW));
CDialog::OnMouseMove(nFlags, point);
}
1108) : error C2228: left of '.GetWindowRect' must have class/struct/union
1> type is 'CWnd *'
1> did you intend to use '->' instead?