トップページ > 過去ログ > 記事閲覧
フルスクリーン時でのコモンダイアログの使用について
名前:Mynk 日時: 2007/01/10 20:34

はじめまして! WindowsプログラムやDirectXについて知識がない私でも ゲームプログラミングをすることができて 大変便利にDXライブラリを使わせてもらっています(^^) DXライブラリの問題とは少しずれた質問になるかも知れないのですが、 わからない部分があったので質問させてもらいます。 当方のゲーム内でGetOpenFileName関数を使ってプレイヤーに ファイルを選択させるダイアログを使っている場面があります。 画面をウィンドウモードにしてダイアログを表示する分には問題はないのですが、 フルスクリーン時にダイアログを表示しようとすると ダイアログが表示されなかったり、また、表示はされるけど操作はできなかったりと 色々と不都合が起きてしまいます。 これを解消するには、一度ウィンドウモードに戻してからダイアログを呼び出し、 ダイアログからファイルを選び終えたらまたフルスクリーンに戻す方法以外に 解決策はないでしょうか? よろしくお願いします。

Page: 1 |

Re: フルスクリーン時でのコモンダイアログの使用について ( No.1 )
名前:管理人 日時:2007/01/12 11:36

 Mynkさん始めまして、DXライブラリの管理人です。  フルスクリーンで DirectX 以外の機能(GDI)で描画される ダイアログなどを表示する場合は、ダイアログを開く前に 非公開関数の // GDI描画を使用するかどうかを変更する int SetUseGDIFlag( int Flag );  という関数に TRUE を渡して呼んでおく必要があります。 (GDI描画を有効にした場合では DirectX の性能をフルに出せないので、 ダイアログが閉じた後は FALSE を渡して呼びます)  また、ダイアログの親ウインドウをDXライブラリが動作している ソフトのウインドウにする必要がありますので、親ウインドウに 非公開関数の // メインウインドウのハンドルを取得する HWND GetMainWindowHandle( void );  で取得できるハンドルを設定する必要があります。  というのを踏まえて GetOpenFileName でBMPファイルを選択して、 選択されたファイルを画面に表示するというサンプルプログラムが 以下の様になりますので、宜しければご覧下さい。m(_ _)m #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { char fn[256] ; OPENFILENAME ofn ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // GDIを有効にする SetUseGDIFlag( TRUE ); // マウスカーソルを表示する SetMouseDispFlag( TRUE ); // ファイルを選択してもらう { memset( &ofn, 0, sizeof( OPENFILENAME ) ) ; fn[0] = '\0' ; ofn.lStructSize = sizeof( OPENFILENAME ) ; ofn.hwndOwner = GetMainWindowHandle() ; // 親ウインドウは GetMainWindowHandle で取得できるウインドウハンドルにする ofn.lpstrFilter = "BMP(*.bmp)\0*.bmp" ; ofn.nFilterIndex = 1 ; ofn.lpstrFile = fn ; ofn.nMaxFile = 256 ; ofn.lpstrTitle = "ファイルの選択" ; ofn.lpstrDefExt = "bmp"; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY ; GetOpenFileName( &ofn ) ; } // GDIを無効にする SetUseGDIFlag( FALSE ); // 選択されたファイルを読み込んで表示する LoadGraphScreen( 0, 0, ofn.lpstrFile, FALSE ); // キー入力待ち WaitKey(); // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
Re: フルスクリーン時でのコモンダイアログの使用について ( No.2 )
名前:Mynk 日時:2007/01/13 21:46

こんばんは! 早速サンプルと説明通りに試してみたところ、 フルスクリーン時でも問題なく動作するようになりました。 ダイアログと同じ機能を持ったものを自作しなきゃいけないのかと びくびくしてたので助かりました(笑) 迅速で丁寧な対応ありがとうございます(^^)

Page: 1 |