• ベストアンサー

モーダルの掛け方

自分で作成したダイアログウィンドウにモーダルを掛けるため、表示時に   XXXX.show vbModal としているのですが、これでは、アプリケーションモーダルとなります。 システムモーダルを掛けたい場合は、どのようにすればいいのでしょうか。知っている方、教えて下さい。 なお、使用している環境は、W2K・VB6です。

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

  • ベストアンサー
  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

昔はSetSysModalWindowというAPIでできたのですが、32ビットになってできなくなったようです。 そもそも、このような機能を使ったアプリケーションが強制終了してしまったとき、大変なことになります。 また、ほかのウィンドウを触れないというのは、ユーザーにとってこの上なく不満です。 プログラマが自由にしたいことは、決してユーザーにとって自由でないことを覚えておいてください。

参考URL:
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_setsysmodalwindow.htm
Lara-Port
質問者

お礼

ご回答、ありがとうございます。 やはり、SetSysModalWindow以外やる方法はないですか。 どうしてもWindowsカーネル以外をLockしなくてはいけない状況が仕様上発生するのですが、現在、プロトタイプを作成しているので、本来行う複雑な処理を行わず、とりあえず、システムモーダルにして、同じような状態にしたかったのです。 あきらめて、別途、考えます。 ご意見、ありがとうございました。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 やりたいことは、ダイアログを常に前面に表示しておきつつ、後ろのフォームのテキストボックスなどを編集出来るように、ということでしょうか。 つまり、Wordなどの検索ダイアログボックスのような表示です。 それなら、Showメソッドに第2引数を指定すれば出来ます。 ダイアログフォーム名.Show vbModeless, オーナーフォーム名 オーナーフォームは元のフォームです。 では。

Lara-Port
質問者

補足

maruru01さん。ご回答有り難うございます。 言葉足らずで申し訳ありませんでした。 やりたいことは、単純です。 自分のダイアログを表示したら、その他のアプリケーション及び自分のアプリケーションから開いたウィンドウが前に出てくることなく、且つ、他のアプリケーションの処理を止めたいのです。 MsgBoxの第2引数であるbutton(ボタンの種類、数などを指定する引数)で、「vbSystemModal」を与える事ができますよね。 それと同じ事を、自分で作成したDialogFormオブジェクトを表示したときにやりたいのです。 手法がお解りの方、よろしくお願いいたします。

関連するQ&A