CMainFrame中:
CSplitterWnd m_wndSplitter1;
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if(m_wndSplitter1.CreateStatic(this,1,2)==NULL)
return FALSE;
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CTrainView),CSize(530,400),pContext);
m_wndSplitter1.CreateView(0,1,RUNTIME_CLASS(CDigitalView),CSize(0,400),pContext);
return TRUE;
}
其中CTrainView是单文档自动生成的View类,DigitalView是自己新建的一个View类函数:void CMainFrame::ShowInfo()
{
CTrainView* pAnalog=(CTrainView*)m_wndSplitter1.GetPane(0,0);
CDigitalView* pDigital=(CDigitalView*)m_wndSplitter1.GetPane(0,1); if(pAnalog!=NULL)
{
pAnalog->PostMessage(SHOW_ANALOG,0,0);//自定义消息,去CTrainView类中显示一些数据
}
if(pDigital!=NULL)
{
pDigital->SendMessage(SHOW_DIGITAL,0,0);//自定义消息,去CDigitalView类中显示一些数据
}
}
产生错误,debug Assertion Failed!
wincore.cpp Line:894
起初没有分割窗口时,ShowInfo函数是这样的,
void CMainFrame::ShowInfo()
{
CTrainView* pAnalog=(CTrainView*)GetActiveView(); if(pAnalog!=NULL)
{
pAnalog->PostMessage(SHOW_ANALOG,0,0);//自定义消息,去CTrainView类中显示一些数据
}
}此时就是正确的。
不知为何,分割窗口之后就不对了,请大家帮帮忙!谢谢
CSplitterWnd m_wndSplitter1;
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if(m_wndSplitter1.CreateStatic(this,1,2)==NULL)
return FALSE;
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CTrainView),CSize(530,400),pContext);
m_wndSplitter1.CreateView(0,1,RUNTIME_CLASS(CDigitalView),CSize(0,400),pContext);
return TRUE;
}
其中CTrainView是单文档自动生成的View类,DigitalView是自己新建的一个View类函数:void CMainFrame::ShowInfo()
{
CTrainView* pAnalog=(CTrainView*)m_wndSplitter1.GetPane(0,0);
CDigitalView* pDigital=(CDigitalView*)m_wndSplitter1.GetPane(0,1); if(pAnalog!=NULL)
{
pAnalog->PostMessage(SHOW_ANALOG,0,0);//自定义消息,去CTrainView类中显示一些数据
}
if(pDigital!=NULL)
{
pDigital->SendMessage(SHOW_DIGITAL,0,0);//自定义消息,去CDigitalView类中显示一些数据
}
}
产生错误,debug Assertion Failed!
wincore.cpp Line:894
起初没有分割窗口时,ShowInfo函数是这样的,
void CMainFrame::ShowInfo()
{
CTrainView* pAnalog=(CTrainView*)GetActiveView(); if(pAnalog!=NULL)
{
pAnalog->PostMessage(SHOW_ANALOG,0,0);//自定义消息,去CTrainView类中显示一些数据
}
}此时就是正确的。
不知为何,分割窗口之后就不对了,请大家帮帮忙!谢谢
0在debug下会有一个断言失败,但是不影响啥
改成1试试
问题是我分割窗口后,获得分割后的窗口就错了!
CTrainView* pAnalog=(CTrainView*)m_wndSplitter1.GetPane(0,0);
CDigitalView* pDigital=(CDigitalView*)m_wndSplitter1.GetPane(0,1);
另外我上面加的另一个类是基于CView的,你加的那个是基于哪个类的呢?
我的两个VIew类是基于CListView的,这个没关系。我自己新建一个工程实现,ShowInfo中投递两个消息,都是正确的。