幼稚園時代「何組」でしたか?

VC#を勉強しています。
質問内容ですが、ウィンドウフレームのプロパティの
FormBorderStyle がありますよね。
これを、[none]に設定するとウィンドウフレームが消えます。
このフレームのサイズ変更をマウスを使って行いたいのですが、どうもやり方がわかりません。

境界線がないので、ステータスバーをウィンドウ下部へつけて、ステータスバーの右下のサイズ変更用の部分にマウスカーソルを当ててドラッグしてみても、サイズが変更されません。

何かいい方法があれば、教えて頂きたいです。
どうかよろしくお願いいたします。

A 回答 (2件)

OwnerDrawなウィンドウではよく使う手法ですが、WM_NCHITTESTを利用されてみてはいかがでしょうか?


WM_NCHITTESTを利用してウィンドウのリサイズや移動を手抜きするサンプルはちょっと検索すればたくさん出てくると思うので割愛しますが、C#で同様のことを行うときの指針として

1) WndProc をオーバーライドして自前で WM_NCHITTEST を処理するようにする
2) LParam にマウスカーサの座標がスクリーン座標でパックされているので、適宜取り出す
3) マウスカーサがリサイズしたい位置(例えばウィンドウ右下)だったら、HTBOTTOMRIGHTを返す。

で、行けます。
HTCAPTIONを返すようにすれば、ウィンドウの移動も手抜きもできて便利です。
    • good
    • 0

Noneはそもそもそういうスタイルなので、どうしようもないかと思います。


http://www.microsoft.com/japan/msdn/library/defa …

ただし、プログラムからのウィンドウサイズ変更は可能ですので、一定周期ごとにマウスの状態を取得して
うまく制御してやれば、Sizableと同じような動作は可能かもしれません。単純に、GUIでのサイズ変更機能を
付けたいだけであれば、サイズ変更用のボタン、メニュー等の作成で対応できるでしょう。

#素直にSizableを使用した方が無難かと思いますが…。
    • good
    • 0

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


おすすめ情報