测试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 ...
随机推荐
- SQL里3个表的连接查询
两种:1.select * from 表1,表2,表3 where 表1.字段=表2.字段 and 表1.字段=表3.字段这种效率比较低 结构简单数据量小可以采用2.select * from 表1 ...
- JavaScript有关的10个怪癖和秘密(转)
数据类型和定义 -------------------------------------------------------------------------------------------- ...
- CSS:scrollbar的属性及样式分类
overflow 内容溢出时的设置(设定被设定对象是否显示滚动条) overflow-x 水平方向内容溢出时的设置 overflow-y 垂直方向 ...
- 利用新浪云平台(SAE) 搭建 HUSTOJ 简易教程
前言: OnlineJudge(OJ)是一种代码在线判定平台,这里有许多的编程题目供你选择,你可以选择题目提交代码,OJ会自动返回你的代码的判定结果.是一种很方便的编程.算法练习平台.详情可见:百度百 ...
- UIWindow小记
If you choose to create a window in Interface Builder, be sure to select the Full Screen at Launch o ...
- hdu 4715(打表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4715 思路:先打个素数表,然后判断一下就可以了. #include<iostream> # ...
- Axure 8 注册码,市面上很多注册码都不行用,但是这个可以。
找了很久了,感谢@Quan-Sunny的转载 Licensee: University of Science and Technology of China (CLASSROOM) Key: DTXR ...
- NUC972 MDK NON-OS
NUC972直接可以在BSP包里模板进行编程,烧录用Nu writer http://www2.keil.com/mdk5/legacy 下载对应的安装包的插件 是直接下载到DDR 里面去运行,所 ...
- Android模拟器基本使用和常用工具介绍
注:其中部分内容参考网上资源 1.Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的移动设备.Android的模拟器是基于QEMU开发的,QEMU是一个有名的开源虚拟机项目(详 ...
- Struts 2再曝远程代码执行漏洞S2-037
导读今年4月份,Apache Stuts 2之上发现的S2-033远程代码执行漏洞,以迅雷不及掩耳之势席卷而来.其利用代码很快就在短时间内迅速传播.而且官方针对这个高危漏洞的修复方案还是无效的. 悲剧 ...