環境:
Visual Studio 2008 Express Edition
XP SP3
3.00d
です。
画面を
ウィンドウ⇒フルスクリーン⇒ウィンドウ
にすると、ウィンドウが最上面表示になりタスクを切り替えても直りません。
裏に回すには最小化しか方法がありません。
以下、テストに使ったコードです。
回避方法または修正をよろしくお願いします。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(TRUE);
// DXライブラリ初期化処理
if(DxLib_Init() == -1){return -1;} // エラーが起きたら直ちに終了
// 描画先画面を裏画面にセット
SetDrawScreen( DX_SCREEN_BACK ) ;
printfDx("タスクを切り替えるとウィンドウは最上面に描画されない。\nただし以下の操作をすると変わります。\n");
printfDx("1. フルスクリーンにします。何か入力してください。\n");
ScreenFlip();
WaitKey();
ChangeWindowMode(FALSE);
printfDx("2. ウィンドウモードに戻します。何か入力してください。\n");
ScreenFlip();
WaitKey();
ChangeWindowMode(TRUE);
printfDx("3. Alt+tab や、ウィンドウズバーや、クリックでタスクを変える。\nするとウィンドウが最上面に残り、裏に回らない。\nESCキーで終了。");
while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0){
ScreenFlip();
ClearDrawScreen();
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}