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


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


{

DWORD sel = ((CComboBox*)GetDlgltem(IDC_FILL))->GetCurSel();

sel = sel==0 ? GL_POINT : sel==l ? GL_LINE

: GL_FILL;

m_Ctrl.SetFillMode(sel);

}

//==== Нажатие на кнопку запуска файлового диалога

void CTestGLDlg::OnClickedFilename(void)

{

m_Ctrl.ReadData();

}

//====== Реакция на сдвиг ползунка

void CTestGLDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

//====== Выясняем текущую позицию, которая не во

//====== всех случаях отражена в параметре nPos

nPos = ((CSliderCtrl*)GetDlgItem(IDC_XPOS))->GetPos() ;

m_Ctrl.SetLightParam (0, nPos);

}

//====== Запускаем стандартный диалог

void CTestGLDlg::OnClickedBkclr(void)

{

DWORD clr = m_Ctrl.GetFillColor() ;

CColorDialog dig (clr);

dig.m_cc.Flags |= CC_FULLOPEN;

if (dlg.DoModal()==IDOK)

{

m_Ctrl.SetFillColor(dlg.m_cc.rgbResult);

}

}

//====== Запоминаем текущее состояние и

//====== вызываем метод сервера

void CTestGLDlg::OnClickedQuads(void)

{

m_Ctrl.SetQuad(m_bQuads = TRUE);

}

void CTestGLDlg::OnClickedStrips(void)

{

m_Ctrl.SetQuad(m_bQuads = FALSE);

}

В настоящий момент вы можете запустить приложение, которое должно найти и запустить DLL-сервер ATLGL, генерирующий изображение по умолчанию и демонстрирующий его в окне внедренного элемента типа ActiveX. Сервер должен достаточно быстро реагировать на изменение регулировок органов управления клиентского приложения.

Подведем итог. В этом уроке мы научились:

  • вносить функциональность окна OpenGL в окно, управляемое ATL-классом CWindow;

  • добавлять с помощью Studio.Net новые методы в интерфейс, представляемый ко-классом;

  • учитывать особенности обработки сообщений Windows в рамках ATL;

  • управлять контекстом передачи OpenGL, связанным с окном внедренного СОМ-объекта;

  • создавать приложение-контейнер на базе MFC и пользоваться услугами класса-оболочки для управления СОМ-объектом.




Начало  Назад  



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