8. Запустить проект. Все должно работать, кроме выпадающего списка. Когда пользователь нажимает кнопку со стрелкой, щелчок на самой кнопке очень легко обработать в ветви WM_COMMAND, выловив идентификатор кнопки. Но вот как обработать щелчок на стрелке, чтобы появился выпадающий список? Теоретически, щелчок на этой стрелке должен генерировать константу TBN_DROPDOWN внутри поля lParam сообщения WM_NOTIFY, но, как выясняется, такой константы в этом поле нет. На самом деле в поле lParam помещается указатель на структуру LPTBNOTIFY, в которой есть поле hdr, в структуру которого входит поле code, в которое и помещается соответствующая константа. Значит, всего-то нужно выловить наличие константы в этом поле. Соответствующий код, располагающийся в процедуре WinProc, приведен в листинге 4.29. Листинг 4.29

case WM_NOTIFY:

//Ловим событие щелчка на стрелке к кнопке

if (((LPTBNOTIFY) lParam)->hdr.code == TBN_DROPDOWN)

{

//Находим углы кнопки, помещаем их в структуру lprc

SendMessage (g_hwndCB, TB_GETRECT, ((LPTBNOTIFY) lParam)->iItem, (LPARAM)(LPRECT)lprc);

//Находим место, где заканчивается окно, и начинается CB

i=CommandBar_Height(g_hwndCB);

//По найденным координатам выводим всплывающее меню так, чтобы оно

//в этой точке оказалось своим нижним правым углом (это задается

//константами TPM_RIGHTALIGN|TPM_BOTTOMALIGN

TrackPopupMenuEx(g_hmCB,TPM_RIGHTALIGN|TPM_BOTTOMALIGN, lprc->right, i, hWnd, NULL);

}

break;

9. Программу можно запустить и посмотреть на результат ее работы.

Диалоговые окна

В предыдущем упражнении диалоговое окно уже добавлялось к проекту. Но это было сделано только для того, чтобы использовать помещенный на него компонент Combo Box для встраивания в Command Bar. Тем не менее, если в проекте необходимо использовать окна, выводимые на экран командами меню, то следует придерживаться определенной последовательности действий.

10. Добавить диалоговое окно к ресурсам проекта, как это было сделано в предыдущем упражнении.

11. Разместить на окне элементы управления с панели Controls окна редактирования диалога, как показано на рис. 4.13.

Рис. 4.13. Редактирование диалогового окна, компоновка элементов управления.

Перейти на страницу:

Похожие книги