• ベストアンサー

Formを動かせるようにしたい

お世話になります。 OS XP PRO  VB6(SP5)で開発しています。 ディスプレイのサイズによりFormを動かせたり固定させたりしたいのですが、 規定値は固定にしたいのでFormプロパティのMoveableはFalseにしてあります。 下記のようにプログラミングしたのですが固定されたままです。 Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Private Declare Function GetSystemMenu Lib "user32" (ByVal _ hwnd As Long _ , ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" ( _ ByVal hMenu As Long, ByVal nPosition As Long, _ ByVal wFlags As Long) As Long Private Declare Function DrawMenuBar Lib "user32" ( _ ByVal hwnd As Long) As Long Private Const MF_BYCOMMAND = &H0 Private Const SC_MOVE = &HF010 Private Sub Form_Load() Dim kk As Long kk = GetSystemMenu(.hwnd, bb) Call RemoveMenu(kk, SC_MOVE, MF_BYCOMMAND) Call DrawMenuBar(.hwnd) End Sub アドバイス頂きたくよろしくお願いします。 以上です。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

Movableはデザイン時にしか変更できないプロパティです Movable = Falseの場合 kk = GetSystemMenu( Me.Hwnd, 1 ) ' 移動可能 kk = GetSystemMenu( me.Hwnd, 0 ) ' 移動不能 と出来るようです ただし 単純にタイトルバーをドラッグしての移動は出来ません システムメニューから『移動』を選択してカーソルが移動用の十字架ーソルに変更された場合だけのようです これは、Formの内部でMovableプロパティを見ているためでしょう タイトルバーをドラッグして移動をさせたい場合は Formをサブクラス化して移動に関するメッセージを独自処理してやる必要がありそうです

090303kan
質問者

お礼

redfox63様 早々ご回答頂きありがとうございました。 お礼が遅くなり申し訳ありません。 ご教授頂いた方法でなんとか納得してもらえました。 ありがとうございました。 以上 お礼が遅くなり申し訳ありませんでした。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

vbModal vbmodeless でWEB照会(Googleで検索)して、読んで見たら。

090303kan
質問者

お礼

imogasi様 早々に回答頂きありがとうございました。 本来やるべきことを再考するにあたって参考になりました。 ありがとうございました。 以上 回答が遅くなり申し訳ありませんでした。

関連するQ&A