测试了一下,可以使用自定义事件。
public partial class Form1 : Form{
//定义事件
public event EventHandler HScrollEvent
public event EventHandler VScrollEvent
public Form1()
{
InitializeComponent()
//注册事件
this.VScrollEvent += delegate
{
{ this.Text = "纵向滚动了!" }
}
}
protected override void WndProc(ref Message m)
{
//在输出窗口自己看对应的数字是多少
Debug.Print(m.Msg.ToString())
switch (m.Msg.ToString())
{
case "528"://我测试对应垂直滚动
//引发事件
if (this.VScrollEvent != null)
this.VScrollEvent(this, null)
break
case "你自己检测数字":
if (this.HScrollEvent != null)
this.HScrollEvent(this, null)
break
default:
break
}
base.WndProc(ref m)
}
private void button1_Click(object sender, EventArgs e)
{
this.Text = ""//清空便于对比
}
}
<RichTextBox Name="rtb" MouseWheel="RichTextBox_MouseWheel" />看好了,这个是在xaml里的写法,在c#里写要用+=
rtb.MouseWheel += new MouseWheelEventHandler(RichTextBox_MouseWheel)void RichTextBox_MouseWheel(object sender, MouseWheelEventArgs e)
{
}
MFC鼠标滚轮消息WM_MOUSEWHEEL使用WM_MOUSEWHEEL
需要把CWnd设定为Focus
ON_WM_MOUSEWHEEL( )
CWnd::OnMouseWheel
afx_msg BOOL OnMouseWheel( UINT nFlags, short zDelta, CPoint pt )
返回值:如果允许鼠标轮滚动,则返回非零值;否则返回0。
参数:
nFlags 指明是否按下了虚拟键。这个参数可以是下列值的组合:
· MK_CONTROL 如果CTRL键被按下,则设置此位。
· MK_LBUTTON 如果鼠标左键被按下,则设置此位。
· MK_MBUTTON 如果鼠标中键被按下,则设置此位。
· MK_RBUTTON 如果鼠标右键被按下,则设置此位。
· MK_SHIFT 如果SHIFT键被按下,则设置此位。
zDelta 指明了旋转的距离。zDelta值以WHEEL_DELTA,即120的倍数或部分的形式表达。小于零的数表明往回滚动(向着用户),而大于零的数表明滚向远处(离开用户)。用户可以在鼠标软件中改变滚轮设置以反转这种响应。有关这个参数的更多信息参见说明部分。
pt 指定了光标的x和y轴坐标。这些坐标通常是相对于窗口的左上角的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)