如何在工具栏上添加平面下拉控件

2016-01-29 12:02 15 1 收藏

如何在工具栏上添加平面下拉控件,如何在工具栏上添加平面下拉控件

【 tulaoshi.com - C语言心得技巧 】

如何在工具栏上添加平面下拉控件
作者:黎锦凡

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com) 下载本文示例代码

效果图如下:


使用过WordXP的人都知道,她的界面可谓是耳目一新。尤其是她的菜单和工具条可真是酷。网上也有很多很多的人都在模仿着她,包括很多的软件公司的产品。她的出现,使得软件界刮起了一陈XP界面时尚风。废话就不再多话了,言归正题,下面我就将实现的步骤一步步地告诉给你。
第一步:新建一个单文档项目
第二步:到资源编辑器中,新增一个工具项。里面没内容的,资源就命名为ID_TOOL_ZOOM吧。呵呵,新增一个工具项与我的下拉控件有什么关系呀?当然有关系,因为一会那个下拉控件就是在这个位置上显示出来的。
第三步:派生新类,从CToolBar派生,类名就叫CMainToolBar。怎样派生,我只提示你一下,菜单Insert->New Class…。在Class Type中选Generic Class,如果不选的话…你试试吧。
第四步:由于我们要有一个下拉框,所以呢得在CMainToolBar中声明一个CComboBox对象,声明如下:
public:CComboBox m_wndZoom; 
第五步:用新类代替旧类。替换之前,得将新类的声明文件包含进来,在MainFrm.h文件上,加上这句#include "MainToolBar.h"。然找到 CToolBar m_wndToolBar;用CMainToolBar 代替CToolBar。
第六步:在CMainFrm的OnCreate函数最后(当然是return 0之前了),添加下面的代码:
int index = 0;RECT rect;//找到指定的工具项while(m_wndToolBar.GetItemID(index)!=ID_TOOL_ZOOM)      index++;//设置指定工具项的宽度并获取新的区域  80是宽度m_wndToolBar.SetButtonInfo(index, ID_TOOL_ZOOM, TBBS_SEPARATOR, 80);m_wndToolBar.GetItemRect(index, &rect);//设置位置rect.top+=2;rect.bottom += 200;// 创建并显示控件if(!m_wndToolBar.m_wndZoom.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL| CBS_DROPDOWNLIST | CBS_HASSTRINGS , rect, &m_wndToolBar, ID_TOOL_ZOOM)){    TRACE0("Failed to create combo-boxn");       return FALSE;}m_wndToolBar.m_wndZoom.ShowWindow(SW_SHOW);//填充内容m_wndToolBar.m_wndZoom.AddString("25%");m_wndToolBar.m_wndZoom.AddString("50%");m_wndToolBar.m_wndZoom.AddString("75%");m_wndToolBar.m_wndZoom.AddString("100%");m_wndToolBar.m_wndZoom.AddString("125%");m_wndToolBar.m_wndZoom.AddString("150%");m_wndToolBar.m_wndZoom.AddString("175%");m_wndToolBar.m_wndZoom.AddString("200%");//选择默认项m_wndToolBar.m_wndZoom.SetCurSel(3);
添加好了,运行一遍看看。呵,真的可以。不过,还存在着三个问题还需解决,一:工具条不够高。二:下列框不是平面控件。三:如何处理消息。下面我在一一解决:
问题一:工具条不够高
解决特别容易,进入资源管理器,打开工具。随便找个工具项,设置其Height属性为20。这样工具条就增高了。

问题二:下列框不是平面控件 这个也容易解决,用别人的类就行了。我在这用的是Kirk Stowell的CFlatComboBox。示例程序已经包含这个类进来了。用ProjectàAdd to ProjectàFile…将FlatComboBox.h和FlatComboBox.Cpp文件添加进工程中。然后到MainToolBar.h中将CFlatComboBox类包含进来,当然是用#include "FlatComboBox.h"。最后用CFlatComboBox类代替CComboBox 类。 重新编译,运行一遍看看,是不是平面了?

问题三:如何处理消息 是啊,到现在为至。这控件只能看,不能用,有什么意义呢。所以我们还得处理他的消息,让他有活可干。我们不能指望着ClassWizard能帮上我们什么忙,因为ClassWizard上看不到这个消息,所以一切都得靠我们自己。 在CMainFrm类上,我们要在protected里添加afx_msg void OnSelectZoomed();函数。然后转到MainFrm.cpp文件上,找到BEGIN_MESSAGE_MAP,增加一句ON_CBN_SELENDOK(ID_TOOL_ZOOM, OnSelectZoomed)。然后呢,当然就是要实现它的处理函数了,处理函数如下:
void CMainFrame::OnSelectZoomed(){//获取到内容并MSGBOX显示出来    CString strContent;    m_wndToolBar.m_wndZoom.GetWindowText(strContent);    AfxMessageBox(strContent);   //弹出选择的内容}
小功告成,然后又是编译、运行。看看界面,确实是平面的、有控控件的工具条。
作者注:很久没写作文了,这是我出社会后写的第一篇作文,写的不好请多多包涵!
我的Email是lijf971@21cn.com 有什么好东西希望能发个给我

来源:http://www.tulaoshi.com/n/20160129/1484337.html

延伸阅读
动态真彩工具栏 作者:王健 下载本文配套源代码 源代码执行效果图如下: 与VCKBASE接触良久,从来都是贪婪的从中掘取好用的东东,却没想过把自己的东西拿出来与人共享,很不好意思。 自从我的RangerChat点对点聊天工具在VCKBASE上发表以来收到众多朋友的...
1.打开注册表编辑器,找到HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerToolbar   2.找到Toolbar中的Explorer子键,把二进制值ITBarLayout删除。然后关闭,重新打开IE看下问题是不是解决了。   3.没有解决的话,再打开注册表编辑器。再定位HKEY_CURRENT_USERSoftwareMicr...
标签: windows系统
Windows8系统如何设置任务栏中如何添加工具栏   1、右击任务栏点击工具栏,选项即可比如触摸键盘如或者添加自己想要的工具栏直接点击新建工具栏操作即可; 2、任务栏右下角显示触摸键盘。 Windows8系统如何进行系统配置   1、设置-控制面板-管理工具-系统配置; 2、这是引导界面; 3、这是高级选项...
标签: 电脑入门
工具栏怎么还原?或许你一不小心的操作就把工具栏隐藏了,或者工具栏遇到其他问题,那么应该怎么做才能把工具栏还原呢? 在任务栏右键 工具栏把快速启动栏语言栏去勾钩。 鼠标移到任务栏边缘出现上下移动的箭头然后下拉即可 然后在锁定把快速启动栏语言栏的钩打上。 还有一种情况就是任务栏损坏了,任务栏损坏的话有三种解决方法: 1)系统...
在任何 Office Professional 2007 程序中,一项最常执行的操作是设置文本格式。在早期版本的 Access 中,设置文本格式通常需要使用菜单或显示“设置格式”工 具栏。使用 Office Access 2007,可以使用微型工具栏更加轻松地设置文本格式。选择要设置格式的文本后,微型工具栏会自动出现在所选文本的上方。如果将鼠标指针靠近微型工具栏, 则...

经验教程

921

收藏

66
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部