新浪微博
腾讯微博
会员列表
统计排行
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
首页
论坛
Qt下载
作品展
群组
个人中心
捐赠、管理与开发
邮件订阅
帖子
文章
日志
用户
版块
群组
帖子
搜索
QTCN开发网
>
Qt基础编程
>
条码枪数据读取:Qt 处理windows 消息,过滤底层 RawInputData ..
发帖
回复
返回列表
新帖
5957
阅读
2
回复
条码枪数据读取:Qt 处理windows 消息,过滤底层 RawInputData 问题?
[复制链接]
上一主题
下一主题
离线
coffeelzp
UID:38227
注册时间
2007-10-20
最后登录
2015-08-29
在线时间
43小时
发帖
37
搜Ta的帖子
精华
0
金钱
495
威望
38
贡献值
0
好评度
37
访问TA的空间
加好友
用道具
新手上路
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
加关注
发消息
只看楼主
倒序阅读
楼主
发表于: 2013-04-04
条码枪通常是模拟键盘设备,只要有光标的地方,就会输入,我想读取条码枪
数据
,并且截获不让它
显示
在
文本
控件中。现在数据已经拿到,但是无法截取,不知道是不是Qt的bug。
复制代码
bool Application::winEventFilter(MSG *msg, long *result)
{
LPARAM lParam = msg->lParam;
LPBYTE lpb;
UINT dwSize;
RAWINPUT *raw;
if (msg->message == WM_INPUT) {
GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &dwSize, sizeof(RAWINPUTHEADER));
lpb = new BYTE[dwSize];
if (lpb == NULL)
return 0;
if (GetRawInputData((HRAWINPUT)lParam,
RID_INPUT,
lpb,
&dwSize,
sizeof(RAWINPUTHEADER)) != dwSize)
{
qDebug() << "GetRawInputData doesn't return correct siz";
//OutputDebugStr(TEXT("GetRawInputData doesn't return correct size\n"));
}
raw = (RAWINPUT*) lpb;
if (Application::m_deviceId == raw->header.hDevice) {
if (raw->header.dwType == RIM_TYPEKEYBOARD) {
if (raw->data.keyboard.Message == WM_KEYDOWN ||
raw->data.keyboard.Message == WM_SYSKEYDOWN)
{
USHORT usKey;
usKey = raw->data.keyboard.VKey;
qDebug() << usKey;
// qDebug() << "hDevice" << raw->header.hDevice;
}
}
result = 0;
msg = 0;
return true;
}
qDebug() << "id" << raw->header.dwType << raw->data.keyboard.VKey;
delete[] lpb;
}
return QApplication::winEventFilter(msg,result);
}
Qt文档描述,只要 return true,就可以过滤掉消息。 不知道为什么,文本控件上还是会显示。
The message procedure calls this function for every message received. Reimplement this function if you want to process
window
messages msg that are
not
processed by Qt. If you don't want the event to be processed by Qt, then return true and set result to the value that the window procedure should return. Otherwise return false.
共
条评分
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
realfan
UID:123401
注册时间
2011-10-20
最后登录
2025-02-11
在线时间
1949小时
发帖
1495
搜Ta的帖子
精华
19
金钱
42344
威望
1583
贡献值
11
好评度
1569
访问TA的空间
加好友
用道具
论坛版主
加关注
发消息
只看该作者
1楼
发表于: 2013-04-04
条码枪等同于按键,我觉得应该用eventFilter拦截QEvent::KeyPress
例如:
bool XXXX::eventFilter(QObject *obj, QEvent *event)
{
if(QEvent::KeyPress == event->type())
{
。。。。。。。。
return true;
}
共
条评分
回复
举报
离线
coffeelzp
UID:38227
注册时间
2007-10-20
最后登录
2015-08-29
在线时间
43小时
发帖
37
搜Ta的帖子
精华
0
金钱
495
威望
38
贡献值
0
好评度
37
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
2楼
发表于: 2013-04-05
这只是拦截了本窗口的按键。 我现在的办法是配合钩子受用。
共
条评分
回复
举报
发帖
回复
返回列表
http://www.qtcn.org/bbs
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限100 字节
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
关闭
补充发布信息
验证码:
发 布
隐藏
快速跳转
站务及资讯
网站公告
新闻资讯
Qt官方发布
网站管理
Qt应用及资源
Qt 作品展
Qt代码秀
Qt应用版
Qt技术讨论区
Qt安装与发布
Qt中文处理
Qt基础编程
Qt QML开发
Qt嵌入式开发
Qt移动平台开发
其它技术开发讨论区
Qt图书专区
《C++ GUI Qt 4编程》(第2版)专栏
《Qt高级编程》专栏
《零基础学Qt4编程》专栏
《Qt设计模式》(第2版) 图书专栏
Python Qt GUI快速编程
Qt项目开发区
天池项目
Qt开放平台开发库
机械CAD
扇贝词典
非活跃项目区
社区中心
帖子回收站(Trash)
招聘、求职、供求、广告等
休闲娱乐
关闭
关闭
选中
1
篇
全选