gologiusの巣

プログラミングなどの技術メモです。誰かの役に立てるとうれしいです。

OpenCV ウインドウ 枠 (ほぼ)非表示

OpenCVでウインドウの枠を非表示にしたいと思いました
f:id:kamiwo_koete:20160309110035p:plain
これのタイトルとか外枠ですね

ソースはこれ.WINAPIを使用して,ウインドウを弄ります.
環境は C++, windows7 64bit
適当に書いてるので変数などは随時補完してください

#include "windows.h"

std::string WINNAME = "test";

//ウインドウ作成
cv::namedWindow(WINNAME, CV_WINDOW_NORMAL);

//WinAPIでウインドウの設定を弄る
HWND a = FindWindow(NULL, WINNAME.c_str());  //名前からウインドウを検索 std::stringからLPCTSTR変換をしている
SetWindowLongPtr(a, GWL_STYLE, WS_POPUP); //WS_THICKFRAME : 細枠 | WS_POPUP 枠ほぼなし
SetWindowPos(a, NULL, movex, movey, width, height, SWP_DRAWFRAME | SWP_SHOWWINDOW | SWP_FRAMECHANGED); //これがないと再描画されない

cv::imshow(WINNAME, img);
cv::waitKey(0);

でこうなります.わかりにくい・・・
f:id:kamiwo_koete:20160309110835p:plain

SetWindowPosは実行しないと再描画されないみたいです.またSWP~のパラメータはこうすれば動いただけなので不必要なものがまぎれているかも