Учебник по Visual C++ .Net


Управление с помощью объекта класса-оболочки


<gl/glu.h>

Теперь следует поместить в окно диалога элементы управления. Здесь мы не будем пользоваться страницами свойств элемента, созданными нами в рамках предыдущего проекта. Вместо этого мы покажем, как можно управлять внедренным элементом ActiveX с помощью объекта m_ctrl. Перейдите в окно диалогового редактора и придайте окну диалога IDD_TESTGL_DIALOG.

Идентификаторы для элементов управления можно задать так, как показано в табл. 9.2.

Таблица 9.2. Идентификаторы элементов управления

Элемент

Идентификатор

Диалог

IDD_TESTGL_DIALOG

Кнопка Data File

IDCJILENAME

Кнопка Back Color

IDC.BKCLR

Переключатель Quads

IDC_QUADS

Переключатель Strips

IDC_STRIPS

Выпадающий список Fill Mode

IDC_FILL

Ползунок Light (X)

IDC_XPOS

Кнопка Close

IDOK

Для кнопки Quads установите свойство Group в положение True, а для кнопки Strips — в False. Обе они должны иметь свойство Auto в состоянии True. Важно еще то, что числовые значения их идентификаторов должны следовать по порядку. Для кнопки Data File установите свойство DefaultButton. Для выпадающего списка снимите свойство Sort (сделайте его False) и слегка растяните вниз его окно в открытом состоянии, для этого сначала нажмите кнопку раскрывания. Для ползунка вы можете установить свойство Point в положение Top/Left. Обратите внимание на тот факт, что в режиме дизайна вы можете открыть с помощью правой кнопки мыши диалог со страницами свойств для элемента IDC_OPENGL, одну из которых мы создавали в предыдущем проекте. Теперь с помощью Studio.Net введите в диалоговый класс обработчики следующих событий:

  • OnClickedFilename — нажата кнопка IDC_FILENAME,

  • OnCiickedBkcir — нажата кнопка IDC_BKCLR,

  • OnSelchangeFill — изменился выбор в списке IDC_FILL,

  • OnClickedQuads — нажата кнопка IDC_QUADS,

  • OnHScroll — изменилась позиция ползунка IDC_XPOS,

  • OnClickedStrips — нажата кнопка IDC_STRIPS.

Ниже мы приведем тела этих функций, а сейчас отметим, что все они пользуются услугами класса-оболочки для прямого вызова методов СОМ-сервера. Однако, как вы могли заключить из рассмотрения кодов класса COpenGL, на самом деле вызов будет происходить с помощью интерфейса IDispatch, а точнее его метода Invoke. Функция cwnd: : invokeHelper, вызов которой вы видите во всех методах COpenGL, преобразует параметры к типу VARIANTARG, а затем вызывает функцию Invoke. Если происходит отказ, то Invoke выбрасывает исключение.




Начало  Назад  Вперед



Книжный магазин