int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1; AfxMessageBox("测试");
return 0;
}
这个AfxMessageBox在OnCreate中,使程序发生异常中断.请问这是正常的吗.
以前没有注意这个问题.谢谢
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1; AfxMessageBox("测试");
return 0;
}
这个AfxMessageBox在OnCreate中,使程序发生异常中断.请问这是正常的吗.
以前没有注意这个问题.谢谢
调试看看
::MessageBox(NULL, "测试", NULL, MB_OK);
int CChildWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1; ::MessageBox(NULL, "测试", NULL, MB_OK); MDIMaximize();
return 0;
}
上面这样就可以,
MDIMaximize();
::MessageBox(NULL, "测试", NULL, MB_OK);
两句交换位置就不可以.
CChildWnd这个类是要被继承的.在继承里有可能用到::MessageBox(NULL, "测试", NULL, MB_OK);
就会总是中断.
他中断在void CScrollView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
ASSERT_VALID(pDC);#ifdef _DEBUG
if (m_nMapMode == MM_NONE)
{
TRACE(traceAppMsg, 0, "Error: must call SetScrollSizes() or SetScaleToFitSize()");
TRACE(traceAppMsg, 0, "\tbefore painting scroll view.\n");
ASSERT(FALSE);
return;
}请问谁有防止子窗口切换时闪烁的方法。
MessageBox
和
AfxMessageBox
的区别,很重要,
AfxMessageBox 内部使用的消息机制,即:有一个单独的消息循环,类似于 模态对话框。
所以AfxMessageBox会独占消息循环,这样就会使其调用者的消息循环无效,只要
AfxMessageBox 执行完成之后,调用者才会继续接收消息。所以,上面的问题,也许和AfxMessageBox 的模态对话框有关系。