#include "resource.h" // main symbols
#include <atlctl.h>
#include "_IOpenGLEvents_CP.h"
//========== Вспомогательный класс
class CPointSD
public:
fldat x;
float y;
float z; // Координаты точки в 3D
//====== Набор конструкторов и операция присвоения
CPoint3D () { х = у = z = 0; }
CPoint3D (float cl, float c2, float c3)
x = с1;
z = c2;
у = сЗ;
CPoint3D& operator=(const CPoint3D& pt)
x = pt.x;
z = pt. z ;
У = pt.y;
return *this;
}
CPointSD (const CPoint3D& pt) *this = pt;
//==== Основной класс, экспонирующий интерфейс IQpenGL
class ATL_NO_VTABLE COpenGL :
p.ublic CQomObjectRootEx<CComSingleThreadModel>,
public CStockPropImpKCOpenGL, IOpenGL>,
public IPersistStreamInitImpl<COpenGL>,
public I01eControlImpl<COpenGL>,
public I01eObjectImpl<COpenGL>,
public I01eInPlaceActiveObjectImpl<COpenGL>,
public IViewObjectExImpl<COpenGL>,
public I01eInPlaceObjectWindowlessImpl<COpenGL>,
public ISupportErrorlnfo,
public IConnectionPointContainerImpl<COpenGL>,
public CProxy_IOpenGLEvents<COpenGL>,
public IPersistStorageImpl<COpenGL>,
public ISpecifyPropertyPagesImpl<COpenGL>,
public IQuickActivateImpl<COpenGL>,
public IDataObjectImpl<COpenGL>,
public IProvideClassInfo2Impl<&CLSID_OpenGL,
&_uuidof(_IOpenGLEvents), &LIBID_ATLGLLib>,
public CComCoClass<COpenGL, &CLSID_OpenGL>,
public CComControl<COpenGL>
{
public:
//===== Переменные, необходимые |
для |
реализации интерфейса |
|||
OLE COLOR |
m clrFillColor; |
// |
Цвет фона окна |
||
int |
m LightParamfll] ; |
// |
Параметры освещения |
||
int |
m xPos, m yPos; |
// |
Текущая позиция мыши |
||
HGLRC |
m hRC; |
// |
Контекст OpenGL |
||
HDC |
m hdc; |
// |
Контекст Windows |
||
GLfloat |
m AngleX; |
// |
Угол поворота вокруг оси X |
||
GLfloat |
m AngleY; |
// |
Угол поворота вокруг оси Y |
||
GLfloat |
m AngleView; |
// |
Угол перспективы |
||
GLfloat |
m fRangeX; |
// |
Размер объекта вдоль X |
||
GLfloat |
m fRangeY; |
// |
Размер объекта вдоль Y |
||
GLfloat |
m fRangeZ; |
// |
Размер объекта вдоль Z |
||
GLfloat |
m dx; |
// |
Квант смещения вдоль X |
||
GLfloat |
m dy; |
// |
Квант смещения вдоль Y |
||
GLfloat |
m xTrans; |
// |
Смещение вдоль X |
||
GLfloat |
m yTrans; |
// |
Смещение вдоль Y |
||
GLfloat |
m zTrans; |
// |
Смещение вдоль Z |
||
GLenum |
m FillMode; |
// |
Режим заполнения полигонов |
||
bool |
m_bCaptured; |
// |
Признак захвата мыши |
||
bool |
m bRightButton; |
// |
Флаг правой кнопки мыши |
||
bool |
m bQuad; |
// |
Флаг использования GL QUAD |
||
UINT |
m xSize; |
// |
Текущий размер окна вдоль X |
||
UINT |
m zSize; |
// |
Текущий размер окна вдоль Y |
||