我想在一窗体内显示文本时,当鼠标不在客户区时,滚动条能够自动滚动,而当鼠标在客户区时停止滚动,请问该怎么办呀?
我现在只能做到在客户区双击时,滚动条自动滚动,再双击停止滚动,但是滚动条的滚动不是连续性的。我的具体做法是当双击时设置一个计时器,然后在WM_TIMER消息中给窗口发个SB_LINEDOWN消息。但是效果不是太好。我该怎么办
我现在只能做到在客户区双击时,滚动条自动滚动,再双击停止滚动,但是滚动条的滚动不是连续性的。我的具体做法是当双击时设置一个计时器,然后在WM_TIMER消息中给窗口发个SB_LINEDOWN消息。但是效果不是太好。我该怎么办
解决方案 »
- ReadDirectoryChangesW能否查获文件复制事件
- 如何改变窗口的大小而不改变它的位置?
- 讨厌的Precompiled问题
- 一般的高手解决不了的问题:使用 Mfc的DLL 创建的对话框, 作为其他对话框的子窗口时, 按TAB键 无法正常工作 ***
- com+ win2003的连接问题(很难!!)
- VC新手:对话框中加入一些ACTIVEX控件,但不会用!有没有讲在VC中使用ACTIVEX控件的书啊!
- 图标文件的组织形式
- 用CreateProcess运行外部16位程序,不想出现那个DOS窗口,并且运行结束进程自动退出
- 求救!关于VC++对话框
- 删除控件 后编译出现“试图执行系统不支持的操作”
- if (tt != -1)
- 用鼠标点击控件弹出的模式对话框能正常关闭,但是为什么捕获键盘消息弹出的模式对话框就不能正常关闭?具体请看,急。。。。。
处理WM_MOUSEMOVE事件,在其中使用GetCursorPos、GetClientRect、PtInRect获知鼠标指针是否在客户区内,如若不在则启动计时器,否则KillTimer。
在计时器中使用SB_LINEDOWN。
CONST RECT *lprc, // 矩形结构指针
POINT pt // 坐标点结构
);
然后响应MOuSEMOVE消息,这里判断鼠标坐标,用API( ::GetCursorPos(&point) )
如果在客户区内就停止滚动,之外就滚动,客户区坐标要转换一下要滚动有连续的效果
用CScrollView
然后用这个函数控制滚动就行了吧
void ScrollToPosition(
POINT pt
);