掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
GetMessageの仕様についてPart2 (ID:57624)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
先日GetMessageに関して少し質問させて頂いたのですが、 仕様が未だよくわかっておらずまたここにおせわになってしまいました^^; while(Msg.message != WM_QUIT){ if (GetMessage(&Msg, NULL, 0, 0)){ TranslateMessage(&Msg); DispatchMessage(&Msg); } } 以上のソースについてなのですが、これではメッセージは受け取るものの またもや激しく処理落ちしてしまいます。 以前、 if (GetMessage(&Msg・・・){ の文についてBanさんよりこれではエラー時に具合が悪いとご指摘頂いたのですが その詳細がよくわかりません(´・ω・`) 自分的にはこのGetMessageのif文によりTRUE時(メッセージ取得時)にTranslate&Dispatchが実行され、FALSE時(WM_QUITorエラー)にはそれらを実行しないものだと認識しているのですがどこが悪いのか詳細を教えて頂けたらと思います。(力不足で申し訳ないです) また、PeekMessageとGetMessageの違いについてもなのですが、 メッセージ取得時に待機するかそうでないかという違いについては理解できたのですが、(つもりかも・・・)その詳しい詳細がやはり・・・ if (PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE)){ if (GetMessage(&Msg, NULL, 0, 0)){ TranslateMessage(&Msg); DispatchMessage(&Msg); } } 以上の文についてPeekMessageでメッセージを取得し、そのメッセージをキューに残したままGetMessageでさらにメッセージを受け取るということが二度手間ではないかと思い、GetMessage文を削除し、PeekMessageでメッセージを受け取りPM_REMOVEでTranslate&Dispatchしてみようと試みましたがやはりだめでした。 (メッセージを受け取らずキー操作等を認識せず) また、それをPM_NOREMOVEにしてみるとうまくいきました。 なぜPeekMessageにてメッセージを受け取り、それを引数として渡しているのにうまくいかないのか、そして以上の理由によりPeekMessageを削除し、GetMessageのみにすると処理落ちしてしまうのか、(↑で最初に書いた内容です) どうかご指導頂きたく。(´Д⊂ 尚、以前Banご指摘の通りPeekMessageではCPUを喰うためできるだけ今回のPGには使いたくないと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.