响应WM_MOUSEWHEEL消息的问题
我在基于对话框的类中重载PreTranslateMessage()以为自己处理一些消息,
加了兰色段,是在用来捕捉鼠标滑轮的消息,可是我发现这个消息好象只是在鼠标滑轮启动的一瞬间产生这个消息,那我的鼠标滑轮什么时候结束也无法判断,也既是说本次鼠标滑轮滚了多少圈也不知道,这样不符合我需求,,我需要知道鼠标滑轮什么时候结束滚动,或者只要还在滚动我都能捕获到消息,该怎么做???
BOOL CConditionSearch::PreTranslateMessage(MSG* pMsg)
{
switch (pMsg->message)
{
case WM_MOUSEWHEEL:
if(((CWnd *)GetFocus())->GetDlgCtrlID() == IDC_RICHEDIT_FILECONTENT)
{
AssociateFileLine(-1);
}
break;
case WM_KEYDOWN:
case WM_CHAR:
switch( pMsg->wParam )
{
case 'f':
case 'F':
if(GetKeyState(VK_CONTROL) & 0xFF00)
{
AfxMessageBox( "group ctrl + f key" ) ;
return TRUE;
}
break;
default:
break;
}
break;
default:
break;
}
return CDialog::PreTranslateMessage(pMsg);
}
加了兰色段,是在用来捕捉鼠标滑轮的消息,可是我发现这个消息好象只是在鼠标滑轮启动的一瞬间产生这个消息,那我的鼠标滑轮什么时候结束也无法判断,也既是说本次鼠标滑轮滚了多少圈也不知道,这样不符合我需求,,我需要知道鼠标滑轮什么时候结束滚动,或者只要还在滚动我都能捕获到消息,该怎么做???
BOOL CConditionSearch::PreTranslateMessage(MSG* pMsg)
{
switch (pMsg->message)
{
case WM_MOUSEWHEEL:
if(((CWnd *)GetFocus())->GetDlgCtrlID() == IDC_RICHEDIT_FILECONTENT)
{
AssociateFileLine(-1);
}
break;
case WM_KEYDOWN:
case WM_CHAR:
switch( pMsg->wParam )
{
case 'f':
case 'F':
if(GetKeyState(VK_CONTROL) & 0xFF00)
{
AfxMessageBox( "group ctrl + f key" ) ;
return TRUE;
}
break;
default:
break;
}
break;
default:
break;
}
return CDialog::PreTranslateMessage(pMsg);
}
...全文
相关推荐
Microsoft VB 6 MouseWheel Fix
VB6.0鼠标滚轮插件。VB6.0对鼠标滚轮不支持的解决方法
【m_listCtrl !=NULL有多个运算符与操作数匹配】2023/9/21 上午11:03:44
另外需要注意的是,虽然 CTreeCtrl 没有类似 LVN_BEGINSCROLL 的通知消息,但它是派生自 CWnd 类的,因此它仍然会向父窗口发送 WM_VSCROLL 和 WM_HSCROLL 消息来反馈滚动条的位置和状态。在子类化 CTreeCtrl 后,我们可以重写其 OnVScroll 和 OnHScroll 函数,通过捕获上述消息来处理滚动条的滚动事件。非常抱歉,我之前给出的回答有误。通过上述步骤,您就可以成功接收 CTreeCtrl 控件中传递的滚动事件信息,并对其进行相应的处理。
让VB及VBA窗口支持鼠标滚轮的程序
运行后,可以让VB及VBA窗口支持鼠标滚轮上下翻页。
DBGrid响应鼠标滚轮.rar
Dbgrid 使用鼠标滚动页面无效,必须按住下拉框才能下拉,自己设计了一个能够自动感应滚轮控件,可直接代替Dbgrid。
vb 中控制鼠标滚轮的小程序
vb 滚轮 控制 鼠标滚轮


界面
