BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
CRect rect;
GetClientRect(&rect);
if (!m_wndSplitter.CreateStatic(this,1,3))
return FALSE;
if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CFireView),CSize(rect.Width()*20/45,rect.Height()),pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
if (!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CFireView),CSize(rect.Width()*20/45,rect.Height()),pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
if (!m_wndSplitter.CreateView(0,2,RUNTIME_CLASS(CFireView),CSize(rect.Width()/3,rect.Height()),pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}
int CFireView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
if (!theApp.pMain[theApp.m_theview] && theApp.m_theview < VIEWNUM)
{
theApp.pMain[theApp.m_theview] = new CMainAction() ;
theApp.pMain[theApp.m_theview]->Create(IDD_MAINACTION ,this) ;
theApp.pMain[theApp.m_theview]->ShowWindow(SW_SHOW) ;
theApp.pRight[theApp.m_theview] = new CRightView() ;
theApp.pRight[theApp.m_theview]->Create(IDD_RIGHTVIEW ,this) ;
theApp.pRight[theApp.m_theview]->ShowWindow(SW_SHOW) ;
}
// TODO: Add your specialized creation code here
return 0;
}
void CFireView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
CRect rect ,rect1 ,rect2 ;
GetClientRect(&rect) ;
if (theApp.m_theview >= 3)
{
theApp.m_theview = 0 ;
}
本来顺序应该这样的:
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CFireView),CSize(rect.Width()*20/45,rect.Height()),pContext);
CFireView::OnCreate(LPCREATESTRUCT lpCreateStruct);
CFireView::OnSize(UINT nType, int cx, int cy);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CFireView),CSize(rect.Width()*20/45,rect.Height()),pContext);
CFireView::OnCreate(LPCREATESTRUCT lpCreateStruct);
CFireView::OnSize(UINT nType, int cx, int cy);
·······
现在成了这样子:
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CFireView),CSize(rect.Width()*20/45,rect.Height()),pContext);
CFireView::OnCreate(LPCREATESTRUCT lpCreateStruct);
CFireView::OnSize(UINT nType, int cx, int cy);
CFireView::OnSize(UINT nType, int cx, int cy);
CFireView::OnSize(UINT nType, int cx, int cy);
我把 ++ theApp.m_theview 注释掉后第一个窗口可以正确显示出来,但是后面两个是空的。
Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 Chap 3:javah命令帮助信息...... Chap 4:用javah产生一个.h文件......Chap5:jni教程(very very good) 19 ...Chap6: JNI传递返回值......15.2.2.3 传递字符串......