Ручная коррекция класса
//====== Массив вершин поверхности vector <CPoint3D> m_cPoints; //====== Функции, присутствовавшие в стартовой заготовке COpenGL(); HRESULT OnDraw(ATL DRAWINFO& di); void OnFillColorChangedO; DECLARE_OLEMISC_STATUS(OLEMISC_RECOMPOSEONRESIZE OLEMISC_CANTLINKINSIDE | OLEMISC_INSIDEOUT | OLEMISC_ACTIVATEWHENVISIBLE | OLEMISC_SETCLIENTSITEFIRST | DECLARE_REGISTRY_RESOURCEID(IDR_OPENGL) BEGIN_COM_MAP(COpenGL) COM_INTERFACE_ENTRY(IQpenGL) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IViewObj ectEx) COM_INTERFACE_ENTRY(IViewObj ect2) COM_INTERFACE_ENTRY(IViewObj ect) COM_INTERFACE_ENTRY(I01eInPlaceObjectWindowless) COM_INTERFACE_ENTRY(I01eInPlaceObject) COM_INTERFACE_ENTRY2(IQleWindow, IQlelnPlaceObjectWindowless) COM_INTERFACE_ENTRY(lOlelnPlaceActiveObject) COM_INTERFACE_ENTRY(lOleControl) COM_INTERFACE_ENTRY(lOleObj ect) COM_INTERFACE_ENTRY(IPersistStreamInit) COM_INTERFACE_ENTRY2(IPersist, IPersistStreamlnit) COM_INTERFACE_ENTRY(ISupportErrorlnfo) COM_INTERFACE_ENTRY(IConnectionPointContainer) COM_INTERFACE_ENTRY(ISpecifyPropertyPages) COM_INTERFACE_ENTRY(IQuickActivate) COM_INTERFACE_ENTRY(IPersistStorage) COM_INTERFACE_ENTRY(IDataObject) COM_INTERFACE_ENTRY(IProvideClassInfo) COM_INTERFACE_ENTRY(IProvideClassInfo2) END_COM_MAP() BEGIN_PROP_MAP(COpenGL) PROP_DATA_ENTRY("_cx", m_sizeExtent .ex, VTJJI4) PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VTJJI4) PROP_ENTRY("FillColor",DISPID_FILLCOLOR, CLSID_StockColorPage) END_PROP_MAP() BEGIN_CONNECTION_POINT_MAP(COpenGL) CONNECTION_POINT_ENTRY(DIID_IQpenGLEvents) END_CONNECTION_POINT_MAP() BEGIN_MSG_MAP(COpenGL) CHAIN_MSG_MAP(CComControKCOpenGL>) DEFAULT_REFLECTION_HANDLER() END_MSG_MAP() //====== Поддержка интерфейса ISupportsErrorlnfо STDMETHOD(InterfaceSupportsErrorlnfo)(REFIID riid) { static const IID* arr[] = { &IID_IOpenGL, }; for (int i=0; ixsizeof (arr)/sizeof(arr[0]); i++) { if (InlineIsEqualGUID(*arr[i], riid)) return S_OK; } return S_FALSE; } //====== Поддержка интерфейса IViewObjectEx DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE) //====== Поддержка интерфейса IQpenGL public: DECLARE_PROTECT_FINAL_CONSTRUCT() HRESULT FinalConstruct() { return S_OK; } void FinalRelease() { } //====== Экспонируемые методы STDMETHODIMP GetLightParams(int* pPos); STDMETHODIMP SetLightParam(short Ip, int nPos); STDMETHODIMP ReadData(void); //====== Новые методы класса //====== Установка параметров освещения void SetLight (); //====== Создание демонстрационного графика void DefaultGraphic(); //====== Чтение файла с данными о графике bool DoRead(HANDLE hFile); // Заполнение координат точек графика по данным из буфера void SetGraphPoints(BYTE* buff, DWORD nSize); //====== Управление цветом фона окна void SetBkColor (); //== Создание изображения в виде списка команд OpenGL void DrawScene(); }; OBJECT ENTRY AUTO (_ uuidof (OpenGL), COpenGL)