- ベストアンサー
モーダルの掛け方
自分で作成したダイアログウィンドウにモーダルを掛けるため、表示時に XXXX.show vbModal としているのですが、これでは、アプリケーションモーダルとなります。 システムモーダルを掛けたい場合は、どのようにすればいいのでしょうか。知っている方、教えて下さい。 なお、使用している環境は、W2K・VB6です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
昔はSetSysModalWindowというAPIでできたのですが、32ビットになってできなくなったようです。 そもそも、このような機能を使ったアプリケーションが強制終了してしまったとき、大変なことになります。 また、ほかのウィンドウを触れないというのは、ユーザーにとってこの上なく不満です。 プログラマが自由にしたいことは、決してユーザーにとって自由でないことを覚えておいてください。
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 やりたいことは、ダイアログを常に前面に表示しておきつつ、後ろのフォームのテキストボックスなどを編集出来るように、ということでしょうか。 つまり、Wordなどの検索ダイアログボックスのような表示です。 それなら、Showメソッドに第2引数を指定すれば出来ます。 ダイアログフォーム名.Show vbModeless, オーナーフォーム名 オーナーフォームは元のフォームです。 では。
補足
maruru01さん。ご回答有り難うございます。 言葉足らずで申し訳ありませんでした。 やりたいことは、単純です。 自分のダイアログを表示したら、その他のアプリケーション及び自分のアプリケーションから開いたウィンドウが前に出てくることなく、且つ、他のアプリケーションの処理を止めたいのです。 MsgBoxの第2引数であるbutton(ボタンの種類、数などを指定する引数)で、「vbSystemModal」を与える事ができますよね。 それと同じ事を、自分で作成したDialogFormオブジェクトを表示したときにやりたいのです。 手法がお解りの方、よろしくお願いいたします。
お礼
ご回答、ありがとうございます。 やはり、SetSysModalWindow以外やる方法はないですか。 どうしてもWindowsカーネル以外をLockしなくてはいけない状況が仕様上発生するのですが、現在、プロトタイプを作成しているので、本来行う複雑な処理を行わず、とりあえず、システムモーダルにして、同じような状態にしたかったのです。 あきらめて、別途、考えます。 ご意見、ありがとうございました。