以前写过几个只导出函数的DLL,现在需要导出MFC继承类(具体的说是CView的继承类,用的是AFX_EXT_CLASS宏定义)
试过以后发现用debug版本编出的dll放在主程序中运行时会出问题,但用release版本的dll运行就不会有问题,不知,在CMyView中仅仅实现了一个对鼠标的左键点击的消息处理函数,且这个消息处理函数就是弹出一个MessageBox,各位分析一下是什么原因?
试过以后发现用debug版本编出的dll放在主程序中运行时会出问题,但用release版本的dll运行就不会有问题,不知,在CMyView中仅仅实现了一个对鼠标的左键点击的消息处理函数,且这个消息处理函数就是弹出一个MessageBox,各位分析一下是什么原因?
在CChildFrame定义:
CSplitterWnd m_SplitWnd;BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if (!m_SplitWnd.CreateStatic(this,1,2))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_SplitWnd.CreateView(0,0,
pContext->m_pNewViewClass,CSize(100,100),pContext))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
// add the second splitter pane - an input view in column 1
//这句出的问题!!
if (!m_SplitWnd.CreateView(0, 1,
RUNTIME_CLASS(CMyView1), CSize(100, 100), pContext))
{
TRACE0("Failed to create second pane\n");
return FALSE;
}
AfxMessageBox(TEXT("444")); // activate the input view
SetActiveView((CView*)m_SplitWnd.GetPane(0,1));
AfxMessageBox(TEXT("777"));
return TRUE;
//return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}貌似是这个m_SplitWnd使用的问题,各位看看?
跟踪了一下,到了CSplitterWnd::CreateView()中的这句话:
ASSERT(pViewClass->IsDerivedFrom(RUNTIME_CLASS(CWnd)));
出先错误,难道我的CMyView1不是CWnd的继承类么?ps:我的CMyView定义:
class AFX_EXT_CLASS CMyView1 : public CView
{
...
}
各位看看?