将Opencv的namedWindow( )函数创建的窗口插入显示在应用程序窗口客户区

1、使用Opencv 的 namedWindow(WND_NAME , nFlag) // WND_NAME 为窗口的名称  nFlag 填入图模式 有4种,网上介绍挺多的

2、resizeWindow(wnd_name, 宽 , 高) 设置图片窗口的高、宽,为贴入窗口客户区特定位置做准备

3、根据窗口名hPicWnd =  FindWindow(NULL, wnd_name) 取得显示图片窗口的句柄  

4、SetParent(hPicWnd , 应用程序窗口句柄); 设置 应用程序窗口 为 图片窗口的父窗口

5   从使用情况来看,Opencv 的 namedWindow创建的窗口应该是弹出窗口样式[WS_POPUP],

  SetWindowLong(hShowPicWnd, GWL_STYLE, WS_CHILD | WS_VISIBLE); 改为子窗口属性,WS_POPUP样式 与 WS_CHILD样式互斥

6、参考文档明确 “ 某些窗口数据会缓存,因此在调用 SetWindowPos 函数之前,使用 SetWindowLong 所做的更改不会生效 ”,再用下 SetWindowPos 函数吧

  BOOL SetWindowPos( [in] HWND hWnd, [in, optional] HWND hWndInsertAfter, [in] int X, [in] int Y, [in] int cx, [in] int cy, [in] UINT uFlags );

  注意:cx, cy 是插入窗口的 宽 和 高,而不是客户区的 右 和 底 值。

7,再imshow(hPicWnd , matPic),将图片显示在该 子窗口,

  网上有的用ShowWindow(hShowPicWnd, SW_SHOW); 的 ,前面使用SetWindowLong将其 子窗口 化了,且设置为 可见。

posted @ 2024-03-02 17:07  O-Y  阅读(23)  评论(0编辑  收藏  举报