Программирование >>  Процедурные приложения 

1 ... 135 136 137 [ 138 ] 139 140 141 ... 150


UINT nHelpID. = 0) ;

void FireReadyStateChange();

Базовые события

void KeyDown(USHORT* pnChar);

void KeyUp(USHORT* pnChar);

void ButtonDown(USHORT iButton, UINT nFlags, CPoint point);

void ButtonUp(USHORT iButton, UINT nFlags, CPoint point); void ButtonDblClk(USHORT iButton, UINT nFlags, CPoint point); Базовые свойства

OLE COLOR m clrBackColor; Цвет фона

OLE COLOR m clrForeColor; Цвет переднего плана

CString m strText; Текст/Надпись

CFontHolder m font; Шрифт

HFONT m hFontPrev; Пред1дущий шрифт

short m sAppearance; . Внешний вид

short m sBorderStyle; Стиль рамки

BOOLm bEnabled; Доступность

longm lReadyState; Состояние готовности

Схема сообщений

protected:

{{AFX MSG(COleControl)

afx msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags), afx msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); afx msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); afx msg void OnMouseMove(UINT nFlags, CPoint point); afx msg void OnLButtonDown(UINT nFlags, CPoint point); afx msg void OnLButtonUp(UINT nFlags, CPoint point); afx msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx msg void OnMButtonDown(UINT nFlags, CPoint point); afx msg void OnMButtonUp(UINT nFlags, CPoint point); afx msg void OnMButtonDblClkfUINT nFlags, CPoint point); afx msg void OnRButtonDown(UINT nFlags, CPoint point); afx msg void OnRButtonUp(UINT nFlags, CPoint point); afx msg void OnRButtonDblClk(UINT nFlags, CPoint point); afx msg void OnlnitMenuPopup(CMenu*, UINT, BOOL);

afx msg void OnMenuSelect(UINT nltemlD, UINT nFlags, HMENU hSysMenu), afx msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM IParam); afx msg void OnEnterldle(UINT nWhy, CWnd* pWho); afx msg void OnCancelMode(); afx msg void OnPaint(CDC* pDC); afx msg BOOL OnEraseBkgnd(CDC* pDC) ;

afx msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); afx msg int OnMouseActivate(CWnd *pDesktopWnd, UINT nHitTest, UINT message);

afx msg LRESULT OnSetText(WPARAM wParam, LPARAM IParam);

afx msg BOOL OnNcCreate(LPCREATESTRUCT IpCreateStruct);

afx msg void OnDestroyO; afx msg void OnKillFocus(CWnd* pNewWnd); afx msg void OnSetFocus(CWnd* pOldWnd) ; afx msg void OnNcPaintO;

afx msg void OnNcCalcSize(BOOL bCalcValidRects,

NCCALCSIZE PARAMS* Ipncsp); afx msg UINT OnNcHitTest(CPoint point);



afx msg void OnNcLButtonDown(UINT nHitTest, CPoint point); afx msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); afx msg

UINT OnGetDlgCode();

afx msg int OnCreate(LPCREATESTRUCT IpCreateStruct); afx msg void OnSize(UINT nType, int ex, int cy) ; afx msg void OnMovelint x, int

afxjmsg void OnShowWindow(BOOL bShow, UINT nStatus); ))AFX MSG afx msg LRESULT OnOcraCtlColorBtn(WPARAM wParam, LPARAM IParam); afx msg LRESULT OnOcmCtlColorDlg(WPARAM wParam, LPARAM IParam); afx msg LRESULT OnOcmCtlColorEdit(WPARAM wParam, LPARAM IParam); afx msg LRESULT OnOcmCtlColorListBox(WPARAM wParam, LPARAM IParam); afx msg LRESULT OnOcmCtlColorMsgBox(WPARAM wParam, LPARAM IParam); afx msg LRESULT OnOcmCtlColorScrollBar(WPARAM wParam, LPARAM IParam) , afx msg LRESULT OnOcmCtlColorStatic(WPARAM wParam, LEARAM IParam);

DECLARE MESSAGE MAP()

вспомогательные обработчики

void OnButtonUp(USHORT nButton, UINT nFlags, CPoint point); void OnButtonDown(USHORT nButton, UINT nFlags, CPoint point); void OnButtonDblClk(USHORT nButton, UINT nFlags, CPoint point);

Схемы интерфейсов public: IPersistStorage

BEGIN INTERFACE PART(Persiststorage, IPersistStorage)

INIT INTERFACE PART(COleControl, PersistStorage)

STDMETHOD(GetClassID)(LPCLSID);

STDMETHOD (IsDirty) ();

STDMETHOD(InitNew)(LPSTORAGE);

STDMETHOD(Load)(LPSTORAGE);

STDMETHOD(Save)(LPSTORAGE, BOOL);

STDMETHOD(SaveCompleted)(LPSTORAGE);

STDMETHOD(HandsOffStorage)();

END INTERFACE PART STATIC(PersistStorage)

IOlelnPlaceObject

BEGIN INTERFACE PART(OlelnPlaceObject, IQlelnPlaceObjectWindowless)

INIT INTERFACE PART(COleGontrol, OlelnPlaceObject)

STDMETHOD(GetWindow)(HWND*);

STDMETHOD(ContextSensitiveHelp)(BOOL); STDMETHOD(InPlaceDeactivate)(); STDMETHOD(OIDeactivate)(); STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT); STDMETHOD(ReactivateAndUndo)();

STDMETHOD(OnWindowMessage)(UINT msg, WPARAM wParam, LPARAM Iparam,

LRESULT* plResult); STDMETHOD(GetDropTarget)(IDropTarget **ppDropTarget); END INTERFACE PART(OlelnPlaceObject) IQlelnPlaceActiveObject

BEGIN INTERFACE PART(OleInPlaceActiveObject, IQlelnPlaceActiveObject)

INIT INTERFACE PART(COleControl, OlelnPlaceActiveObject)

STDMETHOD(GetWindow)(HWND*);

STDMETHOD(ContextSensitiveHelp)(BOOL);

STDMETHOD(TranslateAccelerator)(LPMSG);

STDMETHOD(OnFrameWindowActivate)(BOOL);

STDMETHOD(OnDocWindowActivate)(BOOL);

STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEOIWINDOW, BOOL);

STDMETHOD(EnableModeless)(BOOL);

END INTERFACE PART(OlelnPlaceActiveObject)



События

События генерируются элементом управления в ответ на выполняемые над ним действия, такие как нажатие определенной комбинации клавиш или щелчок мышью. Примерами событий могут служить KeyUp и KeyDown.

Класс элемента управления ActiveX, порождаемый от класса GOleControl, может иметь собственную специальную схему сообщений, посредством которой события посылаются приложению, содержащему элемент управления. Такое приложение называется контейнером. Дополнительную информацию о событии можно передать с помощью аргументов.

Именно путем передачи событий организуется взаимодействие между элементом управления ActiveXи контейнером. Различаются базовые и пользовательские события. События первого типа могут генерироваться любым элементом управления и по умолчанию обрабатываются классом CQleControl. События второго типа посылаются контейнеру при выполнении над элементом управления действий, указанных разработчиком элемента.

Методы и свойства

Элемент управления ActiveX должен обладать рядом методов и свойств, позволяющих контейнеру в интерактивном режиме менять его, элемента управления, настройки. Методами называются функции элемента управления, которые могут вызываться контейнером. Под свойствами понимают цвет, шрифт, надпись и другие атрибуты внешнего вида элемента управления. Методы и свойства элемента управления определяются в процессе его разработки с помощью мастера ClassWizard. Базовые методы присущи всем элементам управления и по умолчанию реализуются классом COleControl.

Доступ к методам и свойствам элемента управления возможен на этапе раннего связывания. При этом методы рассматриваются как обычные функции-члены класса, а свойства представляются парами функций getxxx и setxxx. Доступ к элементу управления на этапе позднего связывания регулируется интерфейсом IDispatch. Контейнер автоматически определяет тип связывания, установленный пользователем. Интерфейс IProvideClasslnfo содержит функцию GetClassInfo(), которая возвращает объект ITypelnfо с информацией об элементе управления, взятой из его библиотеки типов.

Элементы управления ActiveX часто содержат расширенные наборы свойств, методов и событий, которые используются только контейнером.

Постоянство

Элементы управления позволяют сохранять свои данные в потоках с помощью интерфейса iPersiststream, а в хранилищах - с помощью интерфейса iPersiststorage. Первый необходим для записи данных в простой последовательный поток, а второй реализует концепцию структурированного хранения составных документов, когда каждый внедренный или связанный объект имеет собственную область хранения в общем хранилище данных документа.

Благодаря механизму постоянства элемент управления ActiveXпри необходимости может записывать значения своих свойств в файл или поток, а затем считывать их. Значения свойств элемента управления могут сохраняться самим контейнером и считываться, скажем, при создании нового экземпляра элемента управления.

Контейнеры

Контейнеры, обеспечивающие возможность непосредственного редактирования внедренных объектов, обладают необходимым интерфейсом для использования элементов управления ActiveX. В дополнение к этому контейнеры должны поддерживать обработку событий и внешние свойства.

Элемент управления ActiveXвыступает в роли переводчика сообщений. Он должен уметь преобразовывать сообщения, получаемые от пользователя, в события, понятные контейнеру. Для каждого события должна быть определена точка входа в контейнере, связанная с обслуживающей процедурой.



1 ... 135 136 137 [ 138 ] 139 140 141 ... 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика