Окт 16

Замена класса KWnd на класс KWndEx

Вернемся к нашей последней программе, в которой комбинированный список, встроенный в панель инструментов, не имел всплывающей подсказки. Попробуем устранить этот недостаток.
Одновременно заменим хорошо послуживший нам класс KWnd на его модификацию — класс KWndEx. Цель замены — обеспечить регистрацию оконных классов для элементов управления общего пользования в конструкторе класса, чтобы освободить программиста от этой рутинной операции. Кроме того, в файлах KWnd Ex. h, KWndEx.cpp будут размещены также интерфейс и реализация функций общего применения.
В состав функций общего применения войдут следующие функции: перегруженная функция ShiftWindow, предназначенная для сдвига и модификации размеров окон (эта функция использовалась ранее в листинге 7.5);
функция AddTooltip, добавляющая окно подсказки к указанному окну;
функция TRACE, которую можно использовать для отладочного вывода в окно Output (аналогично макросу TRACE в библиотеке MFC).
Все во имя программиста, все для блага программиста!
Создайте новый проект с именем ToolTip. Скопируйте из папки проекта ComboInToolbar в папку проекта ToolTip файлы с расширениями .срр, .h и .гс, скорректировав их имена заменой подстроки ComboInToolbar на ToolTip. Скопируйте также файл toolbarl.bmp. Измените имена файлов Kwnd.h, Kwnd.cpp на KwndEx.h и KwndEx.cpp соответственно. Добавьте все перечисленные файлы в состав проекта. Также к настройкам проекта на вкладке Link надо добавить библиотеку comctl32.lib.
Откройте вкладку ResourceView в окне Workspace. В списке ресурсов откройте папку String table и вызовите редактор таблицы строк двойным щелчком мыши на элементе String table.
Обратите внимание на то, что потребовалось указать две строки, чтобы элемент управления Combo box получил все необходимые подсказки. Первый текст подсказки будет отображаться при наведении курсора мыши на стрелку, используемую для открывания списка, второй текст подсказки — при наведении курсора мыши на окно редактирования.