- - PR -
VB6初心者です。モーダルフォームを表示したいのですが。。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-14 10:34
ああ、やっぱり... で、ほんとにシステムモーダルな画面で良いのでしょうか? vbp2.exeも中断されますが... もしそうなら、VC++か何かでモーダルダイアログを出すものを作って 呼び出すとか、ActiveXを使うとかぐらいしか思いつかないですね。 ただ、vbp2の処理を中断するのでは無く、GUI操作のみだったら、 メッセージフック等をすれば実現できるかと。 この2つの関係のみなら、単純にVBP2.exeのウィンドウハンドルを取得して、 SendMessage等で非表示またはDisableに変えるという事でも実現できるかも。 (自分のexeの方は開いているフォームをdisableにするだけです。) | ||||
|
投稿日時: 2005-07-14 10:41
> ただ、vbp2の処理を中断するのでは無く、GUI操作のみだったら、
> メッセージフック等をすれば実現できるかと。 は!まさにそのイメージです!GUI操作だけで十分です。 「メッセージフック」なども検索の途中に出てきたのですが、何のことかわかりませんでした。。 大変お手数ですが、私にでもわかるようなコーディング例を載せていただけませんでしょうか。。 | ||||
|
投稿日時: 2005-07-14 11:28
でも別プロセスのメッセージをフックするのは、VB6.0では無理と言うか、無茶と言うか、無謀と言うか・・・。インプロセスCOM(ActiveX DLL)にすれば出来ますけど、IDE上ではまともにデバッグできませんよ。 Windowsからシステムモーダルなウィンドウと言う概念が無くなって久しいです。GUI操作を禁止したいのだろうと思ったから「画面をキャプチャーして、全画面表示したウィンドウに描画してあげれば?」と提案したわけなんですが。だめですか?OSのスタートメニューの電源を切るでも、似たようなことやってるし良いんじゃないかなぁと。 | ||||
|
投稿日時: 2005-07-14 12:52
McLarenさん、こんにちは。
システムモーダルに見せたいのなら、甕星さんの提案する方法に一票。 そうではなくて、あくまでもForm1、Form2、wnd3の中だけで一つだけ有効にしたいフォームがあるんなら、単に他のフォームを無効にして、前面に出ないようにすれば良いんじゃないかと思います。 |