[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/03/07(Wed) 11:38
投稿者名:ようこ
Eメール:
URL :
タイトル:
Msgboxが隠れてしまいます
VB6
お世話になります。
以下の関数にて、ウインドウを最前面に表示する処理を行っていると、Msgboxが隠れてしまい
表示されないのですが、何か良い方法はないのでしょうか?
よろしくお願い致します。

SetWindowPos Me.hwnd, conHwndTopmost, _
                 Me.Left / Screen.TwipsPerPixelX, _
                 Me.Top / Screen.TwipsPerPixelY, _
                 Me.Width / Screen.TwipsPerPixelX, _
                 Me.Height / Screen.TwipsPerPixelY, 0

投稿時間:2007/03/07(Wed) 12:45
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Msgboxが隠れてしまいます
conHwndTopmost で他のウィンドウをTopに設定したいでは矛盾するかと。

Msgbox を表示する前に
第二引数を conHwndNoTopmost に変更して見たらどうでしょうか?

投稿時間:2007/03/07(Wed) 13:07
投稿者名:ようこ
Eメール:
URL :
タイトル:
Re^2: Msgboxが隠れてしまいます
> conHwndTopmost で他のウィンドウをTopに設定したいでは矛盾するかと。
>
> Msgbox を表示する前に
> 第二引数を conHwndNoTopmost に変更して見たらどうでしょうか?

元のコードは、以下となっています。

iRtn = MsgBox("コンピュータを終了してよろしいですか?", vbYesNo+ vbQuestion + vbDefaultButton2, "終了")

以下のように変更し、実行しましたが、残念ながらだめなようです。

iRtn = MsgBox("コンピュータを終了してよろしいですか?", conHwndNoTopmost , "終了")

よろしくお願いします。

投稿時間:2007/03/07(Wed) 13:16
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: Msgboxが隠れてしまいます
> 以下のように変更し、実行しましたが、残念ながらだめなようです。
いや、MsgBox 関数じゃなくて、SetWindowPos 関数の方ですよ。(^_^;)
MsgBox 表示中は、最前面表示を一時的に中止する、ということです。


もし、MsgBox 関数側で対応するなら、第2引数に vbSystemModal フラグを追加するとか。

投稿時間:2007/03/07(Wed) 17:08
投稿者名:ようこ
Eメール:
URL :
タイトル:
Re^4: Msgboxが隠れてしまいます
> > 以下のように変更し、実行しましたが、残念ながらだめなようです。
> いや、MsgBox 関数じゃなくて、SetWindowPos 関数の方ですよ。(^_^;)
> MsgBox 表示中は、最前面表示を一時的に中止する、ということです。
>
>
> もし、MsgBox 関数側で対応するなら、第2引数に vbSystemModal フラグを追加するとか。

ご返信ありがとうございます。
最前面表示を一時的に中止するのはまずいんです。
だから、MsgBox 関数側で対応したいのですが・・・vbSystemModal を追加してもだめでした。
よろしくお願いします。

投稿時間:2007/03/07(Wed) 17:13
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^5: Msgboxが隠れてしまいます
> だから、MsgBox 関数側で対応したいのですが・・・

ならば、MsgBox と同様のフォームを自作し、それを最前面にモーダル表示するとか。

投稿時間:2007/03/07(Wed) 17:23
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: Msgboxが隠れてしまいます
> 最前面表示を一時的に中止するのはまずいんです。
仮にMsgBoxを最前面に表示したら元のウィンドウは最前面でなくなるのでは。
同時に複数のウィンドウを最前面に表示する事はできませんよね。
解除するというより2番目に移動(表示)すると考えたらいいのでは。

>MsgBox 関数側で対応したいのですが・・・vbSystemModal を追加してもだめでした
なら  or vbMsgBoxSetForeground  ではどうでしょう。

一度状況を再現できるコード(使っているコード)を投稿して見て下さい。
試した限りでは、MsgBox が最前面に表示されますが(隠れない)