1. 在资源里添加dialog时,使用formview的dialog。
2. 给dialog添加类CParamsDlg,基类选CDialog,生成代码后,将代码中的CDialog改成CPanedialog
3. 创建CPaneDialog,其中m_wndFileView是一个CDockablePane子类的对象。

if (!m_wndFileView.Create(strFileView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_FILEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT| CBRS_FLOAT_MULTI))
{
TRACE0("Failed to create File View window/n");
return FALSE; // failed to create
}
if (!m_dlgParams.Create (_T("DialogBar"), this, TRUE,
MAKEINTRESOURCE (IDD_FORM_PARAMS),
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI,
IDD_FORM_PARAMS))
{
TRACE0("Failed to create Dialog Bar/n");
return FALSE; // fail to create
}
m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);
m_dlgParams.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndFileView);
m_dlgParams.DockToWindow (&m_wndFileView, CBRS_ALIGN_BOTTOM);

4. 在CParamsDlg中对控件添加响应事件,不能捕获到,初步想到的解决办法未,在CParamsDlg中添加一个通过控件id取得控件内容的函数,然后将窗体中的按钮响应事件,添加到mainframe中,这样由mainframe来捕获,在响应函数里调用CParamsDlg中的函数,来获得对应控件的值。
cpanedialog风格问题:
在你的dialog里面加入WM_PAINT的响应,在OnPaint()函数里写如下代码:
CPaintDC dc(this);
CMemDC memDC(dc,this);
CRect rectClint;
GetClientRect(rectClint);
CMFCVisualManagerOffice2007::GetInstance()->OnFillOutlookPageButton(&memDC.GetDC(),this,rectClient, rectClient);
以上这些代码还没验证,先把它保存下来
本文介绍如何在MFC应用程序中使用对话框与面板进行集成,并实现对话框的响应事件处理,同时解决了对话框风格问题。

5252

被折叠的 条评论
为什么被折叠?



