トップページ > 過去ログ > 記事閲覧
文字が表示できない
名前:絵の具 日時: 2008/02/15 01:26

#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if(DxLib_Init()==-1)return -1;//エラーで終了 DrawString(0,0,"C++プログラム環境完成!",GetColor(255,255,255)); WaitKey(); DxLib_End(); return 0; } このプログラムをメイク→実行したのですが、1分ぐらいは凄く重くしばらくして 適当なキーを押して終了したのですが、結局文字は表示されませんでした。(メイク時にエラーは出ていませんでした) 255の数値を変えてみても変化はありませんでした。 ためしに、ウィンドウモード(ChangeWindowMode( TRUE ) ;)で実行してみるとDxLibという名前のウィンドウで起動していました。 どんなことが考えられるでしょうか?

Page: 1 |

Re: 文字が表示できない ( No.1 )
名前:キーチック 日時:2008/02/15 02:52

プログラムをコピーして私の環境でコンパイルしたところ,文字は表示されました. プログラムとしては問題ないと思います. ハードウェアなどの環境に依存する問題ではないかと思いますので, ソースファイルのあるフォルダに作成されたLog.txtの内容を読んで, 検討すると良いのではないかと思います. (おそらく,なにかの初期化に失敗しましたというのが見つかると思います)
Re: 文字が表示できない ( No.2 )
名前:絵の具 日時:2008/02/15 03:24

返信有難う御座います。 さっそくLog.txtを見てみましたが初期化には失敗していないみたいです。 うーんどうなっているのか…
Re: 文字が表示できない ( No.3 )
名前: 日時:2008/02/15 06:15

>初期化には失敗していないみたいです。 といわれても、そうですかとしか言えません。 ログの内容を貼るか、ウィンドウモードにして、 メッセージボックスなどを諸所に入れて どこまでが、どの様なタイミングで実行されて いるのか、関数呼び出しは成功しているのかを 調べたほうが良いです。
Re: 文字が表示できない ( No.4 )
名前:tok 日時:2008/02/15 12:47

・重くなってるときに一度ウインドウをアイコン化して、元に戻してみる ・SetUseDirectDrawFlag( FALSE );を if(DxLib_Init()==-1)return -1;//エラーで終了 の手前に追記してみる 以上2つのことを、1つずつ試されてみてもやはり変わらないでしょうか。
Re: 文字が表示できない ( No.5 )
名前:絵の具 日時:2008/02/15 18:37

>tokさん 最小化しようにも重い間は反応しないみたいです。(Alt+space+nでも) SetUseDirectDrawFlag( FALSE );はDxLib_Initの前に書くということを教えてもらっていたのでその点は大丈夫みたいです。 >通さん 超能力でもないと分かりませんよね、すみませんでした。 今Log.txtを貼ってみます。 ウィンドウモードで起動したときのLog.txtです。 0:システムの情報を出力します 0: DXライブラリ Ver2.24a 0: OS WindowsXP ( Build 2600 Service Pack 2 ) 100: CPU動作速度:大体0.59GHz 100: MMX命令を使用します 100: CPUベンダ:GenuineIntel 101: CPU名: Intel(R) Pentium(R) M processor 1.73GHz 101:COMの初期化... 成功しました 137:メモリ総量:766.98MB 空きメモリ領域:302.17MB 137:タイマーの精度を検査します 137:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 137: パフォーマンスカウンターを使用します タイマー分解能 : 3579.545000 KHz 138: ソフトの二重起動検査... 二重起動はされていませんでした 138:ウインドウクラスを登録します... 登録に成功しました 138:ウインドウモード起動用のウインドウを作成します 192:IMEを無効にしました 393:ウインドウスタイルをウインドウモード用に変更します... 完了 394:DirectInput関係初期化処理 394: DirectInput7 の取得中... 成功 400: 引き続き初期化処理... 初期化成功 402: ジョイパッドの初期化... 402: ジョイパッドの初期化は正常に終了しました 402: マウスデバイスの初期化... 初期化成功 403: キーボードデバイスの初期化... 初期化成功 407:DirectInput 関連の初期化は正常に終了しました 407:DirectSound の初期化を行います 407:DirectSound インターフェースの取得を行います.... 成功 425:引き続きインターフェースの初期化処理... 成功 471: DirectSound デバイスを列挙します 472: モジュール名: ドライバ記述:プライマリ サウンド ドライバ 472: モジュール名: smwdm.sys ドライバ記述:SoundMAX Digital Audio 472: 最大サンプリングレート:48.00KHz 最小サンプリングレート:8.00KHz 472: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 472: 利用可能サンプリング精度 472: プライマリ 16bit = OK 8bit = NO 472: セカンダリ 16bit = OK 8bit = NO 472: 利用可能チャンネル 472: プライマリ MONO = OK STEREO = OK 473: セカンダリ MONO = OK STEREO = OK 473:DirectSound の初期化は正常に終了しました 473:DirectDraw 関連の初期化を行います 473: DirectDraw オブジェクトの取得を行います.... 成功 475: 引き続き初期化処理... 初期化に成功しました 476: ビデオカードの情報 476: 画面モード変更処理を開始します 537: 画面モードの変更処理を開始します 640 x 480 16 bit 537: ウインドウモードにします 537: 画面モードの変更は正常に終了しました 537: カラー情報 537: A:00000000 B:00ff0000 G:0000ff00 B:000000ff 537: ウインドウスタイルをウインドウモード用に変更します... 完了 537: 出力画面用の DirectDrawSurface を作成します 588: 各スクリーンメモリの配置位置 588: PrimaryBuffer : VIDEOMEMORY 588: BaskBuffer : VIDEOMEMORY 588: 出力画面用の DirectDrawSurface の作成は正常に終了しました 588: Direct3D 関連の初期化を行います 589: Direct3Dオブジェクトを取得します 589: Direct3Dオブジェクトを取得しました 590: 3Dデバイスを作成します... 3Dデバイスの作成に成功しました 594: テクスチャ最大幅:4096 最小幅:1 594: 描画制限: D_D3DPTEXTURECAPS_POW2 = 0 D_D3DPTEXTURECAPS_SQUAREONLY = 0 595: テクスチャピクセルフォーマット 595: 通常グラフィック用 595: BIT:16 RED:5 GREEN:5 BLUE:5 595: RED:007c00 GREEN:0003e0 BLUE:00001f 595: BIT:32 RED:8 GREEN:8 BLUE:8 595: RED:ff0000 GREEN:00ff00 BLUE:0000ff 595: アルファチャンネル付きグラフィック用 595: BIT:16 ALPHA:4 RED:4 GREEN:4 BLUE:4 595: ALPHA:0000f000 RED:00000f00 GREEN:000000f0 BLUE:0000000f 595: BIT:32 ALPHA:8 RED:8 GREEN:8 BLUE:8 595: ALPHA:ff000000 RED:00ff0000 GREEN:0000ff00 BLUE:000000ff 596: Direct3D 関連の初期化は正常に終了しました 596: グラフィック管理系の初期化を行います 596: 3Dグラフィック描画機能を使用します 596: フォントの初期化を行います 600: フォントの初期化は正常に終了しました 600: グラフィック管理系の初期化は正常に終了しました 685: サーフェス間転送には BltFast を使用します 685: BitBlt:43114μs BltFast:36992μs 685: スキャンラインの数:768 819: 1フレーム当たりの時間は 17 msecです 820: Tri00:17 msec 820: Tri01:17 msec 820: Tri02:16 msec 820: Tri03:17 msec 820: 画面モード変更処理は正常に終了しました 887: オーバーレイサーフェスを使用します    UYVY 887: DirectDraw 関連の初期化は正常に終了しました 894: 文字コードバッファの初期化を行います... 完了しました 76056: DirectDraw 関連の終了処理をおこないます 76078: フォントの初期化を行います 76084: フォントの初期化は正常に終了しました 76084: グラフィック管理系の終了処理は正常に終了しました 76084: Direct3D 関連の終了処理を行います 76102: 3Dデバイスの削除は正常に終了しました 76102: Direct3D 関連の終了処理は正常に終了しました 76103: メインサーフェスを破棄をします... 完了しました 76131: DirectDrawオブジェクトを解放します 76143: DirectDrawオブジェクトを解放しました 76144: DirectDraw 関連の終了処理は正常に終了しました 76144: DirectInput 関連の終了処理... 完了 76159: DirectSound の終了処理は正常に終了しました 76308: ウインドウを閉じようとしています 76335: ウインドウが破棄されようとしています 76335: ソフトを終了する準備が整いました 77034: 77034: Alloc memory dump Total size:0(0.000kb) Alloc num:0 77035:
Re: 文字が表示できない ( No.6 )
名前:tok 日時:2008/02/15 19:01

> 最小化しようにも重い間は反応しないみたいです。(Alt+space+nでも) むー。Windowsキー+Dでもダメでしょうか。 あと大した手間ではないと思うので出来ればちょっと試していただきたいのですが、最新のDirectXランタイムの再インストールとかされてみては如何でしょう。
Re: 文字が表示できない ( No.7 )
名前:絵の具 日時:2008/02/15 19:37

>tokさん Windowsキー+Dを押すと重い間はやはり相変わらずで、最小化から戻してみると ウィンドウ枠の内側の黒い部分がデスクトップの一部を貼り付けたような感じになっていました。(ツールの画面の更新がされていないみたい) 最新のDirectXランタイムを落としてみたのですが、もう入っていますよと言われました。 もしかしてSDKなど他に何か動作に必要なものがあるのでしょうか? 今までやって来たことは 1.BorlandC++ Compiler 5.5をインストール 2.setbcc1.5bでパスを設定 3.DxLib_BCC2_24aを落とし[プロジェクトに追加すべきファイル_BCC用]の中の[_d]が付くもの以外をtest.bdp(今回作った上のプログラムのプロジャクト)と同じ階層にコピー 4.bccdev1221でメイク、実行 のような感じです。 bccdev1221やBorlandC++ Compiler 5.5はCドライブのすぐ下に置いてあります。 今回のプロジャクトもCドライブのすぐ下に作りました。(2byte文字を一応避けて)
Re: 文字が表示できない ( No.8 )
名前:絵の具 日時:2008/02/15 19:40

すいません、変な日本語がありました xプロジャクト oプロジェクト です。
Re: 文字が表示できない ( No.9 )
名前: 日時:2008/02/15 21:30

確かに、ログ的にはエラーは無いようですね。 >(ツールの画面の更新がされていないみたい) そもそも提示されたプログラムは、 一度書いてから、あとはずっと待機しているので 更新はしていません。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int frame = 0; ChangeWindowMode( TRUE ); if( DxLib_Init() == -1 ){ // DXライブラリ初期化処理 return -1; // エラーが起きたら直ちに終了 } while( !ProcessMessage() && !CheckHitKey( KEY_INPUT_ESCAPE ) ){ DrawString( 0, 16, "C++プログラム環境完成!", GetColor( 255 , 255 , 255 )); } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } とりあえず、このサンプルでどうなりますか? ESCで終了します。
Re: 文字が表示できない ( No.10 )
名前:絵の具 日時:2008/02/15 21:51

>通さん 返信有難う御座います。 上のプログラムを新たに作って実行してみたところ 5分程度待ってみましたが何も表示されませんでした。 この間は重くEscキーを入力しても落ちなかったので タスクマネージャーからプロセスを落としました。 この時のLog.txtを見ても失敗しているところは見つけられませんでした。 この時メモリ使用量が14,948kだったのですが、 これくらい使うものなのでしょうか?
Re: 文字が表示できない ( No.11 )
名前:キーチック 日時:2008/02/16 01:40

メモリ使用量は常駐させているプログラム等で変わるのではないでしょうか. ところで,お使いのPCはログを見るかぎりではノートPCの気配がするのですが, もしかして,ディスプレイが640×480に対応していないということはないでしょうか. SetGraphModeで1024×768に設定したらうまくいったりしないでしょうか.
Re: 文字が表示できない ( No.12 )
名前:キーチック 日時:2008/02/16 01:44

追伸 私のほうで1024×768のウインドウモードにしたら, むしろ同じような状態になってしまいました. フルスクリーンにしたら正常に動きます. グラフィック関係で何か引っかかる場合があるのかもしれないですね.
Re: 文字が表示できない ( No.13 )
名前:絵の具 日時:2008/02/16 02:13

>キーチックさん 仰られる通りノートPCを使っています。 SetGraphModeを使って1024×768に設定したところフルスクリーンになり、 そのまま様子を見たところ何も表示されませんでした。
Re: 文字が表示できない ( No.14 )
名前:絵の具 日時:2008/02/16 02:32

色々試してみたところSetGraphModeを使って初期状態の画面モードを設定しても改善はしませんでしたが DxLib_Initの後ろで改めてSetGraphMode(640,480,32) ; と書いてやると上手くいきました。 なんでなんだろう? 取り合えず同じ症状?がでる人が居たらのために書き残しておきます。
Re: 文字が表示できない ( No.15 )
名前:絵の具 日時:2008/02/16 02:36

>tokさん 通さん キーチックさん こんな初歩的な質問に 貴重な時間を割いていただきありがとうございました。

Page: 1 |