增加状态栏按钮及其它
2008-01-19 20:25:10 来源:WEB开发网这可能是一个比较简单的问题,我想知道如何在某个应用程序的状态栏添加按钮,就像 Windows 快速启动栏里的按钮那样?
Guru India
我怎样才能在应用程序的状态栏上增加一个按钮或是一个编辑控件(带有上下键的),就象你在 1997 年 MSJ C++ Q&A 专栏中做的 VIRGIL 那样?
Jef Pavlat
状态栏是基于 Windows 通用控件 msctls_statusbar32,这个通用控件并不提供任何方法来添加子窗口。这是不是意味着我们就没有办法解决上面提出的问题呢?当然不!在 Windows 中,在 某些控件或是窗口中添加子窗口并不是将它们作为这些控件的子窗口,而是作为这些控件的兄弟窗口。在现在这种情况下,你有两个选择:一是建立一个“超级状态栏“,它包含一个普通状态栏 以及其它控件子窗口(就像 Windows 结合列表框和编辑框而合成的组合框一样);第二、你也可以直接将按钮或是其它控件直接加在主框架上,就像是状态栏,工具栏 或视图的兄弟窗口一样。
至于决定使用那种方法取决于你的设计有多复杂以及你的规划。如果你想加很多的控件, 和/或在其它的窗口或应用程序中重用组合的状态栏/按钮/编辑控制的话,那么最好建立一个复合控件。如果仅仅是想 在某个窗口中添加单个按钮,那么最好是将它添加到主框架。无论你使用哪种方法,你都需要写一点代码来定位你的控件,使 之与其它相邻的控件在合适的位置上。
我写了一个小的示例程序,StatBarButn(见 Figure 2)。
Figure 2 状态栏按钮
所有的动作都发生在 CMainFrame 中,参见 Figure 3。CMainFrame 有一个数据成员来 代表按钮(参见 Figure 4)。这些代码被压缩状态栏, 用按钮填充被压缩出的空间。由于我们将按钮的 ID 设置成为 ID_APP_ABOUT,与 HELP 菜单中的 About (Help | About)菜单命令相同,所以在连接按钮到其命令处理函数时不用做任何事。自然,如果你想使用其它命令,你 就必须为它设置一个 ID 并使用它。
更多精彩
赞助商链接