码迷,mamicode.com
首页 > 编程语言 > 详细

MFC 工具栏隐藏与显示

时间:2014-11-28 14:10:56      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   os   sp   on   2014   问题   log   

      最近在学MFC,看的是孙鑫的VC++视频,感觉还不错。在看到第九节课的时候,讲到工具栏的时候,做了个小功能:工具栏的隐藏和显示,但是有个bug就是一个悬浮的工具栏隐藏后再显示,就会变成停靠状态。这里我又把工具栏的隐藏与显示又实现了一遍,去掉了这个bug,做到跟MFC中自带的菜单栏中视图->工具栏菜单项一样的功能。

      其实,关于工具栏的隐藏与显示问题,只需要考虑三种状态:(1)在停靠状态下工具栏的显示与隐藏;(2)在悬浮状态下工具栏的显示与隐藏;(3)在悬浮状态下,通过点击关闭按钮去关闭工具栏,然后在显示工具栏的问题。

      对于上面所述的第二种情况,要记住工具栏在将要隐藏时刻的窗口坐标(x,y),这一点可以在点击菜单项去隐藏工具栏的时候可以做到。同样对于第三种情况,要记住工具栏在关闭时刻的坐标位置,在这里我们可以自己创建一个类CMyToolbar,这个类继承于CToolbar,在这个类里面添加WM_WINDOWPOSCHANGED消息处理函数OnWindowPosChanged。这个消息每当工具栏的大小或者位置发生变化是就会触发,因此我们在每次触发这个消息的时候,在其处理函数里面先判读是否为悬浮状态,如果是再获取当前窗口的位置,然后保存起来。

     好了,上面说了那么多现在开始上代码。首先先看一下在CMainFrame.h中要添加的变量成员。

     bubuko.com,布布扣

   然后在CMainFrame.cpp中添加工具栏菜单项的相应函数,具体代码如下:

 bubuko.com,布布扣

      最后我们要创建一个CMyToolbar的类,继承于CToolbar类,其中CMyToolbar.h添加代码如下:

 bubuko.com,布布扣

    然后在CMyToolbar中实现OnWindowPosChanged函数

bubuko.com,布布扣

到此,代码部分全部结束。运行结果演示:

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

MFC 工具栏隐藏与显示

标签:blog   http   ar   os   sp   on   2014   问题   log   

原文地址:http://www.cnblogs.com/Simon-Sun1988/p/4128216.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!