永发信息网

初学消息机制,对GetMessage、TraslateMessage和DisPatchMessage的一点疑惑?

答案:2  悬赏:20  手机版
解决时间 2021-02-27 01:29
  • 提问者网友:留有余香
  • 2021-02-26 11:40
.while TRUE invoke GetMessage,addr @stMsg,NULL,0,0 //GetMessage函数从该线程消息队列中取出消息放入@stMsg中 .break .if eax == 0 //返回WM_QUIT invoke TranslateMessage,addr @stMsg //翻译由GetMessage函数取出的@stMsg中的消息,将翻译后的消息送入该线程消息队列中 //下次GetMessage虽然取得的消息不完全和这次一样,但是DispatchMessage就会传送给回调函数同一个消息两次,对这三个函数之间的关系不理解?? invoke DispatchMessage,addr @stMsg //传送经GetMessage函数翻译后的消息给回调函数 .endw ret

.while TRUE
invoke GetMessage,addr @stMsg,NULL,0,0 .break .if eax == 0 //返回WM_QUIT invoke TranslateMessage,addr @stMsg invoke DispatchMessage,addr @stMsg .endw ret//GetMessage函数从该线程消息队列中取出消息放入@stMsg中//翻译由GetMessage函数取出的@stMsg中的消息,将翻译后的消息送入该线程消息队列中//下次GetMessage虽然取得的消息不完全和这次一样,但是DispatchMessage就会传送给回调函数同一个消息两次对这三个函数之间的关系不理解?? //传送经GetMessage函数翻译后的消息给回调函数
最佳答案
  • 五星知识达人网友:往事隔山水
  • 2021-02-26 12:30
你的描述好混乱~

GetMessage 队列中取出一个消息.
DispatchMessage 把该消息发送到指定的窗口回调函数.

至于TraslateMessage
理解的时候不需要管他,它只是转化一个字符消息.
比如说接受到消息 WM_KEYDOWN(假设按下了A键), TraslateMessage就会发送一
WM_CHAr(A)消息到队列中.

如果你的程序不处理用户输入的字符, 甚至不调用它也没有关系.
全部回答
  • 1楼网友:舊物识亽
  • 2021-02-26 14:00
我是来看评论的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯