**
MFC实现对话框的停靠窗口
**
VS2019,建立MFC应用,设置高级中去除默认停靠窗口。
1.对话框建立
1.1插入Dialog,ID改为DIALOG_SET;
1.2对话框的属性设置 border->None,style->child
1.3添加相关控件
1.4右键单击添加MFC类CSetting

2.停靠窗口建立
2.1类导向->添加MFC类->基类CDockablePane

2.2MainFrm.h中添加 pubilc成员 :CClassView m_wndClassView;
2.3类视图->CMainFrame->消息MW_Create

if (!m_wndClassView.Create(_T("Title"), this, CRect(0, 0, 200, 200), TRUE, ID_SET, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
{
TRACE0("Failed to create Class View window\n");
return FALSE; // failed to create
}
m_wndClassView.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndClassView);
此时运行已有空停靠窗口
3.关联对话框和停靠窗口
3.1 CClassView中添加pubilic成员CSetting SET;(头文件"CSetting.h")
3.2CClassView->OnCreate中添加
SET.Create(DIALOG_SET, this);
SET.ShowWindow(SW_SHOW);

3.3 此时对话框已挂载在停靠窗但边框不适配
CClassView->OnSize中添加 (消息WM_SIZE)

if (SET.GetSafeHwnd())
{
CRect rect;
GetClientRect(&rect);
SET.MoveWindow(rect);
}

本文介绍了在VS2019中使用MFC创建不带边框的对话框,并将其作为停靠窗口的步骤。首先,通过设置对话框属性为无边框和子窗口风格。然后,创建CDockablePane类的子类,并在CMainFrame中添加成员变量。接着,将对话框关联到停靠窗口。最后,在CClassView的OnSize方法中处理WM_SIZE消息,以实现对话框的适配。
484

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



