关于如何用eVC4的MFC来处理鼠标滚轮的消息,在网上搜了很久,QQ群里问过了很多人,始终解决不了,有朋友说WINCE中不能处理滚轮消息,因为移动设备不接鼠标,但自己接上一个鼠标,在OS的文件夹处转动滚轮,的确是可以让文件滚动的,意思是WINCE的确可以处理滚轮消息,
后来我终于用基础的知识,层层深入地解决了这个问题.原理原来是很简单的.
首先,如果像PC机的MFC那样,正常给CWnd增加消息处理WM_MOUSEWHEEL的话,编译首先会报错说ON_WM_MOUSEWHEEL undeclared identifier,原因是eVC里的MFC的afxmsg_.h这样定义的.在最后,多了一段
#if defined(_WIN32_WCE)
#undef ON_WM_MOUSEWHEEL 当然该文件还取消了很多其他消息的定义.
这个是报错的原因,BEGIN_MESSAGE_MAP 与 END_MESSAGE_MAP 之间的 ON_WM_MOUSEWHEEL() 编译器看不懂.
头文件中定义是
#define ON_WM_MOUSEWHEEL() /
{ WM_MOUSEWHEEL, 0, 0, 0, AfxSig_bwsp, /
(AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(UINT, short, CPoint))&OnMouseWheel },
所以一开始我尝试把 ON_WM_MOUSEWHEEL() 硬换成下面的一句,写在MESSAGE_MAP宏的中间.
{ WM_MOUSEWHEEL, 0, 0, 0, AfxSig_bwsp,(AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(UINT, short, CPoint))&OnMouseWheel },
再把MFC自动生成的OnMouseWheel函数里面的 return CDialog::OnMouseWheel(nFlag