フォームの境界線スタイルを「なし」に設定した状態で、境界線スタイルを「サイズ調整可能」の時のようにフォーム画面の右下をマウスでドラッグしながフォームの画面サイズを調整することは可能でしょうか?
ちなみにこちらのサイトにある「マウスドラッグで移動できるコントロール」を参考にコントロールの移動と同時に画面サイズを変更するところまでは出来たのですが、マウスをドラッグした状態でポインタを画面右下に維持することが出来ず断念いたしました・・
通報 ...
フォームの境界線スタイルを「なし」に設定した状態で、境界線スタイルを「サイズ調整可能」の時のようにフォーム画面の右下をマウスでドラッグしながフォームの画面サイズを調整することは可能でしょうか?
ちなみにこちらのサイトにある「マウスドラッグで移動できるコントロール」を参考にコントロールの移動と同時に画面サイズを変更するところまでは出来たのですが、マウスをドラッグした状態でポインタを画面右下に維持することが出来ず断念いたしました・・
最初、拡張ズームボックス関数 - hatena chipsを参考に、API の SetWindowLong で何とかしようと苦戦しましたが、うまくいきませんでした。
ふと、下記を思い出して、
タイトルバー以外をドラッグしてフォームを移動させる - hatena chips
これを参考にSendMessageで右下枠をクリックしたことにすればうまくいきました。
フォームの右下にラベルを配置して、下記のように設定します。
名前 lblResize
水平アンカー 右
垂直アンカー 下
フォームのモジュールを下記のように記述します。
以上です。ラベルを使用しましたが、四角形コントロールやイメージコントロールでもOKです。
右下以外でもサイズ変更したい場合は、下記を参考にConst宣言してください。
HTLEFT 10 可変枠の左辺境界線
HTRIGHT 11 可変枠の右辺境界線
HTTOP 12 可変枠の上辺境界線
HTTOPLEFT 13 可変枠の左上隅
HTTOPRIGHT 14 可変枠の右上隅
HTBOTTOM 15 可変枠の下辺境界線
HTBOTTOMLEFT 16 可変枠の左下隅
HTBOTTOMRIGHT 17 可変枠の右下隅
ちなみに、下記を追加すると詳細セクションのドラッグでフォームを移動できます。
なるほど! SendMessageにこんな使い道があったとは! コードがすごくシンプルに実装できますね。
あと実装して分かったことですが、サブフォームやListBoxの範囲内でドラッグを開放した場合ラベルやイメージのコントロールが背面に隠れてしまい再度ドラッグすることが不可能になってしまいました。
対策としては、初期の画面サイズ(InsideWidth or InsideHeight)を記憶してそれ以下に縮小しないように規制するコードを試行錯誤してみようと思います。
なにはともあれ、短時間でこのようなアイデアを教授頂き大変有り難うございます。
↑で書き込んだ「ラベルやイメージのコントロールが背面に隠れてしまい」の部分ですがアンカーを使用した場合は、初期表示の画面サイズ以下でドラッグを開放すると画面が見切れてしまい操作不能という表現が正しかったです。
初期画面以下に縮小できないように規制するコードも思っていたよりも簡単に出来たので参考までに載せておきます。
以上、ありがとうございました。