动窗口的制作暨CSizingControlBar类的使用说明

 

***********************************************************

 

本文在实现过程中,为了方便起见,参照VC 知识库《轻松实现类VC界面》。

一、实现原理
图中右侧浮动窗口的实现类是从CControlBar派生出来的,我们并不需要从头到尾实现该类,因为Cristi Posea先生已经为我们实现了一个称为CSizingControlBar的类,而且做得相当完美!我们所要做的便是好好地利用该类,为了尽可能地简洁,将CSizingControlBar类修改了一下并命名为CCoolBar,接下来我们将详细介绍如何利用该类实现我们所需的界面。

二、实现步骤示例
[1]前期准备
已知一个单文档的MFC工程TESS,其它选项默认。
将本文示例代码中的CSizingControlBar类源文件sizecbar.h sizecbar.cpp 和CCoolBar类源文件scbarg.h scbarg.cpp 四个文件复制到工程目录下。
在菜单Project->Add to project->Files将四个文件加入工程中,此时在ClassView中将出现了一个称为CCoolBar的类。
在stdafx.h文件中加上
#include "sizecbar.h"
#include "scbarg.h"

[2]开始编码

2.1 为CMainFrame增加成员变量    //浮动窗口对象

CCoolBar    m_wndMyBar;

以下代码需要添加到CMainFrame::OnCreate,方法与普通工具条的创建没有太大的区别!

2.2 创建ControlBar

//创建浮动窗口—日志栏if(!m_wndMyBar.Create(_T("日志栏"),        //浮动窗口名称this,               //父指针CSize(300,200),     //窗口大小TRUE,                //是否需要gripper224))                //窗口ID       {              TRACE0("未能创建日志栏!\n");                    return -1;       }

2.3 停靠控制   //设置ControlBar风格,必须在工具栏风格设置之后

//浮动窗口—日志栏风格

m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle()|  CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndMyBar,

AFX_IDW_DOCKBAR_RIGHT);//停靠在右边

此时我们已经生成了一个控制条窗口,但窗口中还没有任何东西!让我们来做最后一件事情:往窗口添加所需部件!

2.4 向浮动窗口中添加我的控件

这个问题看似有些麻烦其实相当简单:我们只要在创建这些控件时将控制条窗口指针作为父窗口指针赋值给这些控件即可!

[1]将属性页放入右边的控制条
本文的示例代码中提供了一个称为CCoolTabCtrl的封装类,属性页的封装类,我们用它可以简单地创建出TabCtrl,先请看如下代码

(1)在CMainFrame头文件中声明成员变量:

CCoolTabCtrl         m_TabCtrl;

(2)在CMainFrame::OnCreate方法中,在浮动窗口创建代码之后,添加属性页创建代码:

m_TabCtrl.Create(

TCS_DOWN|WS_CHILD|WS_VISIBLE,         //属性页风格

CRect(0,0,250,200),                          //属性页大小

&m_wndMyBar,2046);                        //父窗口指针及ID

[2] 向属性页中添加对话框

首先在资源编辑器里制作一个CHILD类型的无BORDER对话框,ID为IDD_LOG,

并以此为模板生成CSysLog类。需要注意的是,希望添加到属性页m_TabCtrl中的对话框,在其类定义和实现文件中必须分别加上DECLARE_DYNCREATE(CSysLog)和IMPLENMENT_DYNCREATE(CSysLog,CDialog)。

然后在CMainFrame::OnCreate方法中m_TabCtrl 创建代码之后,添加:

m_TabCtrl.AddPage(

RUNTIME_CLASS(CSysLog),            //对话框映射的运行时类

IDD_LOG,                      //对话框ID

"日志",                     //添加对话框页的页名

IDI_TEXT);                 //添加对话框页的图标

[3]最后,更新属性页面

m_TabCtrl.UpdateWindow();

转载于:https://www.cnblogs.com/kangwang1988/archive/2010/06/12/1757198.html

动窗口的制作暨CSizingControlBar类的使用说明相关推荐

  1. tmux/screen里面如何用鼠标滚轮来卷动窗口内容

    tmux里面用鼠标滚轮来卷动窗口内容 在 tmux里面,因为每个窗口(tmux window)的历史内容已经被tmux接管了,所以原来console/terminal提供的Shift+PgUp/PgD ...

  2. java类只读怎么办_如何在Java中制作一个只读类?

    java类只读怎么办 The question is that "can we make a read-only class in Java?" 问题是"我们可以用Jav ...

  3. 企业想要制作电商类App软件

    移动互联网时代,App的制作开发对我们生活的影响越来越大.对于传统企业而言,通过手机App制作不仅能够在移动互联网中获得市场份额,还能为企业培养忠实用户.对于创业者而言,制作一款好的移动App软件不仅 ...

  4. git动图快速制作方法

    gif动图快速制作方法(附工具) 现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支 ...

  5. C++:Leetcode-滑动窗口-904.水果成篮

    C++:Leetcode-滑动窗口-904水果成篮 重点掌握滑动窗口思想,左指针和右指针分别代表的含义 重点掌握熟悉利用哈希表进行统计和查重. 面对这种同类型数量统计问题或者是查重问题,哈希表是不二之 ...

  6. gif动图怎么制作?手机怎么制作动态图

    gif动图怎么制作?手机怎么制作动态图?相信很多朋友都会遇到这样的问题,平时看到许多有趣的gif动图,有的斗图表情包,有的文章配图,都想做一做,但是苦于不知道怎么做,下面我就给大家介绍一种gif制作方 ...

  7. 怎么让照片里的人嘴巴动起来_让嘴巴动起来的制作方法

    让嘴巴动起来的制作方法 如火骄阳搜集编辑 作前准备:准备一张规格为450*400人物图片,经过制图软件(ps.fw)处理后保存到指定的文件夹待用. 制作步骤 1.启动FLASH8 软件. 2.确立文档 ...

  8. 网上经常看到的冒泡排序的动图如何制作

    今天博主想要和大家分享如何实现动态图,经常在其他博主的文章中可以看到各式各样的动图,搜索一下"网上冒泡排序的动图怎么制作出来"可以看到,很迷,全是告诉冒泡排序的原理,以及动图解析, ...

  9. gif动图怎么制作?怎么把视频做成gif?

    gif动图怎么制作?怎么把视频做成gif呢?我们经常可以看到很多有趣的动态图片,那这些动图gif是怎么做的呢?下面我就给大家介绍一下如果把一段视频做成gif. 首先我们这里需要的是用视频制作成gif, ...

最新文章

  1. python 16进制转10进制, 8进制转10进制, 2进制转10进制的方法
  2. python绘图添加上下标
  3. IOS开发之手写约束
  4. 有勇气的牛排---算法与数据
  5. 阿里P7架构师谈职业生涯规划,给遇到瓶颈,迷茫期的人群一些建议
  6. 硬盘安装以及磁盘分区和检测(笔记本R7000)
  7. java 并发执行_Java并发执行器的懒惰开发人员简介
  8. shell 中 $(( )) 与 $( ) 还有 ${ } 的区别
  9. npm使用taobao镜像
  10. java网络编程udp数据报_java 网络编程(二)----UDP基础级的示例
  11. 十 全局结果页面的配置
  12. Confluence 6 SQL 异常的问题解决
  13. .NetCore 利用反射处理RESTful的更新自动赋值
  14. 625某电商网站数据库宕机故障解决实录(上)
  15. Kettle parameter方式实现循环
  16. 无线网络安全技术基础
  17. android 图片识别文字,安卓手机如何识别图片中的文字?一个方法轻松解决难题...
  18. matlab textscan读结构化.txt文件
  19. 迅雷离线下载脚本 — LinuxTOY
  20. 浏览器利用框架BeEF测试

热门文章

  1. centos7怎么重置mysql密码_centOS7.4 重置mysql 密码
  2. mysql统计各部门人数_2019年内蒙古普通高校招生考试各分数段人数统计表公布
  3. 记录spark-yarn模式下提交自己写的java程序
  4. java-List集合的源码分析(数据结构方面,源码注释方面),迭代器快速失败机制
  5. javaweb利用servlet与struts2实现可点击刷新的基础图片验证码
  6. redis 缓存击穿 看一篇成高手系列 三
  7. 京瓷6525_京瓷6525扫描怎么设置?
  8. 使用多线程会加快文件读取速度吗?
  9. C 中 static 的常见作用
  10. [Jarvis OJ - PWN]——[XMAN]level4