Паппас К., Мюррей У. - Visual C++ 6. Руководство разработчика - 2000
.pdfРис. 22.6. Местонахождение инструментов ActiveX
В окне контейнера выберите в меню Edit команду InsertNewControl, и перед вами откроется диалоговое окно InsertControl, в котором будет представлен список всех зарегистрированных элементов управления . Теперь щелкните на кнопке ОК, чтобы внедрить выбранный элемент управления в окно контейнера .
Новый элемент управления представляет собой эллипс, окруженный рамкой. Никакой функциональной нагрузки он пока не несет. Чтобы данный элемент управления заработал в соответствии с нашими требованиями, в сгенерированный мастером код следует добавить некоторые программные блоки.
421
Рис. 22.10. Мастер ClassWizard добавляет в класс TDCtrlCtrl новые свойства - BackColor и TDShape
12. Щелкните на кнопке ОК, и мастер ClassWizardвнесет изменения в код элемента управления.
Мастер классов добавит в файл TDCTRLCTL.Hобъявление функции OnTDShapeChanged ( ) и переменной m_tDShape, а в файл TDCTRLCTL.CPPдобавит стандартную реализацию указанной функции и поместит в схему диспетчеризации соответствующие макросы.
Все перечисленные изменения автоматически вносились мастером классов. Теперь наступает наш черед производить изменения.
Возвращаемся к файлу TDCTRLCTL.CPP
В следующем листинге показаны изменения, вносимые в файл TDCTRLCTL.CPP(выделены полужирным шрифтом).
///////////////////////////////////////////
// CTDCtrlCtrl::OnDrawФункция отображения
void CTDCtrlCtrl::OnDraw(CDC* pdc, const CRect SrcBounds, const CRect srclnvalid) {
CBrush* pOldBrush;
CBrush NewBrush;
CPen* pOldPen; CPen NewPen;
pdc->Fil!Rect(rcBounds, CBrush::FromHandle((HBRUSH) GetStockObject(WHITE_BRUSH))); NewPen.CreatePen(PS_SOLID, 3, RGB(0, 0,0));
pOldPen = {CPen*)pdo->SelectObject(SNewPen), // Создание желтой кисти
NewBrush.CreateSolidBrush(RGB(255, 255, 0)); pOldBrush = (CBrush*)pdc- >SelectObject(SNewBrush);
// Рисование прямоугольника с заливкой pdc->Rectangle(rcBounds);
428
Рис. 22.12. Добавление обработчиков событий мыши
13. Щелкните на кнопке ОК, и мастер ClassWizard внесет изменения в код элемента управления.
Мастер классов автоматически добавит в файл TDCTRLCTL.Hобъявление переменной m_hitTDCtrl, а в файл TDCTRLCTL.CPP— стандартные реализации обработчиков
OnLButtonDown() и OnLButtonUp().
Теперь нужно самостоятельно добавить код, определяющий реакцию элемента управления на соответствующие события.
Файл TDCTRLCTL.H
В данный файл заголовков, сразу после объявления деструктора, следует поместить прототип новой функции HitTDCtrl(), предназначенной для изменения цвета элемента управления в ответ на щелчок мышью.
// Реализация protected: -CTDCtrlCtrl() ;
void HitTDCtrl(CDC* pdc); // изменение цвета
Далее нужно написать код этой функции.
Возвращаемся к файлу TDCTRLCTL.CPP
При щелчке левой кнопкой мыши на элементе управления должен измениться цвет его прямоугольной области. Частично это событие обрабатывается функцией DoPropExchange(). Ниже показана исправленная версия данной функции в ЛОбав-ленной строкой, которая выделена полужирным шрифтом:
/////////////////////////////////////////
// CTDCtrlCtrl::DoPropExchange— Поддержка постоянства элемента void CTDCtrlCtrl::DoPropExchange(CPropExchange* pPX) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); COleControl::DoPropExchange(pPX);
}
430
- #13.08.201334.52 Mб91Липман С., Лажойе Ж., Му Б. - Язык программирования C++. Вводный курс - 2007.djvu
- #13.08.201347.18 Mб128Литвиненко Н.А. - Технология программирования на C++. Win32 API-приложения - 2010.djvu
- #
- #
- #13.08.201317.53 Mб104Оберг Р., Торстейсон П. - Архитектура .NET и программирование на Visual C++ - 2002.pdf
- #
- #
- #
- #
- #
- #