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;
・・・

これでもう完璧ですね。んでは今回のソースファイルです。 ただしソースプログラムでは、分かり易いように起動すると文字が表示されます。
Download dd002.lzh - フルスクリーン


★TOP★

Copyright(C) へぽぽ