标题:判断鼠标指向自带滚动条
取消只看楼主
rzwm
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-28
结帖率:100%
已结贴  问题点数:20 回复次数:4 
判断鼠标指向自带滚动条
MFC中CScorllView自带了滚动条。那怎么判断鼠标指向了该滚动条呢?我想让鼠标在滚动条上时改变光标。
搜索更多相关主题的帖子: 鼠标 
2013-02-18 11:08
rzwm
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-28
得分:0 
没有其他更简单点的方法吗?有哪个大虾指点指点吗?
2013-02-18 15:43
rzwm
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-28
得分:0 
当鼠标移动到滚动条上,滚动条颜色变为浅蓝色;点击移动的时候,滚动条变为深蓝色;这就证明实际上滚动条的状态是内部已有的,我就想是否有直接判断滚动条颜色是否为浅蓝色的方法。另外对于我来说,重绘滚动条还是有难度的……
2013-02-18 17:47
rzwm
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-28
得分:0 
问题已经解决了,不需要重绘滚动条。
我的程序是客户区有特别光标,要求指到滚动条要变为普通的。问的时候没说清楚。
因为滚动条属于客户区,而又不包含在GetClientRect()里所以我在OnSetCursor()里把滚动条给排除掉了。
代码如下:
BOOL CSingleWBView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
    CRect rectClient;
    GetClientRect(&rectClient);

    CPoint point;
    GetCursorPos(&point);
    ScreenToClient(&point);

    CRgn rgn;
    rgn.CreateRectRgn(rectClient.left, rectClient.top, rectClient.right, rectClient.bottom);

    if (!rgn.PtInRegion(point))
    {
        rgn.DeleteObject();
        return CScrollView::OnSetCursor(pWnd, nHitTest, message);
    }
}
结贴。
2013-02-19 10:22
rzwm
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-28
得分:0 
代码下边多了一个},这只是一部分,所以没有结束。
2013-02-19 10:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-398720-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.165828 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved