////////////////////////////////////////////////////////////////////////
// Добавление контрола 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);
}
|