うーん、これはC言語というよりは、DXライブラリ特有の問題とも言えるでしょうか、
DxLib_Init()でDXライブラリを初期化する前に、LoadGraph関数などを使用してはいけないことはお分かりでしょうか?
(あまり詳しくはしりませんが、ChangeWindowMode関数など、一部の関数は大丈夫です。)
グローバル変数の初期化は、プログラム開始直後に行われるはずなので、
WinMain関数内の処理が始まる前に、グローバル変数の初期化が行われます。
そうすると、DXライブラリの初期化が行われる前に、グローバル変数の初期化が行われるので、
その初期化において、LoadGraph関数などを使用することはできないのです。
グローバル変数をほとんど使わないので若干怪しいですが、
例えば
-----Global.h-----
extern int GraphHandle; //グローバル変数の一例
------------------
----Global.cpp----
int GraphHandle; //初期化なし(0が代入されるかも?)
//読み込み用の関数を作っておく
void Load()
{
GraphHandle = LoadGraph("ほにゃらら.bmp");
}
-------------------
----main.cpp----
int WINAPI WinMain~~
{
// 画面モードの変更
SetGraphMode( 640 , 640 , 16 ) ;
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
Load(); //!ここで読み込み用の関数を呼び出す
SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定
MAKE_ARIAHAN_TOWN();
~
}
-----------------
あくまで一例ですが、上のような作りであれば、
ほぼプログラム開始すぐに画像・音楽のロードが行われ、プログラム終了までその値が保持されます。