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

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

2002/11/25

              使用过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

       第六步:在CMainFrmOnCreate函数最后(当然是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-box/n");

       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 StowellCFlatComboBox。示例程序已经包含这个类进来了。用ProjectàAdd to ProjectàFile…将FlatComboBox.hFlatComboBox.Cpp文件添加进工程中。然后到MainToolBar.h中将CFlatComboBox类包含进来,当然是用#include "FlatComboBox.h"。最后用CFlatComboBox类代替CComboBox  类。

重新编译,运行一遍看看,是不是平面了?J

 

问题三:如何处理消息

    是啊,到现在为至。这控件只能看,不能用,有什么意义呢。所以我们还得处理他的消息,让他有活可干。我们不能指望着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);   //弹出选择的内容

}

小功告成,然后又是编译、运行。看看界面,确实是平面的、有控件的工具条。

 

作者注:很久没写作文了,这是我出社会后写的第一篇作文,写的不好请多多包涵!J

我的Email是lijf971@21cn.com 有什么好东西希望能发个给我J

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ABAP 中,可以通过使用 CL_SALV_TABLE 类来创建 ALV 报表。要在 ALV 工具栏添加按钮,可以使用以下步骤: 1. 首先,在程序中创建一个实例化的 CL_SALV_TABLE 对象,并为其设置数据源和显示选项。 2. 然后,使用方法 GET_FUNCTIONS 获取 CL_SALV_FUNCTIONS 对象的实例。这个对象可以用来添加自定义功能到 ALV 工具栏。 3. 使用方法 SET_TOOLBAR_DISPLAY_MODE 设置工具栏显示模式。通常,可以将其设置为 SHOW_WITH_MENU,以便在工具栏显示下拉菜单。 4. 使用方法 ADD_FUNCTION 添加一个新的功能按钮。在这个方法中,可以指定按钮的图标、tooltip 文本、处理逻辑等等。 以下是一个简单的示例代码,演示如何在 ALV 工具栏添加一个自定义按钮: ``` DATA: lo_alv TYPE REF TO cl_salv_table, lo_functions TYPE REF TO cl_salv_functions. * 创建 ALV 对象并设置数据源 CREATE OBJECT lo_alv EXPORTING list_display = abap_true. lo_alv->set_data( itab ). * 获取工具栏函数对象 lo_functions = lo_alv->get_functions( ). * 设置工具栏显示模式 lo_functions->set_toolbar_display_mode( cl_salv_functions=>c_toolbar_display_mode-show_with_menu ). * 添加自定义按钮 lo_functions->add_function( text = 'My Button' icon = icon_mybutton tooltip = 'Click to do something' function = 'MY_BUTTON_CLICK' ). * 处理函数逻辑 FORM my_button_click. " 在这里处理按钮点击事件的逻辑 ENDFORM. ``` 在这个示例代码中,图标 `icon_mybutton` 和函数 `MY_BUTTON_CLICK` 都需要自己定义。你可以使用 SAP 提供的标准图标,也可以创建自己的图标。函数 `MY_BUTTON_CLICK` 是一个自定义函数,它将在用户点击按钮时被调用,你可以在这个函数中执行任何你需要的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值