WM_EXITSIZEMOVEについて – プログラミング – Home

通知
すべてクリア

[解決済] WM_EXITSIZEMOVEについて


タク
 タク
(@タク)
ゲスト
結合: 23年前
投稿: 37
Topic starter  

はじめまして。
まだvisualCを使い出して間もないため文章におかしなところがあるかもしれません。
自分なりに調べたのですがどうしてもわからないことがあるので質問させてください。

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

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


引用未解決
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

DefWindowProc()を処理してはどー?


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

ON_MESSAGE()(又は他の同様なマクロ)を使ってみて下さい。

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

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


返信引用
タク
 タク
(@タク)
ゲスト
結合: 23年前
投稿: 37
Topic starter  

ありがとうございました^-^

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

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

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

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

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

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

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


返信引用
タク
 タク
(@タク)
ゲスト
結合: 23年前
投稿: 37
Topic starter  

すいません、いまさらですが開発環境書き忘れてました。
Win2000SP2,VC++6.0SP5,MFC使用です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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