5128|14

96

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教有关键盘事件的问题 [复制链接]

我的wince系统上没有显示设备,程序都是无图形界面的,那就是没有窗体了,那我的程序怎么能相应一个键盘事件呢?我看到处理键盘事件好像都是要把键盘事件传送到一个焦点窗体上,再通过这个窗体的消息处理程序来处理。我现在建立的程序是无图形界面的,这个问题不知道思路卡在哪里,总觉得怪怪的,希望有人能帮忙解答一下,非常感激~

最新回复

呵呵,还是老老实实的用了窗口来接受接盘消息,结贴了吧,谢谢上面的朋友们  详情 回复 发表于 2010-3-17 20:37
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用下 钩子呐 ?
 
 

回复

83

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
就只能用钩子吗,能不能建立个线程来处理消息循环呢?
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

4
 
帮顶下。

MARK,学习下、
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
这个问题简单。无图形界面并不代表没有GWES.EXE组件,而一般都只是没有explorer.exe桌面浏览器。GWES.EXE组件才是真正处理消息和窗口的,explorer.exe只不过是使系统看不到桌面而已,但其内部机制还在。一般无图形界面的系统都是去掉explorer.exe保留GWES.exe组件的,因为GWES.exe组件事关本地驱动的加载和消息机制。如果一个系统只是没有explorer.exe,还有GWES.EXE,那么它的窗口和消息还是正常运行的,完全可以响应各种按键消息和鼠标消息。
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

6
 
如果还保留gwes组件,显示应该就没问题的
引用楼主 th007sw 的回复:
我的wince系统上没有显示设备,程序都是无图形界面的,那就是没有窗体了,那我的程序怎么能相应一个键盘事件呢?我看到处理键盘事件好像都是要把键盘事件传送到一个焦点窗体上,再通过这个窗体的消息处理程序来处理。我现在建立的程序是无图形界面的,这个问题不知道思路卡在哪里,总觉得怪怪的,希望有人能帮忙解答一下,非常感激~
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢楼上两位的解答,这样我还是有疑惑,按照domworldjohn兄的意思是不是我的程序还得建立一个窗口,然后再指定这个窗口的消息处理函数?不用建立窗口能不能处理键盘的事件呢,我的程序是没有图形界面的
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
我的wince系统上没有显示设备,但我的程序还是用图形界面。

wince系统,上图形界面,可以不接显示器,不接鼠标键盘。

我做“焊锡机器人”控制部分,wince系统,客户使用的时候没有显示器和标准的鼠标键盘,但用图形界面,给自己调试带来方便。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

9
 
呵呵,我不用图形界面,所以就没窗口,这正是想不明白的地方
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
只要有GWES组件就可以响应系统键盘消息,这个与有没有窗口没关系。写个程序接收系统消息就行了
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 9 楼 wdhhawk_nnc 的回复:
只要有GWES组件就可以响应系统键盘消息,这个与有没有窗口没关系。写个程序接收系统消息就行了



呵呵,小弟还是个初学者,我的理解是不是在自己的程序中用如下的代码来实现消息循环:

while(GetMessage(&msg, NULL, 0, 0))
{
if(!TranslateAccelerator(msg.hWnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

但是“DispatchMessage(&msg); ”这句把消息发送出去了以后怎么处理呢?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 th007sw 的回复:
引用 9 楼 wdhhawk_nnc 的回复:
只要有GWES组件就可以响应系统键盘消息,这个与有没有窗口没关系。写个程序接收系统消息就行了



呵呵,小弟还是个初学者,我的理解是不是在自己的程序中用如下的代码来实现消息循环:

while(GetMessage(&msg, NULL, 0, 0))
{
if(!TranslateAccelerator(msg.hWnd……

正解,这是用SDK实现的消息机制。只需要添加相应的消息处理函数即可。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 11 楼 domworldjohn 的回复:
引用 10 楼 th007sw 的回复:
引用 9 楼 wdhhawk_nnc 的回复:
只要有GWES组件就可以响应系统键盘消息,这个与有没有窗口没关系。写个程序接收系统消息就行了



呵呵,小弟还是个初学者,我的理解是不是在自己的程序中用如下的代码来实现消息循环:

while(GetMessage(&msg, NULL, 0, 0))
{
if(!Tra……



但是消息处理程序不是要获得一个窗口句柄才行吗,比如下面这个窗口过程

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{}
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

14
 
呀呀,我顶起~~
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

15
 
呵呵,还是老老实实的用了窗口来接受接盘消息,结贴了吧,谢谢上面的朋友们
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表