在CDockablePane中嵌入对话框
CDockablePane类可以用来创建停靠栏。可以将其他控件集成到CDockablePane的派生类中。下文描述如何将对话框集成到CDockablePane中。
a) 创建单文档应用程序;
b) 加入对话框资源,注意,对话框必须有Child属性,Border设置为None
c) 为对话框创建类CDialogEmbeded,基类为CDialogEx
d) 创建派生自CDockablePane的类CDockableDlg
e) 为CDockableDlg添加CDialogEmbeded类型的成员变量m_dlgEmbeded;
f) 重载CDockableDlg的OnCreate函数
int CDockableDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
m_dlgEmbeded.Create(CDialogEmbeded::IDD,this);
m_dlgEmbeded.ShowWindow(SW_SHOW);
return 0;
}
g) 重载CDockableDlg的OnSize函数
void CDockableDlg::OnSize(UINT nType, int cx, int cy)
{
CDockablePane::OnSize(nType, cx, cy);
// TODO: 在此添加您专用的创建代码
if(m_dlgEmbeded.GetSafeHwnd())
{
CRect rect;
GetClientRect(&rect);
m_dlgEmbeded.MoveWindow(rect);
}
}
h) 重载CDockableDlg的OnDestory函数
void CDockableDlg::OnDestroy()
{
CDockablePane::OnDestroy();
// TODO: 在此处添加消息处理程序代码
m_dlgEmbeded.DestroyWindow();
}
i) 在框架类中添加CDockableDlg对象m_dockDlg
j) 在CMainFrame类的OnCreate函数中添加以下代码,Create函数里面的1001是这个停靠栏的ID,这里是随便指定的一个数值,只要不和其他已用资源重复即可,真正应用的时候,以在字符串表中添加一个ID
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
…
EnableDocking(CBRS_ALIGN_ANY);
m_dockDlg.Create("Dock Dlg",this,CRect(0,0,200,200),TRUE,1001,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|CBRS_LEFT|CBRS_FLOAT_MULTI);
m_dockDlg.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_dockDlg);
return 0;
}
k) 疑问:m_dockDlg什么时候销毁?
在CDockablePane中嵌入对话框的更多相关文章
- 在CDockablePane中嵌入CFormView
CDockablePane中嵌入CFormView与嵌入CDialogEx稍有不同,差异主要体现在CFormView类本身与CDialogEx类的不同上,CDockablePane层面的操作完全相同. ...
- MFC在对话框中嵌入对话框
在对话框中嵌入子对话框 代码 m_childDlg = new CChildDlg(); m_childDlg->Create(IDD_CHILD_DIALOG,AfxGetApp()-> ...
- WPF中嵌入普通Win32程序的方法
公司现在在研发基于.Net中WPF技术的产品,由于要兼容旧有产品,比如一些旧有的Win32程序.第三方的Win32程序等等,还要实现自动登录这些外部Win32程序,因此必须能够将这些程序整合到我们的系 ...
- Visual Studio 中可执行文件中嵌入的清单文件
概要 本分步指南介绍如何在 Microsoft Visual Studio 2005年中的可执行文件 (.exe) 文件中嵌入的清单文件.如果您要开发"认证 Windows Vista&qu ...
- C#开发ActiveX插件-aspx中嵌入
刚到新的公司,第一周让我熟悉一下他们用的silverlight和arcgis.这周,也就是昨天分配了我一个小小的任务! 哪个项目的不知道,是让我实现一个在aspx中嵌入activeX插件! 在网上找了 ...
- 在VC/MFC中嵌入Google地图——图文并茂
近期须要实验室须要将在无人机地面站中嵌入地图,在网上找了非常多资料,最终有些眉目了, 首先.做这个须要用到的知识有.MFC控件.MFC类库.JavaScript脚本语言.Google API.Goog ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- 理解javascript中的对话框
前面的话 通常我们调试程序时,如果需要阻塞效果,则要用到alert().但除了alert()以外,window对象还提供了其他3种对话框.本文将详细介绍window对象中的对话框 定义 系统对话框与在 ...
- Qt界面中嵌入其他exe程序的界面,使用Qt5
下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示.本文参考了 http://blog.csdn.net/jiaoyaziyang/article/details/4 ...
随机推荐
- delphi怎么实现全选的功能
1. SelectAll 可以实现全选功能 Delphi/Pascal code edit1.SelectAll; // Delphi/Pascal code RichEdit1.SelStart:= ...
- ubuntu安装docker
uname -r #查看内核版本要大于3.10apt-get updateapt-get install linux-image-generic-lts-trusty wget -qO- https: ...
- 使用GNU/Linux播放电视节目
目前,生活中很多事情都可以在电脑前完成,读书.写程序.听音乐.看视频等.如果也可以在电脑上收看有线电视节目的话,那就更好了.为此,我购买了圆刚视频采集卡AverMedia C725B.如下图所示. 官 ...
- Activity间切换的动画应用
Activity切换过程中,系统会使用一些默认的动画,显得切换过程不至于太呆板. 在frameworks/base/core/res/res/values下的stlyes.xml文件中有具体的定义各个 ...
- Mac 必备软件 Quicksilver
http://www.xdanger.com/2007/03/30/000067.html
- Mysql CPU占用高的问题解决方法小结
通过以前对mysql的操作经验,先将mysql的配置问题排除了,查看msyql是否运行正常,通过查看mysql data目录里面的*.err文件(将扩展名改为.txt)记事本查看即可.如果过大不建议用 ...
- 在Scholarspace可视化交互式分析中遇到的几个问题及处理方法
1 JavaScript中的变量作用范围 JS中的变量作用域是以函数为单位的,因为在两个for循环中,不能用同一个变量命名作为循环的控制条件,不然会陷入死循环退出不来.曾经为了处理这个问题花看一天的时 ...
- java线程数据交换Exchanger
两个线程都等到交换函数才能完成交换数据操作,代码如下: package threadLock; import java.util.Random; import java.util.concurrent ...
- thinkphp整合系列之phpexcel生成生成excel文件
在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲 ...
- rm删除文件时排除特定文件
删除当前目录下所有的*.txt文件,但除了test.txt文件: rm `ls *.txt | grep -v test.txt` 或者 rm `ls *.txt | egrep -v test.tx ...