引き続きスクリーンセーバー製作を進め、いよいよDXライブラリを使って画像読み込み等してみたのですが、うまくいきませんでした。
そこで、色々削って、単純に「DXライブラリを初期化して終了するスクリーンセーバー」を作ろうと思ったのですが、何やらDxLib_init()が正しく動いていないようなのです。
(DXライブラリ初期化を行わず、ただの何もない真っ黒なスクリーンセーバーを表示することには成功しています。)
以下、コードです。
#include <windows.h>
#include <scrnsave.h>
#include "DxLib.h"
//スクリーンセーバーを作るためのライブラリ
#pragma comment(lib,"scrnsave.lib")
#pragma comment(lib, "comctl32.lib")
#define ID_TIMER 32767
LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
//起動処理
//DXライブラリ初期化
if(DxLib_Init()==-1)
{
return -1; //エラーが起きたら終了
}
break;
case WM_TIMER:
if(ProcessMessage()==-1) return -1;
break;
case WM_DESTROY:
//終了処理
DxLib_End(); //DXライブラリ終了処理
return 0;
default:
break;
}
return DefScreenSaverProc(hWnd, msg, wParam, lParam);
}
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
return FALSE;
}
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
return TRUE;
}
しかし、ScreenSaverライブラリの内部にWinMain関数が存在しているとのことで、結局どうすればいいのかが分かりません。
上述のコードをビルドして実行すると、数秒後に画面が暗転するのですが、スクリーンセーバーなのにマウスやキーを操作しても終了せず、タスクマネージャーで確認すると応答なしになっており、数秒するとプログラムの停止メッセージが出てきてしまいます。
pngファイルを読み込み、回転等させたいのでDXライブラリの使用を検討したのですが、ScreenSaverライブラリとの併用は難しいのでしょうか?
アドバイスよろしくお願いいたします。