rainstormmaster(rainstormmaster)及诸位高手来帮忙!!!

kingssman 2003-12-26 05:30:37
小弟想给用 sendmessage 给MSFlexGrid控件的 上下箭头按钮发消息。
该如何写? 请指教。
option Explicit

Private Const BM_CLICK =??
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'模拟单击Command2
Private Sub Command1_Click()
SendMessage CMSFlexGrid1.hwnd, BM_CLICK, ??, ByVal 0&'最后一个参数byref传递也可
End Sub
...全文
39 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingssman 2004-02-13
  • 打赏
  • 举报
回复
多些个为指点,谢谢大家!!!
jhzhou882 2004-02-13
  • 打赏
  • 举报
回复


下面以模拟滚动纵向滚动条为例(发送WM_VSCROLL消息)
窗体上一个treeview,6个按钮
Option Explicit
Private Const WM_VSCROLL = &H115
Private Const SB_LINEUP = 0
Private Const SB_LINEDOWN = 1
Private Const SB_PAGEUP = 2
Private Const SB_PAGEDOWN = 3
Private Const SB_TOP = 4
Private Const SB_BOTTOM = 7
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long


Private Sub Command1_Click()
Call SendMessage(TreeView1.hwnd, WM_VSCROLL, SB_LINEUP, ByVal 0&)

End Sub

Private Sub Command2_Click()
Call SendMessage(TreeView1.hwnd, WM_VSCROLL, SB_LINEDOWN, ByVal 0&)
End Sub

Private Sub Command3_Click()
Call SendMessage(TreeView1.hwnd, WM_VSCROLL, SB_PAGEUP, ByVal 0&)
End Sub

Private Sub Command4_Click()
Call SendMessage(TreeView1.hwnd, WM_VSCROLL, SB_PAGEDOWN, ByVal 0&)
End Sub

Private Sub Command5_Click()
Call SendMessage(TreeView1.hwnd, WM_VSCROLL, SB_TOP, ByVal 0&)

End Sub

Private Sub Command6_Click()
Call SendMessage(TreeView1.hwnd, WM_VSCROLL, SB_BOTTOM, ByVal 0&)
End Sub

Private Sub Form_Load()
Me.Command1.Caption = "向上滚动一行"
Me.Command2.Caption = "向下滚动一行"
Me.Command3.Caption = "向上滚动一页"
Me.Command4.Caption = "向下滚动一页"
Me.Command5.Caption = "向上滚动到顶部"
Me.Command6.Caption = "向下滚动到底部"
Dim i As Long
For i = 1 To 100
Me.TreeView1.Nodes.Add , , , "line " + CStr(i)
Next
End Sub


如果要实现横向滚动的话,则发送WM_HSCROLL消息
xzp1030 2003-12-27
  • 打赏
  • 举报
回复
学习
rainstormmaster 2003-12-27
  • 打赏
  • 举报
回复
同意楼上:
参考:
http://expert.csdn.net/Expert/topic/2544/2544152.xml?temp=.4336511
针对treeview的,对MSFlexGrid也适用
道素 2003-12-26
  • 打赏
  • 举报
回复
对滚动条发消息可不是简单一个就够了
随便写的例子,不完全,演示向上向下,左右同理
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const SB_ENDSCROLL = 8
Private Const WM_VSCROLL = &H115

Private Const SB_LINELEFT = 0
Private Const SB_LINERIGHT = 1
Private Const SB_LINEUP = 0
Private Const SB_LINEDOWN = 1
Private Enum ScrollMode
ScrollUp = SB_LINEUP
ScrollDown = SB_LINEDOWN
ScrollLeft = SB_LINELEFT
ScrollRight = SB_LINERIGHT
End Enum

Private enmMode As ScrollMode
Private Sub Command1_Click()
enmMode = ScrollMode.ScrollDown
Call SendMessage(MSFlexGrid1.hwnd, WM_VSCROLL, enmMode, ByVal CLng(0))
End Sub

Private Sub Command2_Click()
enmMode = ScrollMode.ScrollUp
Call SendMessage(MSFlexGrid1.hwnd, WM_VSCROLL, enmMode, ByVal CLng(0))
End Sub

Private Sub Form_Load()
Dim i As Integer
For i = 0 To 50
MSFlexGrid1.AddItem i & vbTab & i * 2 & vbTab & i * 3
Next
End Sub
LanceJin 2003-12-26
  • 打赏
  • 举报
回复
象这种控件的上下箭头按钮应该有另外的消息,不能用BM_CLICK,你可以用Hook实现接受它的消息,获取上下箭头按钮的消息

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧