CDockablePane类可以用来创建停靠栏。可以将其他控件集成到CDockablePane的派生类中。本文描述如何将对话框集成到CDockablePane中。集成其他控件的方式类似。
1、首先创建多文档应用程序,创建一个对话框类CTestDlg。
2、在程序添加一个停靠栏类,名为ControlPanel,其父类为CDockablePane,在该类中添加对话框成员。
需要将对话框的style设置为child。另外border设置为none的话,得到的界面看上去会更主流一点。
1: class ControlPanel : public CDockablePane
2: {
3: .....
4: public:
5: CTestDlg m_dlg;
6: };
3、在ControlPanel的OnCreate方法中创建并显示对话框。
1: int ControlPanel::OnCreate(LPCREATESTRUCT lpCreateStruct)
2: {
3: if (CDockablePane::OnCreate(lpCreateStruct) == -1)
4: return -1;
5:
6: // TODO: Add your specialized creation code here
7:
8: m_dlg.Create(IDD_DIALOG_TEST,this);
9: m_dlg.ShowWindow(SW_SHOW);
10: return 0;
11: }
4、ControlPanel销毁时,对话框也销毁掉:
1: void ControlPanel::OnDestroy()
2: {
3: CDockablePane::OnDestroy();
4:
5: // TODO: Add your message handler code here
6: m_dlg.DestroyWindow();
7: }
5、ControlPanel尺寸变化、隐藏的时候,对话框也要做相关处理:
1: void ControlPanel::OnSize(UINT nType, int cx, int cy)
2: {
3: CDockablePane::OnSize(nType, cx, cy);
4:
5: // TODO: Add your message handler code here
6: if(m_dlg.GetSafeHwnd())
7: {
8: CRect rct;
9: GetClientRect(rct);
10: m_dlg.MoveWindow(rct);
11: }
12: }
6、在框架类中添加ControlPanel成员:
1: class CMainFrame : public CMDIFrameWndEx
2: {
3: ...
4: ControlPanel m_Panel;
5: ...
6: };
7、在框架类创建时,创建这个ControlPanel对象:
Create函数里面的666是这个停靠栏的ID,这里是随便指定的一个数值,只要不和其他已用资源重复即可,真正应用的时候,以在字符串表中添加一个ID。
1: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
2: {
3: ...
4: m_Panel.Create(_T("tset"),this,CRect(0,0,300,300),TRUE,666,
5: WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI);
6: m_Panel.EnableDocking(CBRS_ALIGN_ANY);
7:
8: EnableDocking(CBRS_ALIGN_ANY);
9: DockPane(&m_Panel);
10: ...
11: }
编译运行后,可以发现框架中添加了一个停靠栏,之前创建的那个对话框嵌入在里面。
分享到:
相关推荐
CDockablePane中嵌入对话框,嵌入CView拆分。
在CDockablePane中嵌入对话框。CDockablePane类可以用来创建停靠栏。可以将其他控件集成到CDockablePane的派生类中。内含源码,基于VS2008的MFC单文档工程。
非常简单的CDockablePane 里嵌入对话框小程序,适合刚接触CDockablePane 朋友
MFC 如何将一个对话框嵌入到视图中
MFC实现嵌入式对话框,显示子对话框到主对话框中的对应位置
在视图中嵌入文件选择对话框,压缩包里包含可执行的源文件
VS2005中在mfc对话框中嵌入一个matlab的figure图形,并且图形可以随窗口的大小的改变而改变 VS2005中在mfc对话框中嵌入一个matlab的figure图形,并且图形可以随窗口的大小的改变而改变
将命令提示符窗口嵌入到一个VC对话框程序中,当双击运行该对话框程序时,对话框中显示cmd窗口,cmd窗口与对话框的尺寸同时变化,运行这个对话框程序,和运行一个cmd程序的感觉一样。
mfc对话框程序中嵌入chrome浏览器,包含完整h、lib、dll。开始下载的最新版开发包CEF 3.3578.1864.gfa073f3,发现程序运行10几秒后,总是会弹出新窗口。后改用稳定版开发包cef3.2623.1401.gb90a3be,该问题得到解决...
CEF嵌入MFC对话框代码
完整代码,解决完崩溃、进程关闭不了等问题。
该文件支持QT工具运行,代码不全,需要自己建立新工程,基类的dialog。
该例子很简单,但是为了在视图中显示一幅lena图片,所以引入OpenCV图像处理库,如果没有安装OpenCV库的同学,可以...还有对话框类头文件中OpenCV数据结构的声明,这样就可以debug出来一个空白的视图类嵌在dialog类中。
而对话框界面布置各种控件比较方便,与其他对话框之间的变量传递也比较容易。因此,只要结合两者的优点,很多难题将迎刃而解。 补充:多文档及带有资源管理器风格的单文档和多文档都可以采用本例方法处理。
论坛上有很多人使用对话框的scrollBar控制对话框中一部分的卷动,实现过程复杂而且逻辑混乱。这个例子里,直接在对话框中创建一个CFormView子窗口,子窗口自己管理卷动,各负其责,条理清晰
MFC+对话框里嵌套对话框 MFC+对话框里嵌套对话框
在MFC的一个对话框上显示窗口,显示部分用单独的opengl类封装
对于喜欢对话框嵌入网页技术的朋友。这个应该适合你们。