トップページ > 記事閲覧
実行するときに…
名前:トキスィン 日時: 2014/10/27 22:32

DXライブラリーが原因かは分からないのですが、 プログラムを実行する前に画面が真っ暗になり、 一回ウインドウ、タスクバーの色が初期に 戻り、また自分の設定に戻るという感じに なってしまいます。 これと言って実害はないのですが、あまり見ていて いい光景ではないので、何とか治したいので 治し方を教えていただけますでしょうか?
メンテ

Page: 1 |

Re: 実行するときに… ( No.1 )
名前:Will 日時:2014/10/28 09:45

情報が少なすぎです。 症状が起きた時、どんなプログラムを実行しているのか?(ソースコードを提示する) DXライブラリで作られたプログラムであれば、どんなプログラムでも現象が起きるのか? DXライブラリで他の人が作られたアプリ(龍神録とか)でも現象が起きるのか? DXライブラリ以外のDriectXを使用したアプリでは発生しないのか? 使用しているPC環境は?(OS、ビルド環境等々)
メンテ
Re: 実行するときに… ( No.2 )
名前:トキスィン 日時:2014/10/28 22:15

もう少し考えて投稿するべきでした。すみませんでした ソースコードは、 #include "DxLib.h" int Key[256]; // キーが押されているフレーム数を格納する // キーの入力状態を更新する int button(){ char tmpKey[256]; // 現在のキーの入力状態を格納する GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る for (int i = 0; i<256; i++){ if (tmpKey[i] != 0){ // i番のキーコードに対応するキーが押されていたら Key[i]++; // 加算 } else { // 押されていなければ Key[i] = 0; // 0にする } } return 0; } // プログラムは WinMain から始まります int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } ChangeWindowMode(TRUE), SetDrawScreen(DX_SCREEN_BACK); int Font, PX, P = 0, Plus[3] = { 0, 0, 0 }; int handle=LoadGraph("画像/色テス.png"); Font = CreateFontToHandle("HG創英角ポップ体", 72, 0, DX_FONTTYPE_ANTIALIASING); while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && button() == 0) { DrawGraph(0, 0, handle, 0); PX = 19 * 10; if (Key[KEY_INPUT_RIGHT] == 1){ P++; if (P >= 3) P = 0; } if (Key[KEY_INPUT_LEFT] == 1){ P--; if (P <= -1) P = 2; } if (Key[KEY_INPUT_UP] == 1){ Plus[P]++; if (Plus[P] >= 256)Plus[P] = 255; } if (Key[KEY_INPUT_DOWN] == 1){ Plus[P]--; if (Plus[P] <= -1)Plus[P] = 0; } if (Key[KEY_INPUT_UP] >= 31){ Plus[P]++; if (Plus[P] >= 256)Plus[P] = 255; } if (Key[KEY_INPUT_DOWN] >= 31){ Plus[P]--; if (Plus[P] <= -1)Plus[P] = 0; } DrawFormatStringToHandle(41, 332, GetColor(255, 0, 0), Font,"R:%d",Plus[0]); DrawFormatStringToHandle(41 + PX, 332, GetColor(0, 255, 0), Font, "G:%d",Plus[1]); DrawFormatStringToHandle(41 + PX * 2, 332, GetColor(0, 0, 255), Font, "B:%d",Plus[2]); DrawBox(41+190*P, 405, 231+190*P, 415, GetColor(255, 255, 255), 1); DrawBox(49, 49, 287, 287, GetColor(Plus[0], Plus[1], Plus[2]), 1); } WaitKey(); // キー入力待ち DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 } こんな感じで、GetColor関数のテスターです。 龍神録では、このようなことは起きませんでした。また、 自分が作ったアプリでも、症状があるものとないものがあります。 OSはWindows7、64bitで、Microsoft Visual Studio Express2013 for Windows Desktopを使っています。
メンテ
Re: 実行するときに… ( No.3 )
名前:管理人 日時:2014/10/28 22:32

// プログラムは WinMain から始まります int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } こちらの部分に ChangeWindowMode(TRUE); を加えて // プログラムは WinMain から始まります int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } ↑このようにするとご報告の現象は発生しなくなると思います ご報告の現象は、DxLib_Init の中でフルスクリーンモードになった直後に ChangeWindowMode(TRUE) でウインドウモードに変更されデスクトップ画面に戻るため 一瞬画面が真っ暗になり、その直後にデスクトップ画面に戻るということが起きていると推測します
メンテ
Re: 実行するときに… ( No.4 )
名前:トキスィン 日時:2014/10/28 23:25

治りました! 本当にありがとうございました!
メンテ

Page: 1 |

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

   クッキー保存