我采用了静态拆分窗口以后:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
m_wndSplitter.CreateStatic(this,2,1);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CNickp2pView),CSize(0,300),pContext);
m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CNickList),CSize(0,0),pContext);
SetActiveView((CView*)m_wndSplitter.GetPane(1,0));
return true;
}
其中的CNickp2pView和Document以及MainFrame绑定过,如下:
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CNickp2pDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CNickp2pView));
CNickp2pDoc,CMainFrame,CNickp2pView都是自动生成的。CNickp2pView工作地很好
由于需要两个窗口,我又自己写了一个class CNickList : public CListView的类,但是这个类中的OnInitialUpdate和OnDraw函数都不会被调用,不知为何,请高手作答,谢谢!
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
m_wndSplitter.CreateStatic(this,2,1);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CNickp2pView),CSize(0,300),pContext);
m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CNickList),CSize(0,0),pContext);
SetActiveView((CView*)m_wndSplitter.GetPane(1,0));
return true;
}
其中的CNickp2pView和Document以及MainFrame绑定过,如下:
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CNickp2pDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CNickp2pView));
CNickp2pDoc,CMainFrame,CNickp2pView都是自动生成的。CNickp2pView工作地很好
由于需要两个窗口,我又自己写了一个class CNickList : public CListView的类,但是这个类中的OnInitialUpdate和OnDraw函数都不会被调用,不知为何,请高手作答,谢谢!
就是这个控件,并不是客户区的视图所以没有调用OnDraw()函数至于nInitialUpdate()是可以调用的啊,需要对CListView做更新
初始化工作
{
CRect rect;
GetWindowRect(&rect);
BOOL bRes=m_wndSplitter.CreateStatic(this,1,2); //创建两个水平静态窗格
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CNickp2pView),CSize(0,0),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CNickList),CSize(0,0),pContext);
m_wndSplitter.SetColumnInfo(0,rect.Width()/3,10); //设置列宽
m_wndSplitter.SetColumnInfo(1,2*rect.Width()/3,10);
m_wndSplitter.RecalcLayout(); //重新布局 return nRes;
}
这样来分割试图试试。
你想要列表的话,可以不用从CListView派生的,直接使用CListView也行的
发给我也行。[email protected]我的邮箱,帮你看看吧