最近在开发那个人事系统,明白了一个道理:mfc+Api在学会之前,比很多开发工具都难用啊,但是在学好之后,简直在Windows无敌啊!
好,现在入正题:
hflexeDateGrid要用滚轮那么需要的是一个message“MouseWheel",有了这个才能响应鼠标的中间滚轮的滚动。
利用classwizard添加OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
函数,就可以下一步了。
参数意义: 第一个是滚动的上下标致而第三个是同时按键键值。地二个是什么,现在我也用不上不管它。
首先上下滚动。方法么查了不少资料,都不是太管用。
还是无意中想到的方法:
那就是再次发消息在member variable 中加入 hflexeDateGrid对应的成员变量 m_HFlxGrd
然后m_HFlxGrd.SendMessage(WM_VSCROLL,SB_LINEUP); 向上翻。
m_HFlxGrd.SendMessage(WM_VSCROLL,SB_LINEDOWN);下下翻。
这时间就可以看到控件响应了,当然了左右也是需要了根据个人习惯选择Ctrl 为控制键,按ctrl时滚动为左右
m_HFlxGrd.SendMessage(WM_HSCROLL,SB_LINELEFT); 左
m_HFlxGrd.SendMessage(WM_HSCROLL,SB_LINERIGHT);
右前面加个ctrl判定:if (nFlags== MK_CONTROL)
------------------------------------------------------------------------------------------------------------
整个代码如下:
// TODO: Add your message handler code here and/or call
default
if(zDelta>50)
{
if (nFlags==
MK_CONTROL)
{
m_HFlxGrd.SendMessage(WM_HSCROLL,SB_LINELEFT);
}
else
{
m_HFlxGrd.SendMessage(WM_VSCROLL,SB_LINEUP);
}
}
else
if (zDelta<-50)
{
if (nFlags==
MK_CONTROL)
{
m_HFlxGrd.SendMessage(WM_HSCROLL,SB_LINERIGHT);
}
else
{
m_HFlxGrd.SendMessage(WM_VSCROLL,SB_LINEDOWN);
}
}
return
CDialog::OnMouseWheel(nFlags, zDelta, pt);
+++++++++++++++++++++++++++++++++++++++++++++++++
最后感想:VB是利用控件,vc是改造控件。
========如需转载,请联系作者============