opencv中窗口置顶的方法
来源:互联网 发布:sql数据库还原 编辑:程序博客网 时间:2024/05/19 01:13
转:http://blog.csdn.net/sing_sing/article/details/6126466
今天想将opencv中的窗口置顶,以便在任何时候都可以看到摄像头显示的内容。
opencv中通过cvGetWindowHandle可以获取窗口句柄。cvGetWindowHandle的返回值解释如下:
函数cvGetWindowHandle返回原始的窗口句柄(在Win32情况下返回HWND,GTK+情况下返回GtkWidget)
刚开始处理时,通过以下方法:
HWND hWnd = (HWND)cvGetWindowHandle("raw");
if (hWnd!= NULL) {
BOOL bRet = ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE |SWP_NOMOVE);
assert(bRet);
}
返回值正确,但确没达到效果。经过一番验证,原来hWnd指向的不是“raw”窗口的句柄。通过GetWindowText获取的窗口标题为空的。查看cvNameWindow代码,原来cvNameWindow创建窗口的时候会创建两个窗口,一个主窗口,一个子窗口。
代码如下:
CV_IMPL int cvNamedWindow( const char* name, int flags )
{
...... ......
HWND hWnd, mainhWnd;
CvWindow* window;
DWORD defStyle = WS_VISIBLE | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU;
...... ......
mainhWnd = CreateWindow( "Main HighGUI class", name, defStyle | WS_OVERLAPPED,
rect.x, rect.y, rect.width, rect.height, 0, 0, hg_hinstance, 0 );
if( !mainhWnd )
CV_ERROR( CV_StsError, "Frame window can not be created" );
ShowWindow(mainhWnd, SW_SHOW);
//YV- remove one border by changing the style
hWnd = CreateWindow("HighGUI class", "", (defStyle & ~WS_SIZEBOX) | WS_CHILD, CW_USEDEFAULT, 0, rect.width, rect.height, mainhWnd, 0, hg_hinstance, 0);
if( !hWnd )
CV_ERROR( CV_StsError, "Frame window can not be created" );
ShowWindow(hWnd, SW_SHOW);
...... ......
}
恍然大悟,于是将代码改成如下,F5运行,ok。搞定。
HWND hWnd = (HWND)cvGetWindowHandle("raw");
HWND hRawWnd = ::GetParent(hWnd);
if (hRawWnd != NULL) {
BOOL bRet = ::SetWindowPos(hRawWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE |SWP_NOMOVE);
assert(bRet);
}
看来以后要多跟跟源代码,这样可以减少一些不必要的功夫。
- opencv中窗口置顶的方法
- opencv中窗口置顶的方法
- VC中置顶窗口的方法
- Delphi 窗口置顶的方法
- Delphi 窗口置顶的方法
- VC关于置顶窗口的方法小结
- VC关于置顶窗口的方法小结
- VC关于置顶窗口的方法小结
- VC关于置顶窗口的方法小结
- VC关于置顶窗口的方法小结
- python tkinter窗口弹出置顶的方法
- 将窗口置顶的方法:SetWindowPos、AttachThreadInput、SwitchToThisWindow
- MFC的弹出窗口置顶!~
- 置顶窗口SetWindowPos()的用法
- 实现窗口的始终置顶
- 窗口置顶/取消置顶
- 窗口置顶
- 窗口置顶
- ActiveMQ常见错误三:Caused by: java.net.UnknownHostException: centos: 未知的名称或服务
- 《剑指offer》:[61]按之字形顺序打印二叉树
- cmder使用
- Defensive Programming in PHP(PHP中的防御性编程)
- 2.6 Python逻辑行与物理行
- opencv中窗口置顶的方法
- Mycat入门之Mycat安装
- Mongodb联合查询
- Python - Numerical Statistics
- Android 隐藏ScrollView的滚动条
- 【图像处理】SFR算法详解4
- 2.7 Python缩进
- gcd&exgcd O(∩_∩)O哈!
- HDG西安站|分享技术干货,打造开发者交流平台!