VBでは一般的に「画面より大きなフォームは作成できない」と言われています。 それは「不可能」なのではなく、「やるのが面倒」なだけなんだよってのを示すためにサンプルを作ってみました。 とりあえず、ダウンロードしたら実行してみてください。 (一般的な1024x768の画面では)マウスでは動かしきれない大きさのフォームが表示されると思います。
Windowsでは表示できるウィンドウの最大・最小サイズが知りたいときに、そのウィンドウに対して、 WM_GETMINMAXINFOメッセージを投げて、サイズを取得しようとします。 んで、そのウィンドウの最大サイズってののデフォルト値が画面のサイズになってるのでしょう。
そんなわけで、標準ではWM_GETMINMAXINFOメッセージを処理できないVBでは、 「画面より大きなフォームは作成できない」ってことになってるのです。
ってことは。 そのメッセージをサブクラス化してフックしてやりゃ、万事解決ってことですよね。
ってことで、WM_GETMINMAXINFOメッセージをフックする処理をラッピングしたCLimitFormクラスを 作成してみました。 これを使うことで、画面より大きなフォームだけでなく、画面サイズの制限のあるフォームを作成することも出来ます。
本配布物(Exeやらソースやらね)は私ことももたろが作成しました。 ので、一応、著作権は私が持ってることになります。 が、あんまりうるさいことは言いませんってゆーか言いたくありませんので、 商用・非商用かかわらず自由に利用してしまってください。
ソースが配布されている場合、そのソースを利用して作成されたバイナリ及びソースを配布する際に、 私に断りを入れる必要はありませんし、そのことを明記する必要もありません。 ・・・とはいえ、一言教えてくれたりすると私が小躍りして喜びますし、 まったく同じものを著作権表示だけ変えて公開されたりすると不愉快な気分になります。 まぁ、そこらへんは利用者の良心にお任せします。
あ、そうそ。これを書いとかないと。 本配布物を利用する為の対価は一切頂きませんが、 そのかわり、利用したことによって起こった如何なる問題に関して ももたろは一切その責任を負いません。ってゆーか負えません。
まぁ、簡単に言うと 「タダで配布するんで、勝手に使ってちょーだいな。その代わり何があっても知らないよ」 ってことです。