MDIフォームのコントロールボックスを設定するには?

解決


たき  2003-03-05 21:52:49  No: 106201  IP: [192.*.*.*]

通常のフォームの場合、
BorderStyleプロパティでフォームのスタイルを、
ControlBox、MinButton、MaxButtonでコントロールボックスの表示を
設定できますが、
MDIフォームでも同じように設定することは出来ないのでしょうか?
ヘルプを見ても見つけられなかったので、出来ないのかもしれませんが、
もし設定することが出来るのでしたら、その方法を教えていただけないでしょうか?
よろしくお願いします。

編集 削除
とろ  2003-03-06 09:10:00  No: 106202  IP: [192.*.*.*]

以下のページが参考になると思います。

GetWindowLong API, SetWindowLong API
を使用しなければなりません。

http://support.microsoft.com/default.aspx?scid=kb;ja;137033

編集 削除
たき  2003-03-06 10:44:46  No: 106203  IP: [192.*.*.*]

とろさんありがとうございます。
上手くコントロールボックスの設定をすることが出来ました。

しかし、フォームのサイズをカーソルで変更できてしまうので、
変更できないようにしたいのですが、
それはどうやって行うのでしょうか。
要は最大・最小ボタンを消して、フォームのサイズを変更できなくしたいんです。
SetWindowLongを使えばそれも出来るかと思って調べてみたのですが、
なかなか見つかりませんでした。
別のAPIを使うのでしょうか。

編集 削除
とろ  2003-03-06 11:27:41  No: 106204  IP: [192.*.*.*]

# 少しは自分で考えましょう。
下のようにするだけです。

Const WS_THICKFRAME = &H40000

Private Sub MDIForm_Load()
  Dim L As Long
  L = GetWindowLong(Me.hwnd, GWL_STYLE)
  L = L And Not (WS_MINIMIZEBOX)
  L = L And Not (WS_MAXIMIZEBOX)
  L = L And Not (WS_THICKFRAME)
  L = SetWindowLong(Me.hwnd, GWL_STYLE, L)
End Sub

編集 削除
たき  2003-03-06 12:20:02  No: 106205  IP: [192.*.*.*]

とろさんどうもありがとうございました。
もっと時間をかけて調べてから投稿すべきだったと反省しております。
これらのAPIについて、この後もっと調べてみようと思います。
いろいろなことに応用できるようなので。
これからはもっと調べてから質問するよう気をつけたいと思いますので、
これからもよろしくお願いします。
失礼します。

編集 削除
たき  2003-03-06 12:56:56  No: 106206  IP: [192.*.*.*]

解決チェックを入れるのを忘れていました。

編集 削除