Часто задаваемые вопросы и ответы по C/C++/Visual C++
Последнее обновление: 27.08.2003
FAQ по C/C++/Visual C++
Работа с сетью
Внедрении элемента ComboBox в ToolBar (MFC)
Составители: SUnteXx, Leprecon
Внедрении элемента ComboBox в ToolBar (MFC)
A: (cyberSpice)
Оригинальная ссылка: нету

////////////////////////////////////////////////////////////////////////
//  Добавление контрола ComboBox в ToolBar
//  Автор статьи: cyberSpice.
//  e-mail: alex@shuya.ipn.ru
//  www: http://shuya.ipn.ru/~cyberSpice
////////////////////////////////////////////////////////////////////////

//=====================================================================
// 1. Добавляем переменную-член в объявление класса:
   ...
   public:
       CComboBox m_wndCombo;
   ...
//=====================================================================
// 2. В редакторе ресурсов на контрол ToolBar наносим новую кнопку и
//    и устанавливаем ее ID в ID_BTN_FREEPLACE. Рисоват на ней ничего
//    не надо., т.к. мы будем ее использовать как место по контрол.

//=====================================================================
// 3. Добавляем в следущий код в OnCreate(LPCREATESTRUCT lpCreateStruct):

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    ...

    int  index = 0;
    CRect rc;

    // Определяем позицию нашей кнопки-позиции на ToolBar'е.
    while (m_wndToolBar.GetItemID(index) != ID_BTN_FREEPLACE)
       index++;

    // Делаем нашу кнопку разделителем и устанавливаем ширину в 120.
    m_wndToolBar.SetButtonInfo(index, ID_BTN_FREEPLACE, TBBS_SEPARATOR, 120);
    // Получаем размеры этого, теперь уже, разделителя.
    m_wndToolBar.GetItemRect(index, &rc);

    // Корректируем размеры в расчете на будущий контрол ComboBox.
    rc.top += 2;
    rc.bottom += 200;

    // Создаем желаемый контрол на ToolBar'е
    DWORD dwStyle = WS_VISIBLE | WS_CHILD | CBS_AUTOHSCROLL |
                    CBS_DROPDOWNLIST | CBS_HASSTRINGS;
    if (!m_wndCombo.Create(dwStyle, rc, &m_wndToolBar, 1011))
    {
        TRACE0("Failed to create combo-box\n");
        return FALSE;
    }

    // Добавляем элементы данных в наш контрол.
    m_wndCombo.AddString("cyberSpice");
    m_wndCombo.AddString("Ozzy Osbourne");

    // Делаем первый элемент выбранным.
    m_wndCombo.SetCurSel(0);
}

Содержание Обсудить на форуме « Предыдущая статья | Нет статьи »
Перейти к FAQ:  
FAQ составлен по материалам Форума на Исходниках.Ру.
Copyright © 2002 by Sources.ru. All rights reserved.