我想要知道鼠标滚轮时,区分是否在CScrollView的客户区,还是在它的滚动条上。
解决方案 »
- 散分,顺便推荐下正在听的一张专辑
- isapi扩展 性能不稳定 急!!!
- SendInput模拟Shift+End后,如何把光标定位回原位置?
- 怎样获得“桌面工具栏”的坐标?
- 模式对话框弹出后用鼠标点不中上面的按钮,而用键盘可以切换,为什么?
- 请问在vc网络编程中select和sendmessage怎么使用?
- 如何获得windows的系统目录,以便插入treectrl里去? 就想"资源管理器"一样.
- 请问替换ListView 的 Columns绘制,该怎么做?
- C Runtime Library 是什么?
- VC中globals文件夹里的函数是如何添加的?
- 运行nehe教程程序时的问题
- CRichEdit如何设置边距
这样能得到客户区的右边那根线,对吧?接着你获取窗体的大小,GetWindowRect,也能获得一个RECT,当然也有右边的那根线2线之间,就是滚动条了
1.获取窗口客户区的CRect,rc,使用函数GetClientRect,并使用
2.使用GetCursorPos获取鼠标位置,使用ScreenToClient转换成客户窗口坐标
3.使用CRect::PtInRect判断鼠标是否在该矩形范围之内。
{
ASSERT(nBar == SB_HORZ || nBar == SB_VERT);
if (GetStyle() & ((nBar == SB_HORZ) ? WS_HSCROLL : WS_VSCROLL))
{
//it has a regular windows style scrollbar (no control)
return NULL;
}
...
}将他进行重载,这样你就能获得滚动条的指针了,有了指针就能有句柄。
我正在用坐标区域在测试。
重载GetScrollBarCtrl()要怎么写啊,能否贴出来看看。