泡视界 2021-04-01 17:10 采纳率: 0%
浏览 121
已结题

如何将opencv imshow结果显示在Win API CreateWindow创建的静态窗口中

1.没有使用MFC,没法使用MFC 的picture控件

2.我创建了一个静态窗口

HWND imgWH= CreateWindow(
L"STATIC",//设置为静态窗口
L"Whatever",//随意设置
WS_CHILD | WS_VISIBLE | SS_BITMAP,//设置了BITMAP类型
0,                                  /*X co-ordinates*/
0,                                  /*Y co-ordinates*/
800,                                /*Width*/
600,                                /*Height*/
hWnd,                               /*Parent HWND*/
(HMENU) 233,                        // ID随意设置一个独特的数字
(HINSTANCE)GetWindowLong(hWnd, GWLP_HINSTANCE), /*The HINSTANCE of your program*/
NULL);

2. 然后看网上用MFC的方法是将imshow的parent句柄设置城控件的句柄,我这里就相应改成设置成我创建的句柄 imgWH

namedWindow("test", 0);//OpenCV的窗口
HWND imshowH = (HWND)cvGetWindowHandle(DISPLAY_WINDOW_NAME);//获取其句柄
HWND imshowParentH = GetParent(imshowH);//获取其原本的父句柄
SetParent(imshowH, imgWH); //重设父句柄为上面创建的窗口句柄
ShowWindow(imshowParentH, SW_HIDE);//imshow的原本父句柄窗口隐藏

3. 但在实现了句柄的关联之后,网上用了MFC控件的成员函数ShowWindow来更新窗口画面,我这种只用Win API的要怎么实现画面显示呢?

 

有没有懂哥帮帮我?

  • 写回答

1条回答 默认 最新

  • 泡视界 2021-04-01 17:57
    关注

    ……我自己搞出来了,以下分享:

    1. Win API 和MFC的方式一致,就是把imshow的父句柄重设为CreateWindow创建的静态窗口的句柄。

    2.imshow后,图片就可以显示了。我没显示的原因是一直没获取到我创建的窗口的句柄,一直设置null进去……

    评论

报告相同问题?