mfc工具栏的添加

 

   先找到自己想要的Ico图标,并将这些图标依次加到程序资源中,声明一个CToolBar m_wndToolBar工具栏变量和
   CImageList img变量;
   在程序中创建工具栏如下,其中各项参数可以参考MSDN:
    if(m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC )
    ||m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
    {
    TRACE0(_T("创建工具条失败\n"));
    }
    m_wndToolBar.GetToolBarCtrl().SetButtonWidth(43, 70);

    在ImageList中加上自己想要的图标,可以设置图标使鼠标指上去时和没指上去时的图标各异,大小不同.
    比如我们用此可以把同一图标做成灰色和彩色,就可以得到想Windows工具栏那样的效果.
    以下这是鼠标指上去时图标的显示效果:
    Img.Create(22, 22, ILC_COLOR8|ILC_MASK,2,2);
    Img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
    img.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
    img.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
    img.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
    img.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
    m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
    img.Detach();

    以下这是鼠标没指上去时图标的显示效果:
    img.Create(19, 19, ILC_COLOR8|ILC_MASK,8,8);
    img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
    img.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
    img.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
    img.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
    img.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
    m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
    img.Detach();

    以下是在工具栏按钮上添加文字和设置分隔条:
    m_wndToolBar.ModifyStyle(0,TBSTYLE_FLAT|CBRS_TOOLTIPS|TBBS_CHECKBOX );
    m_wndToolBar.SetButtons(NULL,6);
    m_wndToolBar.SetButtonInfo(0, ID_FILE_NEW, TBSTYLE_BUTTON, 0);
    m_wndToolBar.SetButtonText(0, "打开窗体");
    m_wndToolBar.SetButtonInfo(1, IDC_MSG_BUTTONSPLI, TBBS_SEPARATOR, 0);
    m_wndToolBar.SetButtonInfo(2, ID_FILE_PRINT, TBSTYLE_BUTTON, 1);
    m_wndToolBar.SetButtonText(2, "打印");
    m_wndToolBar.SetButtonInfo(3, ID_PRINT_VIEW, TBSTYLE_BUTTON, 2);
    m_wndToolBar.SetButtonText(3, "打印预览");
    m_wndToolBar.SetButtonInfo(4, IDC_MSG_BUTTONSPLI2, TBBS_SEPARATOR, 0);
    m_wndToolBar.SetButtonInfo(5, ID_APP_EXIT, TBSTYLE_BUTTON,3);
    m_wndToolBar.SetButtonText(5, "退出");

    得到按钮的大小,设置按钮的大小
    CRect rectToolBar;
    m_wndToolBar.GetItemRect(0, &rectToolBar);
   m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(20,20));

   以下代码让工具栏显示在对话框中:
   RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);在对话框中添加工具栏浮动提示用以下函数实现 ,IDC_STRING1为字符串资源先在资源窗口中设置要显示的字符串:
    BOOL CMainDlg::NotifyFunction( UINT id, NMHDR * pTTTStruct, LRESULT * pResult )
    {
    pResult = NULL ; // Not Used
    id = 0 ; // Not used
    TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pTTTStruct;
    UINT nID = pTTTStruct->idFrom;
    switch ( nID)
    {
    case ID_FILE_NEW:
    pTTT->lpszText = MAKEINTRESOURCE((LPCSTR)(IDC_STRING1));
    break ;
    case ID_FILE_PRINT:
    pTTT->lpszText = MAKEINTRESOURCE((LPCSTR)(IDC_STRING2));
    break ;
    case ID_PRINT_VIEW:
    pTTT->lpszText = MAKEINTRESOURCE((LPCSTR)(IDC_STRING3));
    break ;
   case ID_APP_EXIT:
    pTTT->lpszText = MAKEINTRESOURCE((LPCSTR)(IDC_STRING4));
    break ;
    }
    return(TRUE);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值