• ベストアンサー

WM_SIZEとWM_SIZINGの違い (Win32API)

Windowsプログラミングで、画面のサイズを変更したときに送られてくるメッセージで、 WM_SIZEで処理するのとWM_SIZINGで処理するのとでは何が違うのでしょうか? WM_SIZEとWM_SIZINGの違いは何なのでしょうか? また、似たようなものでWM_MOVEとWM_MOVINGの違いも教えてもらいたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

実際にプログラムを書いてみれば、両者の違いは明白になるでしょう。 WM_SIZE は「サイズの変更後に」メッセージがアプリケーションに飛んでくるので、 ウィンドウのコーナーからマウスを離した時に文字がビョンと移動します。 Windows98 くらいまではウィンドウのサイズの変更はまずは輪郭だけサイズが変って マウスをコーナーから離した時にウィンドウの中身が再描画されていたので、 WM_SIZE のメッセージハンドラを実装することになったでしょう。 しかし最近のインターフェイスはサイズ変更中もズリズリとウィンドウの中身が 再描画され続けます。これには WM_SIZING のメッセージハンドラを実装して、 サイズ変更中常に文字列の再描画を繰り返す必要があるでしょう。

oropon
質問者

お礼

更に回答ありがとうございます。 WM_SIZEは古いOSのなごりのようなものなのでしょうかね? おかげさまでなんとなく違いが分かってきたので、あとは自分でいろいろ試してみて理解しようと思います。 ありがとうございました。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

ドキュメントを読めばすぐわかる The WM_SIZE message is sent to a window after its size has changed. The WM_SIZING message is sent to a window that the user is resizing.

oropon
質問者

お礼

回答ありがとうございます。まだはっきりと理解できてないので更に質問よろしいでしょうか? ある入門書で文字列を常に画面の中央に表示するプログラムの例として、WM_SIZEメッセージを受け取ったときに描画位置を再計算するというものがあり、またそれとは別で、サイズ変更を抑制するプログラムの例として、WM_SIZINGを受け取ったとき変更後のウィンドウ位置を強制的に元の状態に書き換えて変更をできなくするというのもあったのですが、例えば前者をWM_SIZINGに、後者をWM_SIZEにしても問題はないのでしょうか? 具体的に両者の違いを意識しなければいけないような場合はどんなときでしょうか?

関連するQ&A