PeekMessageから帰ってこない – プログラミング – Home

PeekMessageから帰ってこない
 
通知
すべてクリア

PeekMessageから帰ってこない


siva
 siva
(@siva)
ゲスト
結合: 17年前
投稿: 11
Topic starter  

VC++6.0 WinXP MFC 環境です。CMainFrame内で少々時間かかる処理を行い、
その終了時にキー入力とマウス入力をクリアしたく以下の処理を入れました。
********************************
MSG msg;
while(::PeekMessage(&msg,NULL,WM_MOUSEFIRST,WM_MOUSELAST,PM_REMOVE))
 ;
while(::PeekMessage(&msg,NULL,WM_KEYFIRST,WM_KEYLAST,PM_REMOVE))
 ;
*******************************
でプログラムを実行したところXP搭載機では正常に動作するのに、WinMe搭載機では
PeekMessageから帰ってこない状態が発生するのです。しかも動作が不安定で、帰ってく
ることもあるのです。
ちなみに以下のコードでもループから抜けてこないことが発生します。
for(;;){
 if(PeekMessage(&msg,NULL,WM_MOUSEFIRST,WM_MOUSELAST,PM_NOREMOVE))
  PeekMessage(&msg,NULL,WM_MOUSEFIRST,WM_MOUSELAST,PM_REMOVE);
 else
  break;
}
どなたかこの症状をご存知方はいらっしゃいませんでしょうか?


引用解決済
トピックタグ
dicson
 dicson
(@dicson)
ゲスト
結合: 14年前
投稿: 45
 

WinMeでそのような状況に陥るようです。
PeekMessage自体の欠陥と聞いたことがあります。


返信引用
siva
 siva
(@siva)
ゲスト
結合: 17年前
投稿: 11
Topic starter  

MSDNで検索してみたのですがそれらしい文書は見当たりませんでしたが、
OSのアップデートでバグフィックスされているのでしょうか?
もしバグフィックスされていないのであればキーメッセージやマウスメッセージをクリ
アしているようなソフトは皆引っかかってしまうのでは無いでしょうか?


返信引用
dicson
 dicson
(@dicson)
ゲスト
結合: 14年前
投稿: 45
 

GetMessageで捨てるといいのでは?

MSDNにのっていないのは不思議ですね。

ゲームのアルゴリズム(だったかな)とかいう本に載っていました。
正しくはMe以前


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました