プロが教えるわが家の防犯対策術!

WM_KILLFOCUS とか WM_SIZE を送るにはどうしたらいいんですか?
例えば、リサイズしたら case WM_SIZE: のソースを実行できるけど
リサイズしていないのに case WM_SIZE: のソースを実行させたい
場合はどうしたらいいのかを知りたいです。

A 回答 (2件)

SendMessage API、PostMessage API を調べてみてください。

通常はSendMessage APIを使用します。
ただ、もし、同じプログラム内から呼び出すのであれば、(この例の場合)WM_SIZEでの処理を関数にしておいて、それを呼び出す方が設計的には良いと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
SendMessage( ) でできました。

お礼日時:2002/01/18 23:16

通常は SendMessage() を使います。



例えば、フォーカスを失わせるのであれば、

SendMessage(editBox, WM_KILLFOCUS, 0, 0L);

という感じ。パラメータ wParam、lParam に何を設定すべきかは、マニュアルの Reference を
参照して決めます。


> リサイズしていないのに case WM_SIZE: のソースを実行させたい

は、実行させたい内容によりますが、あるタイミングで強制的にウィンドウのサイズを変更したい、と
いうことが目的であれば WM_SIZE メッセージを送るか MoveWindow() を使うべきです。
    • good
    • 0
この回答へのお礼

SendMessage(editBox, WM_KILLFOCUS, 0, 0L);
で、case WM_KILLFOCUS: のソースが実行できました。
まだパラメータを知らないから、case 何とか: を
実行させることしかできなくてフォーカスは外せないけど。
SendMessage( ) の型と、UINT に msg を送る方法は
分かりました。

 case WM_SIZE:
  MessageBox(hWnd, "", "", MB_OK);
 break;
 case WM_MOVE:
  SendMessage(hWnd, WM_SIZE, 0, 0L);
 break;

これで、ウインドウを移動させたら case WM_SIZE: の
ソースを実行させることができました。
ありがとうございます。

お礼日時:2002/01/18 23:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!