- 締切済み
VC# 境界線のないウィンドウフレームのサイズ変更
VC#を勉強しています。 質問内容ですが、ウィンドウフレームのプロパティの FormBorderStyle がありますよね。 これを、[none]に設定するとウィンドウフレームが消えます。 このフレームのサイズ変更をマウスを使って行いたいのですが、どうもやり方がわかりません。 境界線がないので、ステータスバーをウィンドウ下部へつけて、ステータスバーの右下のサイズ変更用の部分にマウスカーソルを当ててドラッグしてみても、サイズが変更されません。 何かいい方法があれば、教えて頂きたいです。 どうかよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- gorlib
- ベストアンサー率50% (1/2)
OwnerDrawなウィンドウではよく使う手法ですが、WM_NCHITTESTを利用されてみてはいかがでしょうか? WM_NCHITTESTを利用してウィンドウのリサイズや移動を手抜きするサンプルはちょっと検索すればたくさん出てくると思うので割愛しますが、C#で同様のことを行うときの指針として 1) WndProc をオーバーライドして自前で WM_NCHITTEST を処理するようにする 2) LParam にマウスカーサの座標がスクリーン座標でパックされているので、適宜取り出す 3) マウスカーサがリサイズしたい位置(例えばウィンドウ右下)だったら、HTBOTTOMRIGHTを返す。 で、行けます。 HTCAPTIONを返すようにすれば、ウィンドウの移動も手抜きもできて便利です。
- gimmick
- ベストアンサー率49% (134/270)
Noneはそもそもそういうスタイルなので、どうしようもないかと思います。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsformborderstyleclasstopic.asp ただし、プログラムからのウィンドウサイズ変更は可能ですので、一定周期ごとにマウスの状態を取得して うまく制御してやれば、Sizableと同じような動作は可能かもしれません。単純に、GUIでのサイズ変更機能を 付けたいだけであれば、サイズ変更用のボタン、メニュー等の作成で対応できるでしょう。 #素直にSizableを使用した方が無難かと思いますが…。