测试CDockablePane。 测试他的最基本的功能。
最近看到一句话:
×××××××××××××××××××××××××××××××××××××××××××
CDockablePane是一个通用窗口容器,它主要有两个用途:在一个框架中悬浮或者停靠窗口。
在复杂布局的应用程序中,它可以显示或隐藏所装载的窗口,为应用程序窗口提供额外的空间。
×××××××××××××××××××××××××××××××××××××××××××
上面说的事呢 感觉还是不错的。于是乎开始测试。
××××××××××××××××××××××××××××
Q1:窗口的容器是个什么玩意?
A1:也许就是把一个窗口放入到里面去。然后这个窗口就可以牛X了。这种牛X表现在窗口可以随意停靠了。类似VS2010里面的窗口的那种感觉。
××××××××××××××××××××××
既然如此开始测试吧。
第一步:在Win7 64位系统里面 使用VS2010创建一个单文档MFC程序,然后编译测试通过后进行下一步。

第二步:既然这个什么CDockablePane可以做为一个窗口的箩筐使用,那咱们就创建一个窗口。创建什么样的窗口呢?
简单点吧。。直接插入一个对话框吧。
找到资源视图,右击Dialog插入一个对话框。在属性里面把个这个对话框的参数稍微改一下。
Caption ->DialogGsz,style->child,border->none。就是把这个对话框的名字,风格,边框 修改一下。
ID->IDD_DIALOG_GSZ

第三步:添加一个类 :CDockablePaneGsz
这个类呢 继承自CDockablePane。这个为啥要添加一个继承在CDockablePane的类的 而不是直接去修改CDockablePane呢? 鄙人认为是CDockablePane是微软自己的东西,
很是金贵,轻易不要更改。所以咱们继承一个过来。咱自己的东西想怎么折腾都可以。大不了删掉重做。

第四步 :经过一番波折,咱们有了CDockablePanegGsz这个继承自CDockablePane的类。也有一个对话框的类。话说这筐也有了,萝卜也有了。那就放进入呗。
哦! 差点忘了。我们刚才这是创建了一个对话框资源,却没有给予这个资源创建类。罪过 罪过 。 右击刚才的那个对话框,创建一个继承CDialgEx的类CDialogDockbablePaneGsz。至此萝卜有了。开始放:
A:先在CDockablePanegGsz的头文件里面包含萝卜的的头文件。#include "DialogDockbablePaneGsz.h"
B:然后在头文件里面实例化一个对象 CDialogDockbablePaneGsz m_DialogDockbablePaneGszMain;
至此萝卜完成放进入了。
第五步:萝卜既然进来了,就要对萝卜做一些 操作。 是切还是剁 是红烧还是清蒸。 总是要做的事情吧 不然把它放进来干嘛?
做啥事呢?客官你别急 。。这就来了。。
A:在CDockablePanegGsz的OnCreate函数里面创建并显示对话框
问:我这找不到OnCreate函数啊
答:见下图

int CDockablePaneGsz::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -)
return -; // TODO: 在此添加您专用的创建代码
m_DialogDockbablePaneGszMain.Create(IDD_DIALOG_GSZ,this);
m_DialogDockbablePaneGszMain.ShowWindow(SW_SHOW);
return ;
}
第六步:这个CDockablePaneGsz所在的窗口销毁的时候,里面的萝卜(也就是那个基于对话框创建的窗口)也被销毁
void CDockablePaneGsz::OnDestroy()
{
CDockablePane::OnDestroy();
m_DialogDockbablePaneGszMain.DestroyWindow();
// TODO: 在此处添加消息处理程序代码
}
第七步: 当CDockablePaneGsz所在的窗口的尺寸变化 或者是隐藏的时候 ,里面的萝卜也要跟着变化。
void CDockablePaneGsz::OnSize(UINT nType, int cx, int cy)
{
CDockablePane::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码
if (m_DialogDockbablePaneGszMain.GetSafeHwnd())
{
CRect rct;
GetClientRect(rct);
m_DialogDockbablePaneGszMain.MoveWindow(rct);
}
}
第八步: 刚才把筐和萝卜弄好了。是不是就万事大吉了呢? 不是的。。 这个筐和萝卜还要整体和那个单文档MFC程序发生的关系。这样才好。
当然了,至于如何发生关系,是在框架类里面发生关系 还是在视图类里面发生关系。 这个估计都可以。。。
我在这里选择在框架类里面发生点关系。
A:首先 在框架的类头文件里面 添加 CDockablePanegGsz
// MainFrm.h : CMainFrame 类的接口
// #pragma once
#include "DockablePaneGsz.h"
class CMainFrame : public CFrameWndEx
B在框架类的头文件里面 创建 CDockablePanegGsz的对象
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnViewCustomize();
afx_msg LRESULT OnToolbarCreateNew(WPARAM wp, LPARAM lp);
DECLARE_MESSAGE_MAP()
public:
CDockablePaneGsz m_DockablePaneGszMain;
C:在框架类的OnCreate函数里面 添加CDockbalePaneGszMain 窗口的创建。 这个函数有好多好多参数。。
CMFCToolBar::SetBasicCommands(lstBasicCommands);
//////////////////////////////////////////////////////////////////////////
m_DockablePaneGszMain.Create(_T("朕就是那个牛X停靠类"),this,CRect(,,,),TRUE,,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|CBRS_LEFT|CBRS_FLOAT_MULTI);
m_DockablePaneGszMain.EnableDocking(CBRS_ALIGN_ANY);
//EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_DockablePaneGszMain); return ;
第九步: 是骡子是马 跑起来 溜溜
见效果图。

后记 :
源代码地址:http://pan.baidu.com/s/1sjr0jAd
环境 :VS2010 。 不需要附加任何其他库。系统是Win7 64位
邮箱:wenluderen@gmail.com
QQ :470885756
测试CDockablePane。 测试他的最基本的功能。的更多相关文章
- APP敏捷测试,测试和开发并行!
测试和开发具有同等重要的作用,从一开始,测试和开发就是相向而行的.测试是开发团队的一支独立的.重要的支柱力量. 测试要具备独立性,独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具 ...
- 软件测试 -- 和用户共同测试(UAT测试)的注意点有哪些
软件产品在投产前,通常都会进行用户验收测试.如果用户验收测试没有通过,直接结果就是那不到“Money”,间接影响是损害了公司的形象,而后者的影响往往更严重.根据作者的经验,用户验收测试一定要让用户满意 ...
- 衣联网络-亿能测试 安全测试沙龙 PPT资料免费下载
衣联网络-亿能测试 安全测试沙龙 PPT资料免费下载http://automationqa.com/forum.php?mod=viewthread&tid=2304&fromuid= ...
- 冒烟测试、α测试、Beta测试、性能测试
“冒烟测试”(也可称为showcase)这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程. 冒烟测试(smoke test)在测试中发现问题,找到了一个Bug,然后开发人员会 ...
- Apache JMeter开源压力测试/负载测试工具 2.12 官方最新版
软件介绍 Jmeter是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试),而且用Jmeter 来测试 Restful API, 非常好用. 如何学 ...
- JUit——(三)JUnit核心对象(测试、测试类、Suit和Runner)
JUnit的核心对象:测试.测试类.测试集(Suite).测试运行器 1. 测试: @Test注释的.公共的.不带有任何参数.并且返回void类型的方法 2. 测试类: 公共的,包含对应类的测试方法的 ...
- app测试--稳定性测试
稳定性测试的概念有2种, 一, 稳定性测试,对应于异常性测试,即发生异常情况时,系统如何反应的测试.包含: 1 交互性测试,被打扰的情况,如来电,短信,低电量等.这些其实在上章的功能测试中有提到. 2 ...
- Net Manager测试连接测试没有成功,用户权限问题,以管理员身份运行后测试成功
Net Manager测试连接测试没有成功,截图如下:
- 转:google测试分享-测试经理
原文: http://blog.sina.com.cn/s/blog_6cf812be0102vode.html 前言:这个系列分享的内容大部分都是出自于<google是如何测试的>的书, ...
- monkey测试===monkeyrunner测试教程(1)
1.安装测试环境 jdk 安装与配置 android sdk安装与配置 Python编辑器安装与配置 以上安装请自行百度教程 Monkeyrunner使用方法 http://www.android-d ...
随机推荐
- GUI的广泛应用是当今计算机发展的重大成就之一
GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用.人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口.菜单.按键等方式来方便地进行操作.而嵌入式GUI具有下面几 ...
- 如果没有指定Cookie的时效,那么默认的时效是。(选择1项)
如果没有指定Cookie的时效,那么默认的时效是.(选择1项) A.一天 B. 永不过期 C.会话级别 D.一分钟 解答:C 这是API的原文:By default, -1 indicating th ...
- 监听过多,会抛tooManyListener例外
在生成一个窗体的时候,点击窗体的右上角关闭按钮激发窗体事件的方法:窗体Frame为事件源,WindowsListener接口调用Windowsclosing(). 为了配合后面的实现,我们必须将Win ...
- MFC WinInetHttp抓取网页代码内容
Windows Internet编程主要包括两方面: l 服务器端 l 客户端 WinInet编程 Internet客户端主要实现的功能,主要是通过Internet协议(HTTP.FTP等)获 ...
- JavaScript设计模式——观察者模式
观察者模式,又称发布-订阅模式或消息机制,定义了一种依赖关系,解决了主题对象与观察者之间功能的耦合. 通过运用观察者模式,可以解决团队开发中的模块间通讯问题,这是模块间解耦的一种可行方案. 首先,我们 ...
- 剑指 offer set 11 最小的K个数
总结 1. 假如允许修改给定数组, 那么通过快排的子过程, 可以在 o(n) 时间复杂度内得出结果. 2. 对于海量数据和不允许修改的数据, 通过最小堆的方式更好, 通过维持一个大小为 K 的最小堆
- 二、Android Studio使用——导入jar包,运行、debug都不是问题
[新建AndroidStudio工程,lib导入jar包] 我们的项目代码都在app里面,可以看作是一个Model. src 下面除了我们的代码之外,还有单元测试. 把JAR复制到libs文件 ...
- MySql指令大全(转载)
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...
- java手写的动态数组JimisunArray
/** * @Author:jimisun * @Description: * @Date:Created in 22:10 2018-07-18 * @Modified By: */ public ...
- 160607、springmvc+spring使用taskExecutor
第一步:导入spring core的jar+springmvc的jar 第二步:springmvc的配置文件中 <bean id="taskExecutor" class=& ...