2:フルスクリーン
「フルスクリーンにしてみる」
DirectDrawといったらフルスクリーンモードです。
フルスクリーンにするのは簡単で、DirectDrawの二つのメソッドを使えばOKです。
一つは SetCooperativeLevel で協調レベル(他のアプリケーションとの関係)を設定します。
二つ目は SetDisplayMode で、これでディスプレイモードの変更をします。
SIZE szWnd={640,480};
int iBPP=8;
lpDD->SetCooperativeLevel(hWnd, DDSCL_ALLOWMODEX | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
lpDD->SetDisplayMode(szWnd.cx,szWnd.cy,iBPP);
ディスプレイモードの変更の時に、色数も指定できます。この場合は 8bit=256色 を設定しています。
変更したディスプレイモードは、RestoreDisplayMode で戻せますが、DirectDrawオブジェクトを解放すれば
自動的に戻るので、普通は記述しません。
さて、ただフルスクリーンにするだけでは変なところが出てきます。
ウィンドウ自体は前のままなので、ウィンドウの移動やサイズ変更ができてしまうのです。
これではダメですね、と言うわけでウィンドウも変更します。
WNDCLASSEX wcx;
・・・
wcx.lpszMenuName = 0; // メニューをなくす
・・・
hWnd = CreateWindowEx ( 0,strClassName,strAppName,
WS_SYSMENU|WS_POPUP|WS_VISIBLE, // ウィンドウスタイルを変更
0,0,0,0,HWND_DESKTOP,NULL,hInst,this);
・・・
これでウィンドウも移動などができなくなり、フルスクリーンっぽくなりました。
メニューを消したのは、実際にDirectDrawを使っているとメニュー自体が表示されなくなるためです。
さて、でも後一つ変なところががあります、カーソルだけがやけに元気なんです。これも消してしまいましょう。
// WindowProc関数です…
・・・
case WM_SETCURSOR:
{
ShowCursor(FALSE);
}break;
・・・
これでもう完璧ですね。んでは今回のソースファイルです。
ただしソースプログラムでは、分かり易いように起動すると文字が表示されます。