关于消息循环中TranslateMessage疑问..

tx183584 2010-08-27 08:47:28
TranslateMessage 说的是函数功能:该函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage或PeekMessage时被读出。
.while	TRUE
invoke GetMessage,addr @stMsg,NULL,0,0
.break .if eax == 0
invoke TranslateMessage,addr @stMsg
invoke DispatchMessage,addr @stMsg
.endw


GetMessage如果没有得到消息就一直等待,TranslateMessage 将消息存放起来,到下次循环才能取出来,万一,一个消息被TranslateMessage 放入队列中后,GetMessage就处于等待,那不是永远都处理不了这条消息了?
...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tx183584 的回复:]
那GetMessage取的是原始的消息,还是TranslateMessage 转换之的消息??
[/Quote]
GetMessage是从消息队列中取消息,各种消息都有。

[Quote=引用 4 楼 tx183584 的回复:]
如果一直在等待,那TranslateMessage又怎么把消息存入队列中呢..
[/Quote]
如果一直在等待,怎么会执行到TranslateMessage?
xyytuo 2010-08-28
  • 打赏
  • 举报
回复
函数功能
tx183584 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]

invoke GetMessage,addr @stMsg,NULL,0,0
在消息队列为空时才会等待,只要消息队列有消息就会返回。
[/Quote]
如果一直在等待,那TranslateMessage又怎么把消息存入队列中呢..
tx183584 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]

invoke GetMessage,addr @stMsg,NULL,0,0
在消息队列为空时才会等待,只要消息队列有消息就会返回。
[/Quote]
那GetMessage取的是原始的消息,还是TranslateMessage 转换之的消息??
pj2010 2010-08-27
  • 打赏
  • 举报
回复
分配的时间片也是不允许滴
cnzdgs 2010-08-27
  • 打赏
  • 举报
回复
invoke GetMessage,addr @stMsg,NULL,0,0
在消息队列为空时才会等待,只要消息队列有消息就会返回。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧