SetChangeScreenModeGraphicsSystemResetFlagにFALSEを設定して
LoadDivGraphで画像を読み込んで
ChangeWindowModeを呼ぶと強制終了します。
開始:フルスクリーン
問題なし
↓
Sキー押下:ウィンドウ
(出力ウィンドウにtest.exe の 0x773ffbae で初回の例外が発生しました: Microsoft C++ の例外: long (メモリの場所 0x0068f54c)。)
↓
Aキー押下:出力ウィンドウに
Critical error detected c0000374
Windows によって test.exe でブレークポイントが発生しました。
ヒープが壊れていることが原因として考えられます。test.exe または読み込まれた DLL にバグがあります。
あるいは、test.exe がフォーカスを持っているときに、ユーザーが F12 キーを押したことが原因として考えられます。
可能であれば、出力ウィンドウに詳細な診断情報が表示されます。
プログラム '[2712] test.exe: ネイティブ' はコード 0 (0x0) で終了しました。
画像サイズ
tama00.png 56x8
tama01.png 112x16
DxLib ver3.04d
Windows Vista
VC++2010Express
よろしくお願いします。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(FALSE);
DxLib_Init();
SetChangeScreenModeGraphicsSystemResetFlag(FALSE);
SetDrawScreen(DX_SCREEN_BACK);
int GrHandle[2][7];
LoadDivGraph("tama00.png", 7, 7, 1, 8, 8, &GrHandle[0][0]);
LoadDivGraph("tama01.png", 7, 7, 1, 16, 16, &GrHandle[1][0]);
char key[256];
char keyCnt[256];
int i;
while (!ProcessMessage())
{
ClearDrawScreen();
GetHitKeyStateAll(key);
for (i = 0; i < 256; i ++)
{
if (key[i] == 0)
{
keyCnt[i] = 0;
}
else
{
keyCnt[i]++;
}
}
DrawFormatString(0, 0, GetColor(255, 255, 255), "A[%d] S[%d]", keyCnt[KEY_INPUT_A], keyCnt[KEY_INPUT_S]);
if (keyCnt[KEY_INPUT_A] == 1)
{
ChangeWindowMode(FALSE);
}
if (keyCnt[KEY_INPUT_S] == 1)
{
ChangeWindowMode(TRUE);
}
if (keyCnt[KEY_INPUT_ESCAPE] == 1)
{
break;
}
for (i = 0; i < 7; i++)
{
DrawGraph( 8 * i, 30, GrHandle[0][i], FALSE);
DrawGraph(16 * i, 50, GrHandle[1][i], TRUE);
}
ScreenFlip();
}
DxLib_End();
return 0;
}