|
|
|
||||||||||||
|
|
Собственный, легко управляемый и профессионально разработанный сайт – необходимый элемент любого бизнеса. Находитесь ли Вы в командировке, в дороге, дома или на отдыхе имея компьютер, подключенный к сети Internet, Вы получаете доступ к управлению Вашим сайтом! |
|||
Создание COM компонента на Visual C++Статьи → Программирование на С/С++В этой статье я хотел бы описать создание простенького COM компонента на Проект создан, теперь надо добавить в него COM-объект, нажмите на Insert в Выберите категорию Objects и объект Simple Object. Теперь вы видите Если хотите, можете изменить поле type, это просто описание COM'а, давайте Выберите интерфейс IMyObject во вкладке ClassView, щёлкните по нему правой Теперь вы видите перед собой диалоговое окно Add Method to Interface, в поле Давайте теперь создадим свойство строкового типа, которое будет отвечать за < P> Выберите в менюProject->References, найдите в списке MyCom 1.0 Type Library отметьте его галочкой и щёлкните на Ok. В модуле напишите: Dim MyObj As New MyObject Private Sub Form_Load() MyObj. End Sub Перед вами открывается список методов и свойств, как видите здесь только 1 метод ShowMessageBox и только 1 свойство Caption. Ни то ни другое пока не работает, потому что мы ещё не реализовали метод ShowMessageBox и функции put_Caption и get_Caption. Давайте заставим их работать! Сначала реализуем метод ShowMessageBox. Во вкладке ClassViewвыберитеCMyObject->IMyObject->ShowMessageBox и напишите здесь следующий код: _bstr_t temp(StringToWrite); _bstr_t caption(m_Caption); *Result=MessageBox(NULL,temp,caption,MB_YESNO|MB_ICONINFORMATION); temp.~_bstr_t(); caption.~_bstr_t(); return S_OK; Здесь вы видите переменную m_Caption, которую нам предстоит создать в будущем для связи свойства Caption и компонента, а также наверное незнакомый класс _bstr_t. _bstr_t предоставляет полезные операторы и методы для работы с типом BSTR, но чтобы его использовать вы должны подключить header comdef.h, откройте MyObject.h и после строки #include "resource.h" // main symbols добавьте #include "comdef.h". В этом коде MessageBox вернёт либо IDYES либо IDNO, в зависимости от того, на какую кнопку нажмёт пользователь, и это значение будет возвращать функция, т.к мы написали *Result=MessageBox..., а Result возвращаемый параметр. Возможно, тип long для Result был выбран неверно, т.к MessageBox возвращает числа от 1 до 9, но как я уже говорил, этот компонент - просто тест. Теперь осталось реализовать функции put_Caption и get_Caption. Чтобы это сделать, надо сначала добавить в класс CMyObject защищённую переменную m_Caption типа BSTR, её также не будет в интерфейсе, но она будет использоваться, чтобы хранить то значение, которое пользователь присвоит свойству Caption. Откройте файл MyObject.h и после строк: public: STDMETHOD(get_Caption)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_Caption)(/*[in]*/ BSTR newVal); STDMETHOD(ShowMessageBox)(/*[in]*/ const BSTR StringToWrite, /*[out,retval]*/ long *Result); напишите: protected: BSTR m_Caption; Здесь же в конструкторе класса напишите: _bstr_t temp("Just a test!"); m_Caption=temp.copy(); temp.~_bstr_t(); Теперь переменная m_Caption инициализированна, по умолчанию в ней будет находиться строка "Just a test!". Ну а сейчас можно наконец-то заполнить функции get_Caption и put_Caption. Откройте файл MyObject.cpp, найдите там функцию get_Caption и напишите в ней: *pVal=m_Caption; return S_OK; Теперь найдите функцию put_Caption и напишите в ней следующее: m_Caption=newVal; return S_OK; Ну вот и всё в принципе, теперь можно компилировать компонент. Автор: Воробьёв Станислав 16.02.2006 |
VSESMI.ru — новости в СМИ.
Tur-Hotel.ru — отзывы об отелях
|
|
Copyright © 2002—2010 ООО "Хостмэйк" Телефон в Москве: +7 (495) 223-46-50 Телефон в Санкт-Петербурге: +7 (812) 448-38-90 Тел./Факс: +7 (8636) 237-836 E-mail: 2006 |