OpenCVでフルスクリーン表示(ウィンドウ枠なし)

通常OpenCVでは、ウィンドウ枠なしでフルスクリーンにすることができません。
そこで、Windows APIでウィンドウ枠を消します。


テスト環境

windowNameというウィンドウをフルスクリーン化します。
なお、cvで始まっているメソッド以外はWindows APIです。

// windowNameを持つウィンドウを検索
HWND windowHandle = ::FindWindowA(NULL, windowName);

if (NULL != windowHandle) {

	// ウィンドウスタイル変更(メニューバーなし、最前面)
	SetWindowLongPtr(windowHandle,  GWL_STYLE, WS_POPUP);
	SetWindowLongPtr(windowHandle, GWL_EXSTYLE, WS_EX_TOPMOST);

	// 最大化する
	ShowWindow(windowHandle, SW_MAXIMIZE);
	cvSetWindowProperty(windowName, CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN );

	// ディスプレイサイズを取得
	int mainDisplayWidth = GetSystemMetrics(SM_CXSCREEN);
	int mainDisplayHeight = GetSystemMetrics(SM_CYSCREEN);

	// クライアント領域をディスプレーに合わせる
	SetWindowPos(windowHandle, NULL,
		0, 0, mainDisplayWidth, mainDisplayWidth,
		SWP_FRAMECHANGED | SWP_NOZORDER);
}

...
cvShowImage(windowName, image