Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Microsoft Visual C++ ΠΈ MFC. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Windows 95 ΠΈ Windows NT. Π§Π°ΡΡ‚ΡŒ 2Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 35

Автор АлСксандр Π€Ρ€ΠΎΠ»ΠΎΠ²

β€’ ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ слишком малСнький Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π΅Π³ΠΎ мСстС ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΡ€Π³Π°Π½ управлСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сначала ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ SetButtonInfo:

m_wndExtendedBar.SetButtonInfo(2, IDW_EDIT, TBBS_SEPARATOR, 130);

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ раздСлитСля, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ индСкс 2, Π΄ΠΎ 130 пиксСлов Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области раздСлитСля Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€:

CRect rectEdit;

m_wndExtendedBar.GetItemRect(2, &rectEdit);

ΠœΠ΅Ρ‚ΠΎΠ΄ GetItemRect записываСт Π² rectEdit ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ раздСлитСля. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΎΡ‚ сосСдних ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° rectEdit, дСлая отступ ΠΏΠΎ 6 пиксСлов с ΠΏΡ€Π°Π²ΠΎΠΉ ΠΈ с Π»Π΅Π²ΠΎΠΉ стороны:

rectEdit.left += 6;

rectEdit.right -= 6;

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области для тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° вычислСны ΠΈ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Create для тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° m_edit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, собствСнно, ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ управлСния:

if (!m_wndExtendedBar.m_edit.Create(WS_CHILD | ES_AUTOHSCROLL | WS_VISIBLE | WS_TABSTOP | WS_BORDER,   rectEdit, &m_wndExtendedBar, IDW_EDIT)) {

 // Ошибка ΠΏΡ€ΠΈ создании тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°

 TRACE0("Failed to create edit-box\n");

 return FALSE;

}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Π½Π° стили, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ создании тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. НаибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚ΠΈΠ»ΡŒ WS_CHILD, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ являСтся Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΡΡ‚ΠΈΠ»ΡŒ WS_CHILD ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ. Π’ этом случаС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ установлСн автоматичСски Π² процСссС создания тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

Π‘Ρ‚ΠΈΠ»ΡŒ ES_AUTOHSCROLL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ строки. Если строка Π½Π΅ помСщаСтся Π² ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, ΠΎΠ½Π° сдвигаСтся.

Π‘Ρ‚ΠΈΠ»ΡŒ WS_VISIBLE ΡƒΡΡ‚анавливаСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ появился Π½Π° экранС сразу послС создания. Если Π΅Π³ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‚ΠΎ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ останСтся Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ.

ΠœΡ‹ установили для тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΡΡ‚ΠΈΠ»ΡŒ WS_BORDER, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Ρ„ΠΎΠ½Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Π­Ρ‚ΠΎΡ‚ ΡΡ‚ΠΈΠ»ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²ΠΎΠΊΡ€ΡƒΠ³ тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Ρ‚ΠΎΠ½ΠΊΡƒΡŽ Ρ€Π°ΠΌΠΊΡƒ.

ПанСль управлСния Π½Π΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <Tab> для пСрСмСщСния фокуса Π²Π²ΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ. Однако Ссли Π²Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡ€Π³Π°Π½Ρ‹ управлСния, для Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ WS_TABSTOP. Π’ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ фокус Π²Π²ΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, наТимая ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <Tab>. ΠœΡ‹ установили ΡΡ‚ΠΈΠ»ΡŒ WS_TABSTOP для Π΄Π²ΡƒΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΎΠ² управлСния - тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ списка combo-box.

β€’ ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ список combo-box

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ появился Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΌΡ‹ повторяСм ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½Ρ‹Π΅ шаги ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ список combo-box.

Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ раздСлитСля ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 4 Π΄ΠΎ 150 пиксСлов:

m_wndExtendedBar.SetButtonInfo(4, IDW_COMBO, TBBS_SEPARATOR, 150);

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ этим Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ, ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π½Π° 6 пиксСлов с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ стороны:

CRect rectComboBox;

m_wndExtendedBar.GetItemRect(4, &rectComboBox);


rectComboBox.left += 6;

rectComboBox.right -= 6;

Бписок combo-box раскрываСтся Π²Π½ΠΈΠ·. ΠžΡ‚Π²ΠΎΠ΄ΠΈΠΌ для Π½Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 80 пиксСлов. Если Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для размСщСния списка combo-box, Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ смоТСтС Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ. Для этого просто Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ высоты ΠΏΠ°Π½Π΅Π»ΠΈ управлСния:

rectComboBox.bottom = rectComboBox.top + 80;

Для создания списка combo-box Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Create для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° m_combo_box. Он Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ список Π² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области rectComboBox:

if (!m_wndExtendedBar.m_combo_box.Create(CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_VSCROLL |   ES_AUTOHSCROLL | CBS_DISABLENOSCROLL, rectComboBox, &m_wndExtendedBar, IDW_COMBO)) {

 // Ошибка ΠΏΡ€ΠΈ создании списока с ΠΏΠΎΠ»Π΅ΠΌ рСдактирования

 TRACE0("Failed to create combo-box\n");

 return FALSE;

}

Как ΠΈ ΠΏΡ€ΠΈ создании тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Create нСсколько стилСй, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ характСристики списка combo-box.

Π’Π°ΠΊ ΠΊΠ°ΠΊ список размСщаСтся Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, Ρ‚ΠΎ ΠΎΠ½ являСтся Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ для Π½Π΅Π³ΠΎ ΡΡ‚ΠΈΠ»ΡŒ WS_CHILD. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ WS_CHILD. Π’ этом случаС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ установлСн автоматичСски Π² процСссС создания списка combo-box.

Π‘Ρ‚ΠΈΠ»ΡŒ WS_VISIBLE ΡƒΡΡ‚анавливаСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ список появился Π½Π° экранС сразу послС создания. Если Π΅Π³ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, список останСтся Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ.

Π‘Ρ‚ΠΈΠ»ΡŒ WS_VSCROLL Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ‚ ΠΊ списку combo-box Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ полосу просмотра, Ссли Π² спискС слишком ΠΌΠ½ΠΎΠ³ΠΎ строк. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΡ‚ΠΈΠ»ΡŒ CBS_DISABLENOSCROLL, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ полоса просмотра отобраТаСтся, Π΄Π°ΠΆΠ΅ Ссли всС строки ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² спискС. Π’ этом случаС, ΠΎΠ΄Π½Π°ΠΊΠΎ, полоса просмотра отобраТаСтся сСрым Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΈ Π½Π΅ доступна для использования.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ списка combo-box опрСдСляСтся стилСм CBS_DROPDOWN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ список Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² случаС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ .

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ установили для списка ΡΡ‚ΠΈΠ»ΡŒ WS_TABSTOP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <Tab> для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΅ΠΌΡƒ фокуса Π²Π²ΠΎΠ΄Π°. Напомним, Ρ‡Ρ‚ΠΎ этот ΡΡ‚ΠΈΠ»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ установлСн для тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

Π‘Ρ€Π°Π·Ρƒ послС создания списка combo-box ΠΌΡ‹ записываСм Π² Π½Π΅Π³ΠΎ Ρ‚Ρ€ΠΈ строки: One, Two ΠΈ Third. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ эти строки Ссли ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ список combo-box Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния прилоТСния.

Для добавлСния Π½ΠΎΠ²Ρ‹Ρ… строк ΠΊ списку Π½Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ AddString класса CComboBox:

m_wndExtendedBar.m_combo_box.AddString("One");

m_wndExtendedBar.m_combo_box.AddString("Two");

m_wndExtendedBar.m_combo_box.AddString("Third");

Когда стили всСх ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Π²Ρ‹Π±Ρ€Π°Π½Ρ‹, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π΅Π΅ ΠΊ любой сторонС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Для этого Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ EnableDocking, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΌΡƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CBRS_ALIGN_ANY:

m_wndExtendedBar.EnableDocking(CBRS_ALIGN_ANY);

ПослСдним шагом Π² процСссС создания ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Extended являСтся Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DockControlBar для ΠΎΠΊΠ½Π° прилоТСния. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ пристывковываСт панСль управлСния Extended ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ:

DockControlBar(&m_wndExtendedBar);

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΡ€Π³Π°Π½Π°ΠΌΠΈ управлСния (тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ списком combo-box), Π² ΠΎΠΊΠ½ΠΎ прилоТСния, ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния.

Кнопки ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ этих ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний соотвСтствуСт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ сообщСния ΠΎΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΎΠ² управлСния – тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ списка combo-box. ΠšΠΎΠ΄Ρ‹ извСщСния этих сообщСний ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CMultiBarWindow ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΉ ряд сообщСний ΠΎΡ‚ мСню ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния. ΠšΡ€ΠΎΠΌΠ΅ Π½ΠΈΡ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сообщСний класса CMultiBarWindow располагаСтся ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° ON_WM_CREATE, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate Π²ΠΎ врСмя создания ΠΎΠΊΠ½Π°:

ON_WM_CREATE()

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ Player ΠΈ Style ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ BarCommandOne ΠΈ BarCommandRange, входящиС Π² класс CMultiBarWindow.

ΠœΠ΅Ρ‚ΠΎΠ΄ BarCommandOne ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π° экранС сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ данная ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° - Command not implemented. ΠœΠ΅Ρ‚ΠΎΠ΄ BarCommandRange Π½Π΅ выполняСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий:

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Player

ON_COMMAND(ID_STOP, BarCommandOne)

ON_COMMAND(ID_PLAY, BarCommandOne)

ON_COMMAND(ID_PAUSE, BarCommandOne)

ON_COMMAND_RANGE(ID_LEFT, ID_RIGHT, BarCommandRange)

ON_COMMAND_RANGE(ID_TYPE, ID_WAVE,  BarCommandRange)


// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Style

ON_COMMAND_RANGE(ID_UNDERLINE, ID_MARK_4, BarCommandRange)

Для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Player ΠΈ Style ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ON_COMMAND ΠΈ ON_COMMAND_RANGE. ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° ON_COMMAND Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ сообщСния, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅. ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° ON_COMMAND_RANGE. Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ON_COMMAND, Π½ΠΎ позволяСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅, сразу для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… сообщСний находятся Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Extended ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ BarCommandRange. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ составляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° ID_ADD. БообщСния ΠΎΡ‚ этой ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ AddStringToComboBox класса CMultiBarWindow:

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Extended

ON_COMMAND(ID_ADD, AddStringToComboBox)

ON_COMMAND_RANGE(ID_FOTO, ID_DISK,  BarCommandRange)

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сообщСний класса CMultiBarWindow Ρ‚Π°ΠΊΠΆΠ΅ располоТСны ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний ΠΎΡ‚ мСню View. Для ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ShowStyle класса CMultiBarWindow:

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ мСню View

ON_COMMAND_EX(ID_Style, ShowStyle)

ON_COMMAND_EX(ID_Extended, ShowStyle)

ON_COMMAND_EX(ID_Player, ShowStyle)

ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния ΠΎΡ‚ всСх строк мСню View ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ShowStyle,  ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ² осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ON_COMMAND_EX. Π­Ρ‚Π° ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ сообщСния с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ON_COMMAND, ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° ON_COMMAND_EX ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ сообщСния.