现在我们用的鼠标上大概有这几个键: 左键、 右键、 中键、 前进键、 后退键。 我想知道怎么响应鼠标上的前进键和后退键按下和弹起并计数?有没有类似于OnLButtonDown的消息函数?该如何处理?
解决方案 »
- _variant_t 在数据库中(vc+ado)中的一些小问题
- VC/MFC技术交流
- 用VS 2005 的们,你们用的是Visual Studio 2005 Team System 还是Visual Studio 2005 Professional Edition 啊?给个建议哪个好?
- C++ STL(中文版)(P.J.Plauge)谁看过,给点意见,我想买,值得吗 ????
- 求助串口问题
- 请问在vc中使用怎么播放wav文件,并且可以跳到wav文件的任何部分播放
- 图片加载问题!得到图片的句柄,高分求高人!
- 关于未来的发展方向。
- 谁有odbc 的驱动啊?能提供一定给分
- 程序运行出错“memory allocates error”,怎么解决啊
- 关于消息路由和类型强制转换的疑问
- 怎么把一个已经可以运行的exe转换为dll后在另外一个exe中调用?
Indicates whether various virtual keys are down. This parameter can be any combination of the following values:MK_CONTROL Set if the CTRL key is down.MK_LBUTTON Set if the left mouse button is down.MK_MBUTTON Set if the middle mouse button is down.MK_RBUTTON Set if the right mouse button is down.MK_SHIFT Set if the SHIFT key is down.一般的鼠标没有前进键和后退键
一楼的这个不是响应键盘按键的吗?我上网查了下Windows消息大全 里面有
WM_KEYDOWN = $0100;
//按下一个键
WM_KEYUP = $0101;
//释放一个键
这个好像是响应键盘的 对鼠标可以用吗?
LRESULT CFccTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message==523&&wParam==65568)
{
ForButtonDown();
return CDialog::WindowProc(message, wParam, lParam);
}
if(message==524)
{
ForButtonUp();
return CDialog::WindowProc(message, wParam, lParam);
}
我通过在dialog下添加WindowProc(),通过调试,得到当message==523&&wParam==65568为前进键按下的消息 当message==524是既响应前进键弹起 又响应后退键弹起 通过捕捉wParam的值设定后 还是同时响应两个按键的弹起 有哪位大侠知道这是怎么回事吗?这几天一直被这个问题困扰 希望能有高手出手相助 帮助菜鸟解决这两个按键问题
{
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_LEFT)//左键
{
}
}
return CDialog::PreTranslateMessage(pMsg);
}
鼠标如 我个人空间的相册里 http://hi.csdn.net/space-9093429-do-album-picid-697791.html
首先定义4个变量(记下按键按下和弹起的次数)
int FourDown;
int FourUp;
int FiveDown;
int FiveUp;初始化它们在窗口过程函数中处理
LRESULT CFccTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message==523)
{
if(wParam==65568)//前进键按下
{FourDown++;}
else if(wParam==131136)//后退键按下
{FiveDown++;}
return CDialog::WindowProc(message, wParam, lParam);
} if(message==524)
{
if(wParam==131072)//后退键弹起
{ FiveUp++;}
else if(wParam==65536)//前进键弹起
{FourUp++; }
return CDialog::WindowProc(message, wParam, lParam);
} if(message==525)
{
if(wParam==65568)//前进键双击
{
FourDown++;
}
else if(wParam==131136)//后退键双击 {
FiveDown++;
}
return CDialog::WindowProc(message, wParam, lParam);
}
return CDialog::WindowProc(message, wParam, lParam);}缺陷是两个按键同时按下时 如前进键先按下不放 再按后退键不放 接着释放前进键 最后释放后退键 此时只是响应了前进键按下+1 和 后退键弹起+1 也是就是只响应了第一个按下和最后的弹起 怎解?期待指导
用spy++,前进键先按下不放 再按后退键不放 接着释放前进键 最后释放后退键 得到的消息如下链接的截图http://hi.csdn.net/space-9093429-do-album-picid-700398.html
似乎同时按下的消息都是一样的