私たちの3Dアプリケーションウィンドウは、ビデオゲームに見られる フルスクリーンではなく、が最大化されていない、サイズ変更不可能なデスクトップ全体をカバーする必要があります。右上にXが付いたウィンドウ、タイトルバー、およびステータスバー)。 Windowsの10が到着するまでWindows 10のウィンドウのサイズを変更し、透明な枠線を無視する方法は?
void
CTheApp::SetFullScreenMode()
{
HWND hwnd = getHandle();
long style = ::GetWindowLong(hwnd, GWL_STYLE);
style &= ~(WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_THICKFRAME);
::SetWindowLong(hwnd, GWL_STYLE, style);
// get screen dimensions
int width = ::GetSystemMetrics(SM_CXSCREEN);
int height = ::GetSystemMetrics(SM_CYSCREEN);
::MoveWindow(hwnd, 0, 0, width, height, TRUE);
}
それは我々のニーズのために働いていた...:
は、これを実現するために、我々は次のコードを使用していました。Windows 10では、ウィンドウがカバーしていない左右に小さな隙間があります。 (より正確には、左に9ピクセル、右に9ピクセル、下に9ピクセル)
Windows 10では、この透明なスタイルが最大化されていないウィンドウの境界線に追加されているようです。
以前のバージョンのWindows(Windows 7 - Windows 8.1)に有効な機能を維持しながら、ウィンドウがWindows 10の画面全体で視覚的に正しくストレッチされるようにするにはどうすればよいですか?この "透明度"をゼロに設定する明確な方法はありますか?私はそれをハッキングし、それぞれの側に9つのピクセルでサイズを拡大するが、ユーザが設定し、別のテーマ(例えば、高コントラスト)を持っているとき、これは問題を引き起こす可能性がある、またはアプリが複数を使用する際に考えた
複数のモニタ上のウィンドウ。
を返すようにオーバーライドするWM_NCCALCSIZE(ウィンドウメッセージ、非クライアント)です。https://msdn.microsoft.com/en-us/library/windows/desktop/ms632626(v=vs.85) ).aspx –