从源代码可以看出,报错的原因是对话框没有了WF_CONTINUEMODAL属性,模态对话框默认是有这个属性的,再看看是哪个地方去掉了这个属性呢?
再看下面几段源代码:
原来是在EndModalLoop里去掉的。这个函数里除了去掉了这个属性,似乎没有做其它什么“有用”的操作,那就直接放弃它,直接用::EndDialog(m_hWnd, nResult);来结束对话框吧
于是在对话框调用OnCancel的地方,换成::EndDialog(m_hWnd, nResult),试了下,暂时还没发现问题
2010年7月9日 15:09:36
edit
果然发现问题了,在调用前,还要加上这句
m_nFlags &= ~WF_CONTINUEMODAL;
要不然,会卡在对话框的消息循环里退不出来
但是这样做了,偶尔还会出现ASSERT(ContinueModal())断言处报错的现象,暂时不知道为什么。