仿真程序框架中进度条(Slider)创建总结

文章介绍了在MFC程序中,如何根据新的需求将进度条控件从状态栏移出,改为可拖动控制仿真进度。作者尝试了三种方案:状态栏中的进度条、自定义工具栏和CDockablePane。最终,通过CDockablePane成功实现了一个独立的进度控制条,可以拖动控制仿真进度,同时不影响其他功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在收到需求之前,程序的进度显示方案是在状态栏中建立一个进度条控件。该进度条只具有显示仿真进度的功能。

 

新的需求要求进度条控件能够拖动以控制仿真进度。

根据新的需求,制定更改方案1

方案1

在进度条控件建立的类(CMainFrame)框架类中添加滑块拖动的消息相应函数(OnHScroll函数),加入函数后发现滑块拖动后,函数并没有响应。原因在于该进度条控件(m_slider)是在状态栏m_wndMenuBar上建立的,也就是m_slider的父窗口。

// 创建滑动条控制 控件

         m_slider.Create(WS_VISIBLE | TBS_AUTOTICKS | TBS_ENABLESELRANGE  ,CRect(450,2,650,23), &m_wndMenuBar, ID_SliderControl);

         m_slider.SetRange(0,500);

所以m_slider控件拖动事件发生后,拖动消息应该由状态栏相应,而不是框架类。但是程序中并没有状态栏类,无法对该事件进行响应。而且进度条控件放置在状态栏中确实看上去不合适,也不专业。

方案1行不通,在网上看到一篇文章《在VC++工具栏中添加Slider控件实现视图实时缩放》,觉得这个思路可以。所以指定方案2

方案2

从面向对象的思想出发,以一个工具条(toolbar)作为一个整体,封装一个类,进度条控件作为这个类的一个成员变量。在框架类中对封装的类进行实例化,进而实现进度条的功能。该方案貌似可以。

开干,因为在原程序框架中,原生的工具栏类是CMFCToolBar类,所以我们可以从该类派生出一个新类CMyToolBar。

生成新类过程如下:

       (1) 首先在设计窗口中新建一个工具栏(IDR_TOOLBAR1),并在工具栏中新建一个按钮(ID_Slider_ToolBar)。

        (2) 打开类向导

        (3) 利用类向导添加以CMFCToolBar类为基类的CMyToolBar

单击完成后,会生成两个文件MyToolBar.cpp和MyToolBar.h文件。

        (4) 在MainFrm.h文件中添加新类的引用,并新建CMyToolBar类的对象

         (5) 在MyToolBar.h中新建CSliderCtrl变量用来实现进度条控件的建立

CSliderCtrl &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值