| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 848 人关注过本帖
标题:有关如何使表格浏览支持鼠标滚轮问题
只看楼主 加入收藏
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
结帖率:94.12%
收藏
 问题点数:0 回复次数:4 
有关如何使表格浏览支持鼠标滚轮问题
大家好!请问各位:我用VB编成制作一个窗口,在窗口中用MSHFlexGrid1控件作了一个表格,请问各位高人如何编写代码才能使浏览表格内数据时,使鼠标滚轮支持浏览数据表内数据上下滚动?谢谢!
北京

2006-9-12
搜索更多相关主题的帖子: 鼠标 表格 滚轮 浏览 数据 
2006-09-12 15:42
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

subclassing MFlexGrid 窗口, 並捕獲 WM_MOUSEWHEEL 消息.

判斷 wParam 的 HIWORD 或 LOWORD (在 VB 是 wParam \ 65536),
如果得到的大於 0, 輪是向上轉動, 小於 0 的滾輪向下轉動.


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-09-12 16:08
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
收藏
得分:0 
yeshirow:你好!
本人水平较低,请问您能提供给我一个例子吗?谢谢
2006-09-12 16:51
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

標准模組中 (.bas):
......' // 將需要的 API 宣告一下, 自己會吧.
Global g_MFWndProc As Long

Public Function MFWndProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim wp As Long
Select Case uMsg
Case WM_MOUSEWHEEL
wp = wParam \ 65536
' 怎麽處理消息自己定義一下吧, 在這裏用簡單的WM_KEYDOWN 來處理了.
If wp > 0 Then
' 滾輪向上轉動
PostMessage hWnd, WM_KEYDOWN, vbKeyUp, 1
Else
'滾輪向下轉動
PostMessage hWnd, WM_KEYDOWN, vbKeyDown, 1
End If
MFWndProc = 0
Exit Function
End Select
MFWndProc = CallWindowProc(g_MFWndProc, hWnd, uMsg, wParam, lParam)
End Function

---------------------------------------------
在包含 MFlexGrid 的窗體中:

Private Sub Form_Load()
'..........
g_MFWndProc = SetWindowLong(MSFlexGrid1.hWnd, GWL_WNDPROC, AddressOf MFWndProc)
'..........
End Sub

Private Sub Form_UnLoad()
'........
SetWindowLong MSFlexGrid1.hWnd, GWL_WNDPROC, g_MFWndProc
End Sub
---------------------------------------

不要以 End 結束程式.
如果確實要以 End 結束, 要在 End 之前呼叫一下 Unload 裏的那個 SetWindowLong.


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-09-12 23:59
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

說明一下, WM_MOUSEWHEEL 在下面的條件中才有效 (與 Windows 的版本有關):

#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
#define WM_MOUSEWHEEL 0x020A
#define WM_MOUSELAST 0x020A
#else
#define WM_MOUSELAST 0x0209
#endif /* if (_WIN32_WINNT < 0x0400) */


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-09-13 00:02
快速回复:有关如何使表格浏览支持鼠标滚轮问题
数据加载中...
 
   



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

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