对话框的分割可以进行自绘实现,不过太复杂麻烦。 mfc中CSplitterWnd类只能在框架窗口中使用,为了分割对话框,可以把框架窗口作为对话框的子窗口,具体可以这样做,
//声明为对话框成员变量
CFrameWnd *m_pFrameWnd;
CSplitterWnd *m_pSplitWnd;
继承view,作为分割后的视图
//继承CFormView 或者其他view
class CLeftView:public CFormView
{
......
};
class CRightView:public CFormView
{
......
};
在对话框OnCreate函数中添加:
CString strMyClass = AfxRegisterWndClass(CS_VREDRAW|CS_HREDRAW,
::LoadCursor(NULL, IDC_ARROW), (HBRUSH)::GetStockObject(WHITE_BRUSH),
::LoadIcon(NULL, IDI_APPLICATION));
CRect rect;
GetClientRect(&rect);
m_pFrameWnd=new CFrameWnd;
m_pFrameWnd->Create(strMyClass,_T(""), WS_CHILD, rect, this);
m_pFrameWnd->ShowWindow(SW_SHOW);
m_pSplitWnd=new CSplitterWnd;
m_pSplitWnd->CreateStatic(m_pFrameWnd, 1, 2);
m_pSplitWnd->CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(200, 200), NULL);
m_pSplitWnd->CreateView(0, 1, RUNTIME_CLASS(CRightView), CSize(200, 200), NULL);
在对话框OnInitDialog函数中添加:
CRect rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
m_pFrameWnd->MoveWindow(&rect);
m_pFrameWnd->ShowWindow(SW_SHOW);
最后在OnDestroy中释放
if(m_pSplitWnd)
{
m_pSplitWnd->DestroyWindow();
delete m_pSplitWnd;
m_pSplitWnd=NULL;
}
//if(m_pFrameWnd)
//{
// m_pFrameWnd->DestroyWindow();
// delete m_pFrameWnd;
// m_pFrameWnd=NULL;
//}