昨天需要将一张整图裁剪为多张图片,分多个窗口显示,因此需要使用Opencv无标题栏、无边框显示图片,并指定每个窗口的位置和大小。由于之前没有使用过该功能,所以经过一番查询才得以实现,为防止遗忘,同时为了与有相关需要的人一起分享,故将实现方法记录如下。
先上代码:
HWND win_handle = FindWindow(0, winName); //获取窗口句柄,参数"winName"为窗口名
SetWindowPos(win_handle, HWND_TOPMOST, 1920 + SCREENWIDTH * 3, 0 + SCREENHEIGHT, SCREENWIDTH, SCREENHEIGHT, SWP_SHOWWINDOW); //设置窗口位置和大小
//改变窗口风格,不显示窗口标题栏
SetWindowLong(win_handle, GWL_STYLE, GetWindowLong(win_handle, GWL_EXSTYLE | WS_EX_TOPMOST));
ShowWindow(win_handle, SW_SHOW);
代码详解:
1、使用FindWindow()获取窗口句柄
HWND win_handle = FindWindow(0, winName); //参数"winName"为窗口名
FindWindow()函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。
函数原型:HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);
参数:
(1)、IpClassName
指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次 调用theGlobafAddAtom函数产生的全局成员。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0。