トップページ > 記事閲覧
フルスクリーン時にフリーズする
名前:ユウ 日時: 2014/01/19 11:22

単純なフルスクリーン表示のプログラムが動作しなくて困っています・・・。 症状はプログラムの起動時には画面が真っ暗になり、その後はどんな操作をしても応答がありません。 「Alt+Tab」を押しても反応なし、「Ctrl+Alt+Delete」でもタスクマネージャーも起動せず。 なので強制終了させるにはPCのリセットボタンを押すしかありません。 一応、ウィンドウモードでの起動は確認しており、他のゲームでフルスクリーンの起動も確認しています。 使用しているDXライブラリは2週間ほど前にダウンロードしたので最新のものだと思います。 以下は問題のソースです。 #include "DxLib.h" #define SCREEN_WIDTH 800 //スクリーンの幅 #define SCREEN_HEIGHT 600 //スクリーンの高さ #define SCREEN_COLOR 32 //スクリーンの色 //Windowsプロシージャのフック LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch( msg ) { case WM_KEYDOWN: switch (LOWORD(wParam)) { case VK_ESCAPE: //終了 PostQuitMessage(0); break; } break; case WM_DESTROY: PostQuitMessage(0); return 0; } return 0; } //WinMain int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { //ChangeWindowMode(TRUE); //解像度の設定 if (SetGraphMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_COLOR)!= DX_CHANGESCREEN_OK) { //解像度の設定失敗 return -1; } SetHookWinProc(WndProc); if( DxLib_Init() == -1 ) { //DXライブラリ初期化 return -1; } SetDrawScreen(DX_SCREEN_BACK); SetMouseDispFlag(TRUE); //マウスカーソルの表示 // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア ) while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ) { DrawBox(0,0,SCREEN_WIDTH,SCREEN_HEIGHT,GetColor(0,255,0),FALSE); } return 0 ; // ソフトの終了 } 以下はその時のログです。 20:設定されている画面設定 800x600 32bit color 50:システムの情報を出力します 50: DXライブラリ Ver3.11b 50: 論理プロセッサの数 : 4 50: OS Windows7 ( Build 7601 Service Pack 1 ) 160: CPU動作速度:大体2.78GHz 162: MMX命令を使用します 163: SSE命令が使用可能です 164: SSE2命令が使用可能です 164: CPUベンダ:GenuineIntel 168: CPU名:Intel(R) Core(TM) i5-4440S CPU @ 2.80GHz 169:COMの初期化... 成功しました 183:メモリ総量:8130.18MB 空きメモリ領域:6251.11MB 183:タイマーの精度を検査します 184:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 185: パフォーマンスカウンターを使用します タイマー精度 : 2728.076000 KHz 186: ソフトの二重起動検査... 二重起動はされていませんでした 188:ウインドウクラスを登録します... 登録に成功しました 190:フルスクリーンモード用のウインドウを作成します 215:ウインドウの作成に成功しました 216:ウインドウを表示します 240:カーソルを不可視にしました 241:IMEを無効にしました 268:DirectInput関係初期化処理 269: XInput DLL の読み込み中... 成功 279: DirectInput7 の取得中... 成功 312: 引き続き初期化処理... 初期化成功 314: ジョイパッドの初期化... 336: 入力装置を見つけました 337: デバイスの登録名: 338: デバイスの製品登録名: 339: 周期的エフェクトの作成に失敗しました。 341: ジョイパッドの追加は正常に終了しました 341: ジョイパッドの初期化は正常に終了しました 342: マウスデバイスの初期化... 初期化成功 344: キーボードデバイスの初期化... 初期化成功 346:DirectInput 関連の初期化は正常に終了しました 349:XAudio2 の初期化を行います 351: XAudio2 インターフェースの取得を行います.... 成功 Ver2.7 355: 引き続きインターフェースの初期化処理... 成功 357: X3DAudio.DLL の読み込み中... 成功 422: デバイス名:スピーカー (Realtek High Definition Audio) 423: チャンネル数:2 424: ビット精度:32bit 425: サンプリングレート:48000Hz 426:XAudio2 の初期化は正常に終了しました 433:DirectDraw オブジェクトの取得を行います.... 成功 441:引き続き初期化処理... 初期化に成功しました 511:IDirect3D9Ex オブジェクトを取得します.... 成功 516:Desktop Window Manager を無効にしました 517:IDirect3DDevice9Ex オブジェクトを取得します.... よろしくお願いします。
メンテ

Page: 1 |

Re: フルスクリーン時にフリーズする ( No.1 )
名前:どんたこすって、なんなのよ! 日時:2014/01/19 12:16

Windowsプロシージャのフックで固まってるのでは? SetUseHookWinProcReturnValue(FALSE)
メンテ
Re: フルスクリーン時にフリーズする ( No.2 )
名前:ユウ 日時:2014/01/19 12:41

返信ありがとうございます。 SetHookWinProcの直前に入れてみましたがダメでした・・・。 プロシージャの挙動が何かおかしかったりするのだろうか??
メンテ
Re: フルスクリーン時にフリーズする ( No.3 )
名前:管理人 日時:2014/01/19 20:19

私の手元でプログラムを実行してみましたが、特に問題なく動作しました ログを拝見する限りでは Direct3DDevice9Ex を作成するところで止まってしまっているようです プログラムでは 800x600 の解像度を指定していますが、お使いのPC環境のモニタは 800x600 の解像度に対応していますでしょうか?
メンテ
Re: フルスクリーン時にフリーズする ( No.4 )
名前:ユウ 日時:2014/01/19 20:59

はい、対応しています。 800x600が最小の解像度のようです。 ハード面の問題でしょうか?グラボの設定? 今年にPCを買い替えたばかりなのでハードの設定は特に何も変えていないはず。
メンテ
Re: フルスクリーン時にフリーズする ( No.5 )
名前:管理人 日時:2014/01/19 21:55

買ったばかりだとしますと、グラフィックスドライバが原因である可能性があります 購入されたPCを製造したメーカーのサポートページに更新情報が無いかや、 グラフィックスデバイスの製造メーカーのサイトで最新のグラフィックスドライバが 公開されていないかなどをチェックしてみてください
メンテ
Re: フルスクリーン時にフリーズする ( No.6 )
名前:ユウ 日時:2014/01/19 23:03

グラフィックスドライバを更新してみましたが状況変わらずです・・・。
メンテ
Re: フルスクリーン時にフリーズする ( No.7 )
名前:管理人 日時:2014/01/20 00:42

駄目でしたか・・・ では DirectX のランタイムを最新にしてみてください http://www.microsoft.com/ja-jp/download/confirmation.aspx?id=35 「DirectX エンド ユーザー ランタイム Web インストーラ」をダウンロードして 実行すると、ネット上から最新のランタイムライブラリをダウンロードしながら インストールすることができます
メンテ
Re: フルスクリーン時にフリーズする ( No.8 )
名前:ユウ 日時:2014/01/20 17:36

ランタイムは既に最新のもののようです。 インストールしようとしたら最新のものだと言われ、インストールはされませんでした。 開発環境はVC2008なのですが、その環境自体が古いとか実行オプションとかは関係ないですか?変更した覚えはないですが。
メンテ
Re: フルスクリーン時にフリーズする ( No.9 )
名前:管理人 日時:2014/01/20 22:35

> 開発環境はVC2008なのですが、その環境自体が古いとか 私は未だに VisualStudio2005 を使用しているので環境が古いからということは無いと思います > 実行オプションとかは関係ないですか?変更した覚えはないですが。 ユウさんが設定していない限り実行オプションはないです VisualStudioから起動せずに、実行ファイルを直接起動した場合はどうなりますか?
メンテ
Re: フルスクリーン時にフリーズする ( No.10 )
名前:ユウ 日時:2014/01/20 23:50

> VisualStudioから起動せずに、実行ファイルを直接起動した場合はどうなりますか? 変わらずフリーズしました・・・ が、原因がわかりました。おそらくセキュリティソフトが原因です。 現在、COMODO Firewallを使用しているのですが、もしかしたらと思ってこのソフトを止めてから プログラムを起動させたら正常に動きました。 詳しい詳細はまだわかりませんが、どうやらこれが原因のようです。 多分何かの設定をすればセキュリティソフトを止めずにプログラムを起動できるかと思います。 お騒がせしてすみませんでした。
メンテ
Re: フルスクリーン時にフリーズする ( No.11 )
名前:管理人 日時:2014/01/21 00:16

原因が分かって何よりです フルスクリーンモードで他のソフトの表示ができない状態で、セキュリティソフトが 「このソフトは○○をしようとしています、実行を許可しますか?」 のような表示をしている( 但し見えない )のかもしれませんね・・・
メンテ
Re: フルスクリーン時にフリーズする ( No.12 )
名前:ユウ 日時:2014/01/21 00:29

調べてみたらまさにその通りのことが書かれていました。 もっと早く気づくべきでしたね・・・。 でも、これで万事解決です。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存