• ベストアンサー

SetWindowPosで、移動可能のフォーム

vb6.0で、拡大鏡のプログラムを作成しています。 このフォームを常に手前に表示するように作成したかったので、SetWindowPosを使用しました。 このフォームがタイトルバーをドラッグしたときに移動可能にするにはどのようにすればよいのでしょうか? SWP_NOMOVE=&H2&で、現在の位置を変更しない ということが出来るそうですが その逆に 「現在の位置を変更可能にする」 ということが出来ればいいのですが… よろしくお願いします。

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

  • ベストアンサー
回答No.1

SWP_NOMOVE というフラグは、 「そのウィンドウを動かせないようにする」 という意味ではありません。 本来、SetWindowPos は、ウィンドウの位置とサイズとZオーダーを すべて指定する必要がありますが、HWND_TOPMOST を指定したいだけで、 ウィンドウの位置とサイズは変える必要はない、などの場合に、 いちいち現在の位置とサイズを求めて指定するのはナンセンスなので、 「とりあえず位置は 0,0 を指定するけど無視してね」 というときに使います。 ウィンドウの移動可能/不可能には、SetWindowPos は無関係です。 特に何もしなければ、普通はタイトルバーをつまんで動かせるので、 動かせないということは「動かせなくする処理をわざわざ入れてある」 のだと思われます。

amikiho
質問者

お礼

この質問を投稿した直後、問題は別にあることに気がついて SetWindowPosのSWP_NOMOVE=&H2&に問題はないことがわかりました。 質問を削除したかったのですが、削除できず。。。 回答者様のおっしゃる通りでした。 ご回答有難うございました。

関連するQ&A