掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WM_LBUTTONUPメッセージについて (ID:55656)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
メッセージボックスを使っているのですか。 メッセージボックスは Focus を変えてしまうので、 予期せぬメッセージが飛び交います。 VCのデバッグモードで、tr() を使ってメッセージを 確認してください。spy++ を使ってもいいです。 確認とはメッセージの意味をHELPで調べるということです。 WM_LBUTTONUP でのメッセージボックスは関係ないように 思われるかもしれませんが、次の WM_LBUTTONDOWN が発生するときに FOCUS の変化のためのメッセージが飛んできて、面倒なことになります。 このような障害を相手にするときは、注目しているメッセージだけでなく、 他のすべtのメッセージを表示させるようにすべきです。 何が起きているか、間接的にでもつかめることが多いというものです。 そして、WM_SETCURSOR とか WM_MOUSEMOVE のような 分かりきったものを表示からはずしてゆけばいいですね。 たまに、外したものが重要なメッセージであったこともありますが。(^^;; メッセージのコードをいちいち調べるのが面倒なら、 以下の文字列化テーブルとルーチンを用意しておきましょう。 一度だけ我慢して作っておけば、再利用可能ですからね。 もちろん全てのメッセージを網羅しておかないと、意味ないです。 struct tagMsgStrs { UINT msg; char * name; } g_msgStrs[] = { { WM_NULL, "WM_NULL" }, { WM_CREATE, "WM_CREATE" }, { WM_DESTROY, "WM_DESTROY" }, ..... { WM_MOUSEMOVE, "WM_MOUSEMOVE" }, // 0x0200 { WM_LBUTTONDOWN, "WM_LBUTTONDOWN" }, // 0x0201 { WM_LBUTTONUP, "WM_LBUTTONUP" }, // 0x0202 { WM_LBUTTONDBLCLK, "WM_LBUTTONDBLCLK" }, // 0x0203 ..... }; char * strmsg( UINT msg ) { int c; static char s[128]; for( c = 0; g_msgStrs[c].name; c ++ ) { if( g_msgStrs[c].msg == msg ) { return( g_msgStrs[c].name ); } } sprintf( s,"unknown[%08X]", msg ); return( s ); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.