• 网站刚刚上线,难免有不足的地方,敬请谅解!欢迎提出宝贵意见!

  •    3年前 (2015-07-23)  windows开发 专业技术 |   7 条评论  1185 
    文章评分 5 次,平均分 4.8

    【Windows编程】系列第六篇:创建Toolbar与Statusbar

    上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮。比如典型的windows应用程序的上面是菜单栏,从菜单栏我们可以选择应用程序提供的各种功能,但是有的功能比较常用,且不能放在第一级菜单,需要进入二级、三级甚至更多的菜单才能选择。显然这样使用起来比较麻烦,于是这时候工具栏的作用就体现出来了,一般工具栏位于菜单栏的下面,但是位于客户窗口的上面。下面就是windows的文本编辑器的工具栏:

    【Windows编程】系列第六篇:创建Toolbar与Statusbar

    Statusbar主要用于显示应用程序的运行状态,统计信息,操作信息等提示作用,一般是只读状态。典型的状态栏放在窗口的最下面,比如下面就是我正在使用的Word应用程序的状态栏:

    【Windows编程】系列第六篇:创建Toolbar与Statusbar

    我们这次要一起学习的就是使用纯Windows API函数创建基本的状态栏和菜单栏。如果属性MFC的朋友知道,如果用MFC来做工具栏和菜单栏很简单。但是使用纯API就麻烦一些了,当然带来的感觉是不一样的,比如要动态创建,使用MFC的资源编辑器就无能为力,但是对于我们今天要使用的API创建方式来说,就显示出他的强大了。

    首先,前面我们在讲解Windows常用控件的创建时就知道,所有带窗口的控件创建实际上都是调用Windows提供的CreateWindow或者CreateWindowEx(以下以CreateWindowEx为例)这两个函数,当然今天的菜单栏和状态栏一样需要这两个函数来创建。由于工具栏和状态栏都是Windows的通用控件组中的控件,有默认的类名。创建工具栏时,类名为TOOLBARCLASSNAME,创建状态栏时,类名为STATUSCLASSNAME,这两个宏定义在commctrl.h文件中根据是否使用UNICODE编码分别是“ToolbarWindow32”和“msctls_statusbar32”的宽字符版本和ANSI版本。

    • 创建工具栏

    除了使用CreateWindowEx创建好工具栏后,作为一个更好看一点,我们还可以给工具栏加上图标以及功能提示。为了加图标,最方便的方法是使用一些列图像列表API来加载和管理工具栏的图片。ImageList_Create可以创建一个图片列表,它的原型为:

     

    该函数用法在MSDN上说的比较清楚。这个列表创建后并没有图片,只是一个列表管理的容器,还需要加载图片集。加入图片所需API如下:

     

    图片加载后,还可以设置图片的显示属性,包括显示图片、文本以及信息提示功能。工具按钮的响应是通过向窗口处理程序发送WM_COMMAND消息实现的,有用户处理按钮事件。工具栏的提示信息是通过WM_NOTIFY消息,由用户设置,工具栏的创建实例请参看后面的应用实例。

    • 创建状态栏

    装具状态栏相比工具栏要简单很多,用CreateWindowEx建立状态栏后,默认情况下,状态栏只有一个显示面板(panel),要创建多个面板,只要向状态栏把配置好个面板的长度发送SB_SETPARTS消息即可,消息参数分别是面板个数和个面板的终点数组。比如:

     

    表示将状态栏面板分为3各部分,第一部分到120像素为止,第二部分到240像素为止,剩下的(-1)全部分到第三部分中。

    设置面板文本内容,可以给状态栏发送SB_SETTEXT消息;要在状态栏面板中增加小图标,可以给状态发送SB_SETICON消息。

    上面的工具栏和状态栏只是介绍了最基本的情况,更多的设置和消息处理都可以参考MSDN。本系列专注在基本编程和使用上,只是介绍常见的用法,不过这些用法也够初学者编程使用。

    • 使用实例

    下面我们通过一个基本的实例程序说明如何采用纯Windows API创建、使用工具栏和状态栏。程序中创建的Toolbar有三个图标,当程序正常显示,鼠标在某个工具栏按钮上移动,或者处于Disable状态是,会有不同的图片显示,读者可以自己更换其他自己喜欢的图标。

    该实例程序后,结果显示如下图:

    【Windows编程】系列第六篇:创建Toolbar与Statusbar

    该程序的工具栏按下“打开”按钮后,自己后变成Disable状态,点击“保存”后,“打开”按钮会再次激活。可以看到,在鼠标移到“保存”按钮上时,出现提示“保存为文件”的文本提示。

    状态栏一共有三个面板,后面两个在创建时静态赋字符串,第一个则实时捕获鼠标在客户区中的坐标位置并显示出来。

    总体来说工具栏和状态栏的基本用法还是比较简单,只是由于这两个控件属于微软的通用控件,创建之前需要调用InitCommonControlsEx初始化通用控件库并设置需要使用的控件。本篇就写到这里,感兴趣的读者请继续关注Windows编程基础系列的后续文章。

    更多经验交流可以加入Windows编程讨论QQ群454398517

     

    关注微信公众平台:程序员互动联盟(coder_online),你可以第一时间获取原创技术文章,和(java/C/C++/Android/Windows/Linux)技术大牛做朋友,在线交流编程经验,获取编程基础知识,解决编程问题。程序员互动联盟,开发人员自己的家。

    【Windows编程】系列第六篇:创建Toolbar与Statusbar

    转载请注明出处http://www.coderonline.net/?p=1157,谢谢合作!

     

    本文原始地址:http://www.coderonline.net/programming-windows-series-the-sixth-article-create-a-toolbar-and-statusbar.html

    本站所有文章,除特别注明外,均为本站原创,转载请注明出处来自http://www.coderonline.net/

    否则保留追究法律责任的权利!

    关于

    发表评论

    表情 格式
    1. Hello my name is Patricia and I just wanted to send you a quick message here instead of calling you. I came to your 【Windows编程】系列第六篇:创建Toolbar与Statusbar – 程序员互动联盟 website and noticed you could have a lot more hits. I have found that the key to running a successful website is making sure the visitors you are getting are interested in your subject matter. There is a company that you can get keyword targeted traffic from and they let you try the service for free for 7 days. I managed to get over 300 targeted visitors to day to my site. http://misdivi.de/at

      Patricia 评论达人 LV.1 2年前 (2016-10-02) [0] [0]
    2. 受教了

      ghost045 评论达人 LV.5 3年前 (2015-07-25) [0] [0]
    3. 直接拿事例说事,良心之作

      麦子熟了 博 主 3年前 (2015-07-24) [0] [0]
    4. windows 出没,请注意

      angel 评论达人 LV.5 3年前 (2015-07-24) [0] [0]
    5. LZ大哥好专业 :smile:

      Michael 评论达人 LV.5 3年前 (2015-07-24) [0] [0]
    6. 可以拿来练练手,涨涨姿势。

      Coder 评论达人 LV.5 3年前 (2015-07-23) [0] [0]
    7. 难得,这个系列都坚持这么长时间了,点赞

      哈哈 评论达人 LV.2 3年前 (2015-07-23) [0] [0]
    切换注册

    登录

    忘记密码 ?

    切换登录

    注册