QQ登录

只需一步,快速开始

26上位机VC MFC实现窗口融合嵌入到另一窗口效果

[ 复制链接 ]

26上位机VC MFC实现窗口融合嵌入到另一窗口效果

26上位机VC MFC实现窗口融合嵌入到另一窗口效果

26上位机VC MFC实现窗口融合嵌入到另一窗口效果

功能展示
不管是在我们VC软件,还是在PLC编程软件触摸屏编程软件,都有一相可拖动和嵌入的工作区窗口,软件有了这一功能,非常方便用户的操作。我们当前例程就来实现这一功能,效果如上图

要点提示
在文档结构的程序中,默认情况下,用户可以将工具栏拖动到任意位置。如果要将对话框拖动到任意位置,就要从控制条CControlBar派生一个子类,本例为CDockBarCtrl.在CDockBarCtrlK 实现 某个对话框的显示,并实现 控制条的手动功能;
实现对话框的显示非常容易,只要在CDockBarCtrl类定义一个对话框 指针,然后在CDockBarCtrl类的Create()方法中创建对话框,并设置对话框的位置就可以了
要实现控制条的拖动,最核心的问题是设置控制条的位置和大小,即根据当前拖动的状况,适当设置控制条的位置和大小。在CDockBarCtrl类中提供 了两个虚拟方法CalcDynamicLayout和CalcFixedLayout来计算控制条的大小。在CalcDynamicLayout方法中只是直接调用了CalcDynamicLayout方法,面CalcFixedLayout只是简单地设置控制条的大小 。并没有根据实际情况进行计算。因为CDockBarCtrl是一个抽象类, CalcFixedLayout方法只是进行了默认的调整。有关CDockBarCtrl类对CalcDynamicLayout和CalcFixedLayout方法的改写可以参考实现的过程

在控制条CDockBarCtrl中还应该包含一个标题栏,用于显示还原按钮,关闭按钮和两条力,可以通过处理控制条的WM_NCCALCSIZE消息来设置标题栏的区域。要注意的是标题栏不是一层不变,当控制条在上下械右依靠,标题栏的区域都 是不同,因此要在WM_NCCALCSIZE消息处理函数中针对 不同情况进行设置

实现功能
1.新建一个单文档的应用程序
2.插入一个时钟背景用位图
3.建立一个对话框资源,并关联与新建一个对话框类;
4.载入CDockBarCtrl类的DockBarCtrl.cpp与DockBarCtrl.h文件,在CMAINFRAM类中建立CDockBarCtrl m_DockBar变量和刚才新的对话框变量CTool m_ToolDlg; 注意头文件的添加
5.在CMAINFRAM类中OnCreate()函数中初始化
  1. m_DockBar.Create(this,&m_ToolDlg,IDD_DIALOG1);
  2.         m_DockBar.SetBarStyle(m_DockBar.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC);
  3.         m_DockBar.EnableDocking(CBRS_ALIGN_ANY);
  4.         DockControlBar(&m_DockBar);
复制代码

        
6.这样便快速实现的窗口嵌入窗口的效果,当然你会发现对话框窗口怎么会单独可移动,不想要这种效果,可以对对话框资源的属性进行设置:1样式下层,2边框,无。3扩展样式工具窗口,客户边缘

下面演示融合嵌入功能实现过程

源码及视频下载
(仅在电脑可见)
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:26.上位机VC MFC实现窗口融合嵌入到另一窗口效果.rar 
文件大小:351.67 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!



回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索