最近写调试图开关接口,发现调用destroyAllWindows()和destroyWindow()时异常,函数进入后不报错不返回。
查找原因,是多线程问题,跨线程调用会出现问题。
解决方法:
窗口绘制,和销毁函数在一个线程内调用。运行成功。
主线程绘制 -> 主线程销毁。
子线程a绘制-> 子线程a销毁。
子线程b绘制-> 子线程b销毁。
另外一种解决思路参考RyanLeiWang的博客
https://blog.csdn.net/segments/article/details/78891868
获取该窗体的句柄,不需要显示时,隐藏它,需要显示时,重新show出来
#include <windows.h>
HWND hCvWnd = FindWindow(NULL, L"windowname");
SetWindowPos(hCvWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_HIDEWINDOW); // hide window
SetWindowPos(hCvWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW); // show window