Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том1)" -> 142

Visual С++ 6. Полное руководство: В 2 т.(том1) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 136 137 138 139 140 141 < 142 > 143 144 145 146 147 148 .. 204 >> Следующая

Последние три строки добавленного текста позволяют панели инструментов перемещаться. Первое обращение к функции EnableDocking вызывает саму функцию, определенную в классе CControlBar, и разрешает прикрепление панели инструментов. Второе обращение к функции EnableDocking вызывает эту функцию, определенную в классе CFrameWnd, и разрешает перемещение панели инструментов в главном окне. Передача значения cbrs_align_any в обоих вызовах позволяет пользователю прикрепить панель инструментов к любому краю окна. Функция CFrameWnd: : DockControlBar возвращает панель инструментов в исходное положение (прикрепление к левому верхнему краю рабочей области окна). Если пренебречь любой из этих функций, то панель инструментов станет стандартной панелью, т.е. неперемещаемой, зафиксированной в верхней части окна.
Возможно, вы захотите запустить программу MiniDraw, чтобы увидеть результат своей работы. При выполнении программы отображается панель инструментов и ее можно перемещать; однако кнопки при этом заблокированы (т.е. затенены серым цветом и не реагируют на щелчки мыши), потому что обработчики сообщений кнопок не определены. По этой же причине заблокированы соответствующие пункты меню. Обратите внимание: панель инструментов можно скрывать или отображать командой Toolbar в меню View. Обработчики сообщений для этой команды предоставляются библиотекой MFC.
Совет
Если сгенерировать перемещаемую панель инструментов для новой программы, то мастер AppWizard определит объект класса CToolBar с именем m_WndToolBar и добавит необходимые вызовы в функцию OnCreate. Для изменения стилей, указанных при обращении к
функции стоо1Ваг: : CreateEx, измените параметры, передаваемые функции ЕпаЫеЭоскхпд, или уберите обращения к функциям ЕпаЫеОоск1пд и ОоскСог^го1Ваг (таким образом будет создана стандартная панель инструментов).
Написание обработчиков сообщений кнопок
Теперь необходимо определить и реализовать обработчики сообщений для кнопок панели инструментов и соответствующих команд меню.
Для определения обработчиков в окне мастера ClassWizard откройте вкладку Message Map. Выберите класс CMiniDrawApp в списке Class Name, чтобы класс приложения обрабатывал сообщения от кнопок панелей инструментов и вновь добавленных команд меню. Класс приложения выбран потому, что выбор текущего инструмента рисования и толщины линии воздействует на работу приложения в целом, а не на определенный документ или представление.
Далее в списке Object IDs выберите идентификатор id_line_double, в списке Messages — сообщение COMMAND, щелкните на кнопке Add Function... и примите заданное по умолчанию имя функции (OnLineDouble). Так как ID_LINE_DOUBLE — это идентификатор кнопки Double-Thickness Lines и команды Double в меню Lines, то функция OnLineDouble получает управление либо после щелчка на кнопке, либо после выбора команды меню.
Пока идентификатор id_line_double выбран в списке Object IDs, выберите сообщение update_command_ui в списке Messages, щелкните на кнопке Add Function... и снова примите имя функции по умолчанию (OnUpdateLineDouble). Функция OnUpdateLineDouble получает управление через равные промежутки времени при простое системы для обновления кнопки Double-Thickness Lines, а также при открытии всплывающего меню Lines для инициализации команды меню Double (см. гл. 11).
Перед добавлением кода в функции OnLineDouble И OnUpdateLineDouble, воспользуйтесь мастером ClassWizard, чтобы сгенерировать обработчики сообщений для остальных кнопок панели инструментов и соответствующих им команд. В табл. 14.4 описаны все необходимые обработчики сообщений. Во всех случаях необходимо принимать стандартное имя функции, предлагаемое ClassWizard.
Таблица 14. 4. Обработчики сообщений для кнопок панели инструментов программы MiniDraw
Идентификатор Идентификатор Обработчик сообщения
кнопки/команды меню сообщения
ID_ LINE DOUBLE COMMAND OnLineDouble
ID LINE DOUBLE UPDATE COMMAND UI OnUpdateLineDouble
TD_ _LINE_SINGLE COMMAND OnLineSingle
ID_ _LINE_SINGLE UPDATE COMMAND_ JJI OnUpdateLineSingle
ID _LINE_TRIPLE COMMAND OnLineTr iple
ID LINE TRIPLE UPDATE COMMAND UI OnUpdateLineTriple
ID_ TOOLS CIRCLE COMMAND OnToolsCircle
ID_ TOOLS_CIRCLE UPDATE COMMAND _UI OnUpdateToolsCircle
ID_ TOOLS_CIRCLEFILL COMMAND OnToolsCirclefill
ID_TOOLS_CIRCLEFILL U PDATE_COMMAND_ _UI OnUpdateToolsCirclefill
Окончание табл. 14. 4
Идентификатор Идентификатор Обработчик сообщения
кнопки/команды меню сообщения
ID_ _TOOLS_ LINE COMMAND OnToolsLine
ID_ _TOOLS_ LINE UPDATE COMMAND^ UI OnUpdateToolsLine
ID_ TOOLS RECTANGLE COMMAND OnToolsRectangle
ID_ TOOLS RECTANGLE UPDATE COMMAND UI OnUpdateToolsRectangle
ID_ _TOOLS_ RECTFILL COMMAND OnToolsRectfill
ID_ _TOOLS_ RECTFILL UPDATE COMMAND UI OnUpdateToolsRectfi11
ID_ TOOLS RECTROUND COMMAND OnToolsRectround
ID_ _TOOLS^ RECTROUND UPDATE COMMAND _UI OnUpdateToolsRectround
ID_ TOOLS_ RECTROUNDFILL COMMAND OnTooIsRectroundfi11
ID_ _TOOLS_ RECTROUNDFILL UPDATE COMMAND _UI OnUpdateToolsRectroundfill
Перед реализацией некоторых обработчиков сообщений необходимо определить И инициализировать две переменных класса приложения: m__CurrentThickness, хранящую текущую толщину линии (1, 2 или 3), и m_CurrentTool, хранящую идентификатор выбранной кнопки с обозначением инструмента рисования. Добавьте объявления в определение класса CMiniDrawApp в файле MiniDraw.h.
Предыдущая << 1 .. 136 137 138 139 140 141 < 142 > 143 144 145 146 147 148 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100