WM_EXITSIZEMOVEについて

[戻る]
タク 2002/04/26(金) 12:39:10
はじめまして。
まだvisualCを使い出して間もないため文章におかしなところがあるかもしれません。
自分なりに調べたのですがどうしてもわからないことがあるので質問させてください。

MFCを使ってプログラミングしています。
WM_EXITSIZEMOVEというメッセージを受け取って処理をさせようとしたのですが、
ClassWizardではサポートされていませんでした。
そこで自分でメッセージマップに記述しようとしたのですが
対応するハンドラとマクロ名がわかりません。
ON_WM_EXITSIZEMOVE()にでもなるのかなと思ったのですが、
ヘルプを調べても載っていません。
どうすればWM_EXITSIZEMOVEを処理できるのでしょうか?
教えていただければありがたいです。

余談ですが、WM_EXITSIZEMOVEを処理しようとした理由は、
AVIファイルの画像を並べて表示するアプリケーションを作成していたのですが、
ウィンドウサイズを変更した際に再描画が行われちらつくのが気になるので
ウィンドウサイズの変更中はWM_ERASEBKGNDメッセージを処理しないという方法をとりたかった
からです。
もし他に良い方法があればアドバイスをお願いします。

Bun 2002/04/26(金) 13:13:10
DefWindowProc()を処理してはどー?

くたくた 2002/04/26(金) 13:25:23
ON_MESSAGE()(又は他の同様なマクロ)を使ってみて下さい。

WM_EXITSIZEMOVEは「プライベートメッセージ扱い」の為、
クラスウィザードで処理できません。(VC++6.0にて)
又、MSDNにもありません。

尚、私の環境(Win2K+SP2,VC++6+SP5,MFC)では、
最大、最小、復元化時は発行されませんでした。

タク 2002/04/26(金) 15:45:05
[[解決]]
ありがとうございました^−^

どうやってよいのかさっぱりわからなかったんですが、
あげていただいた簡単な方法だけで2通りもあったんですね。

おかげさまで意図どおりの処理を行うことができました。
DefWindowProc()を用いる方法はオーバーライドのやり方に不安があったので、
くたくたさんが紹介してくださったON_MESSAGE()を使用しました。
WM_ENTERSIZEMOVEとWM_EXITSIZEMOVEを受け取って
ウィンドウサイズ変更中にフラグを立てることで解決できました。
メッセージが送られてくるのがViewじゃなくMainFrameだったので少しだけ苦労しましたが。

ON_MESSAGEは他にもいろいろと使えそうです。
少しVisualCが使えるようになった気がします(笑)。

ただ残念なのは処理は意図どおり行えるようになったのですが、
結果は予定と違ってました(笑)。
まだまだ未熟ですね。

ウィンドウサイズ変更中は背景クリアしないようにしたため、
ごみが残って描写が汚くなってしまったのです。

結局クライアント領域すべてを描画することで解決したのですが、
この場合背景消去を常に無効にすればいいので
サイズ変更を検出する必要がありませんでした(笑)

これからも勉強していきたいと思います。
ほんとうにありがとうございました。

タク 2002/04/26(金) 16:13:45
すいません、いまさらですが開発環境書き忘れてました。
Win2000SP2,VC++6.0SP5,MFC使用です。

古いスレッドには追加発言できません。