ページ 11

フルスクリーン時のMessageBoxについて

Posted: 2008年12月07日(日) 12:01
by 羽流布
就活真っ最中ですが、まったりゲーム制作も進めてます。羽流布です。

では、本題です。
フルスクリーン状態で終了確認メッセージボックスを表示したいのです。
しかしながら添付ファイルのような感じですと、
1回目はちゃんと表示できるのに「いいえ」を選択して2回目を試すと後ろに隠れてしまいます。
(終了はエスケープキーやALT+F4です)

解決策はありませんでしょうか?

Re:フルスクリーン時のMessageBoxについて

Posted: 2008年12月07日(日) 12:17
by 御津凪
こちらの環境(Vista)では正常に表示されました。

ので、これで解決するかどうかはわかりませんが、メッセージボックスの表示のフラグに、
MB_TOPMOST (常に手前に表示)を追加してみてください。

Re:フルスクリーン時のMessageBoxについて

Posted: 2008年12月07日(日) 12:27
by 羽流布
おっと、環境を書き忘れていましたね……失礼しましたm(_ _)m

僕の環境は、
DXライブラリ:Ver2.24c → 2.25
OS:WindowsXP ( Build 2600 Service Pack 3 )
開発環境:Visual Studio 2008 Express Edition
です。

MB_TOPMOSTを試してみたところ、変化はありませんでしたorz
OSに原因があるのでしょうか?

【追記】
先ほどDXライブラリの最新版を試してみましたが、ダメでした・・・
うーん、困りました(。´・ω・)

Re:フルスクリーン時のMessageBoxについて

Posted: 2008年12月07日(日) 19:05
by 羽流布
いろいろ試してみましたが解決には至らず……。

最終的には、添付ファイルのように画面を消すという発想になりました。
ですが、見た目が美しくないということもあり実用的ではないですね。

MessageBoxによる終了確認は諦めることにします。

制作中のゲームですが、4月くらいには詳細を晒すつもりです。
では失礼しますm(_ _)m

Re:フルスクリーン時のMessageBoxについて

Posted: 2008年12月07日(日) 20:31
by Justy
 多分ですが、後ろに隠れているというより、ただ単に表示されていないだけだと思います。
 つまり、表示されているだろうところをクリックすれば、何か反応するかもしれません。

 で、解決方法となるかどうかはわかりませんが、DxLib_Init()前に SetUseGDIFlag()を
コールしていますよね?

 これを、DxLib_Init()の前ではなく、MessageBox()の前後に挟んでみてはどうでしょうか。
 前は 1を、後は 0を指定すれば、ひょっとしたらうまくいくかもしれません。


 ただ、フルスクリーンのアプリでダイアログが出るというのは、やっぱり美しくはないですね(^^

Re:フルスクリーン時のMessageBoxについて

Posted: 2008年12月07日(日) 20:44
by 羽流布
> Justyさん

正常に表示できました!
ホント感謝です^^

どうやらSetUseGDIFlag()はDxLib_Init()の後で使うべきだったようです。
よく解らないまま使っていました……。

【追記】
表示はできるようになりましたが、メッセージボックスをドラッグして動かすと酷いことに……。
うーん、難しい課題ですねorz

ですが、こちらは特に問題なさそうなので、とりあえず気にしない方向でいきます。
完成後の課題ということで(;^^