zoukankan      html  css  js  c++  java
  • Visual C++ 控制栏

    3.1 如何创建工具栏

    1. CreateEx
    2. LoadToolBar
    //创建工具栏窗口
    if (!m_wndDemoToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | 
        WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | 
        CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
    {
        return -1;
    }
    
    //加载工具栏资源
    if (!m_wndDemoToolBar.LoadToolBar(IDR_TOOLBAR))
    {
        return -1;
    }
    

    3.2 如何设置工具栏的标题

    //设置工具栏标题
    CString strText = _T("");
    strText.LoadString(AFX_IDS_APP_TITLE);
    m_wndToolBar.SetWindowText(strText);
    

    image

    3.3 如何停靠工具栏

    1. EnableDocking
    2. DockBar
    //停靠工具栏
    m_wndDemoToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockBar(&m_wndToolBar, &m_wndDemoToolBar);
    

    3.4 如何设置工具栏的位图

    1. SetBitmap
    //设置位图
    m_Bitmap.LoadBitmap(IDB_TOOLBAR);
    m_wndDemoToolBar.SetBitmap((HBITMAP)m_Bitmap);
    

    3.5 如何为工具栏按钮添加文本标签

    SetButtonText方法

    for(int n = 0; n < 3; n++)
    { 
        //获得工具栏按钮ID
        UINT nID = m_wndToolBar.GetItemID(n);
    
        CString strText = _T("");
        if(!strText.LoadString(nID)) 
        {
            continue;
        }
        int nIndex = strText.Find(_T('\n'));
        if(nIndex < 0) 
        {
            continue;
        }
        strText = strText.Right(strText.GetLength() - nIndex - 1);
    
        //设置工具栏按钮文本
        m_wndToolBar.SetButtonText(n, strText); 
    }
    


    image

    3.6 如何为工具栏按钮添加下拉箭头

    1. CommandToIndex取得命令Index
    2. GetButtonStyle取得样式
    3. SetButtonStyle重新设置样式
    //设置工具栏按钮风格
    int nIndex = m_wndToolBar.CommandToIndex(ID_FILE_NEW);
    UINT nStyle = m_wndToolBar.GetButtonStyle(nIndex);
    nStyle |= TBSTYLE_DROPDOWN;
    m_wndToolBar.SetButtonStyle(nIndex, nStyle);
    

    3.7 如何为工具栏按钮设置热点图像

    就是鼠标移动到Toolbar时改变的图片

    //创建图像列表
    if(!m_ImageList.Create(IDB_TOOLBAR, 16, 0, RGB(128,128,128)))
    {
        return -1;
    }
    
    //设置工具栏图像列表
    m_wndToolBar.GetToolBarCtrl().SetHotImageList(&m_ImageList);
    

    3.8 如何启用或禁用工具栏的工具提示

    SetBarStyle方法,与或CBRS_TOOLTIPS

    void CMainFrame::OnEnableToolTips() 
    {
        //获得工具栏风格
        DWORD dwStyle = m_wndToolBar.GetBarStyle();
    
        //启用或禁用工具提示
        if (dwStyle & CBRS_TOOLTIPS) 
        {
            dwStyle &= ~CBRS_TOOLTIPS;
        }
        else
        {
            dwStyle |= CBRS_TOOLTIPS;
        }
     
        //设置工具栏风格
        m_wndToolBar.SetBarStyle(dwStyle);
    }
    
    void CMainFrame::OnUpdateEnableToolTips(CCmdUI* pCmdUI) 
    {
        //获得工具栏风格
        DWORD dwStyle = m_wndToolBar.GetBarStyle();
    
        if (dwStyle & CBRS_TOOLTIPS) 
        {
            pCmdUI->SetCheck(TRUE);
        }
        else
        {
            pCmdUI->SetCheck(FALSE);
        }
    }
    

    3.9 如何在工具栏中添加组合框

    1. SetButtonInfo创建一个空白区域
    2. GetItemRect获得空白区域大小和位置
    3. ComboBox的Create方法创建
    BOOL CMainFrame::CreateComboBox(UINT nID)
    {
        int nIndex = 0;
        CRect rect;
    
        //查找按钮
        while (m_wndToolBar.GetItemID(nIndex) != nID)
        {
            nIndex++;
        }
    
        //为组合框创建一个空白区域
        m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_SEPARATOR, 180);
    
        //获得空白区域大小和位置
        m_wndToolBar.GetItemRect(nIndex, &rect);
    
        //组合框大小和位置
        rect.top += 0;
        rect.bottom += 200;
    
        //在空白区域创建组合框
        if (!m_ComboBox.Create(WS_CHILD | WS_VISIBLE | CBS_AUTOHSCROLL | 
            CBS_DROPDOWNLIST | CBS_HASSTRINGS, rect, &m_wndToolBar, nID))
        {
            TRACE0("Failed to create combo-box\n");
            return FALSE;
        }
    
        //显示组合框
        m_ComboBox.ShowWindow(SW_SHOW);
    
        //在组合框中添加字符串
        m_ComboBox.AddString("500%");
        m_ComboBox.AddString("200%");
        m_ComboBox.AddString("150%");
        m_ComboBox.AddString("100%");
        m_ComboBox.AddString("75%");
        m_ComboBox.AddString("50%");
        m_ComboBox.AddString("25%");
        m_ComboBox.AddString("10%");
        m_ComboBox.SetCurSel(3);
    
        return TRUE;
    }
    

    3.10 如何创建状态栏

    CStatusBar的应用

    //创建状态栏窗口
    if (!m_wndDemoStatusBar.Create(this))
    {
        return -1;
    }
    
    //ID数组
    UINT IDArray[2];
    for (int n = 0; n < 2; n++)
    {
        IDArray[n] = 10000 + n;
    }
    
    //设置状态栏指示器
    m_wndDemoStatusBar.SetIndicators(IDArray, sizeof(IDArray) / sizeof(UINT));
    
    //设置窗格宽度
    m_wndDemoStatusBar.SetPaneInfo(0, IDArray[0], SBPS_NORMAL, 100);
    m_wndDemoStatusBar.SetPaneInfo(1, IDArray[1], SBPS_STRETCH, 0);
    
    //设置窗格文本
    m_wndDemoStatusBar.SetPaneText(0, _T("状态栏:"));
    m_wndDemoStatusBar.SetPaneText(1, _T(""));
    

    3.11 如何在状态栏中添加进度条

    字段m_Progress的设置

    //创建状态栏窗口
    if (!m_wndProgressStatusBar.Create(this))
    {
        return -1;
    }
    
    //ID数组
    UINT IDArray[2];
    for (int n = 0; n < 2; n++)
    {
        IDArray[n] = 10000 + n;
    }
    
    //设置状态栏指示器
    m_wndProgressStatusBar.SetIndicators(IDArray, sizeof(IDArray) / sizeof(UINT));
    
    //设置窗格宽度
    m_wndProgressStatusBar.SetPaneInfo(0, IDArray[0], SBPS_NORMAL, 200);
    m_wndProgressStatusBar.SetPaneInfo(1, IDArray[1], SBPS_STRETCH, 0);
    
    //设置窗格文本
    m_wndProgressStatusBar.SetPaneText(0, _T(""));
    m_wndProgressStatusBar.SetPaneText(1, _T(""));
    
    //设置进度条
    m_wndProgressStatusBar.m_Progress.SetRange(0, 100);
    m_wndProgressStatusBar.m_Progress.SetStep(10);
    m_wndProgressStatusBar.m_Progress.SetPos(50);
    

    3.12 如何显示或隐藏工具栏和状态栏

    ShowControlBar可以用在CStatusBar和CToolBar

    void CMainFrame::OnShowToolBar() 
    {
        if (m_wndToolBar.GetStyle() & WS_VISIBLE)
        {
            //隐藏工具栏
            ShowControlBar(&m_wndToolBar, FALSE, FALSE);
        }
        else
        {
            //显示工具栏
            ShowControlBar(&m_wndToolBar, TRUE, FALSE);
        }
    }
    

    3.13 如何使用组合栏

    1. AddBar
    //创建组合框
    if (!m_ComboBox.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | 
        CBS_DROPDOWN, CRect(0, 0, 100, 200), this, IDC_COMBOBOX))
    {
        return FALSE;
    }
    
    //创建按钮
    m_Button.Create(_T("确定"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
        CRect(0, 0, 50, 20), this, IDC_TEST);
    
    //创建Rebar
    if (!m_wndReBar.Create(this))
    {
        return -1;
    }
    
    //添加工具栏、组合框、按钮添加到Rebar中
    m_wndReBar.AddBar(&m_wndToolBar);
    m_wndReBar.AddBar(&m_ComboBox, NULL, NULL,  
        RBBS_NOGRIPPER | RBBS_BREAK);
    m_wndReBar.AddBar(&m_Button, NULL, NULL, RBBS_NOGRIPPER);
    
  • 相关阅读:
    HDU 5938 Four Operations 【贪心】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5935 Car 【模拟】 (2016年中国大学生程序设计竞赛(杭州))
    HDU 5934 Bomb 【图论缩点】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5933 ArcSoft's Office Rearrangement 【模拟】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5929 Basic Data Structure 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
    【转】LaTeX 符号命令大全
    HDU 5922 Minimum’s Revenge 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
    HDU 5927 Auxiliary Set 【DFS+树】(2016CCPC东北地区大学生程序设计竞赛)
    数据结构之稀疏矩阵
    C++中引用(&)的用法和应用实例
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2005845.html
Copyright © 2011-2022 走看看