IsWindow 判断窗口句柄是否有效,已经销毁的窗口仍然返回TRUE
MFC 多文档窗口
CList里存的的是打开过的窗口的窗口指针,窗口关闭的时候并没从Clist删除该窗口指针
在项目的另外一个地方需要遍历该Clist 做一些其他操作
代码如下
for (int i = 0; pos && i < (UINT)theApp.m_List.GetCount(); i++) {
pView = theApp.m_List.GetNext(pos);
if(pView && ::IsWindow(pView->m_hWnd))
{
pView->fun();....... //此处偶尔会造成野指针操作
}
在偶发情况下,窗口关闭后,遍历以上代码IsWindow()并没有返回FALSE 导致 以上代码红色部分会造成野指针操作。
哪位大神帮忙解释下原因。