crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
ShNaGa
  опции профиля:
сообщение 5.12.2012, 9:12
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 3.12.2012
Пользователь №: 3622

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день, форумчане!

Разбираясь с QAxBindable обнаружил, что не могу отобразить закладки свойств своего компонента(ActiveX Control Test Contaier -> Properties).
Каким способом возможно реализовать данное поведение?
В мсдн написано, что нужно перехватить сообщение OLEIVERB_PROPERTIES
или же наследоваться от ISpecifyPropertyPages, но где и кого не очень понимаю.
Получается каша в разуме, может кто поможет разобраться?

Версии:
QT 4.8.3
MSVC 10

PS: Гуглил, но не нагуглил. Видать вопросы не те задавал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ShNaGa
  опции профиля:
сообщение 11.12.2012, 22:36
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 3.12.2012
Пользователь №: 3622

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброй ночи, форумчане. 8)

Лучше гугле может быть только исходный код !!!!
Может кому интересно как надо это делать:
Класс от которого наследуется наш UI ActiveX является QAxBindable.
В родителе есть замечательная функция virtual QAxAggregated *createAggregate(),
которая по умолчанию возвращает 0.
Создаем класс насденик от QAxAggregated и переопределяем абстракную функцию queryInterface,
в которой в сою очередь и отлавливаем запрос на интерфейс IID_ISpecifyPropertyPages.

Пример с поля боя:
Раскрывающийся текст

class QAxEquipmentAggregated : public QAxAggregated
{
    virtual long queryInterface(const QUuid &iid, void **iface)
   {
     if (iid == IID_ISpecifyPropertyPages)
     {
       return new SpecifyPropertyPagesImpl(); // возвращаем имплементацию ISpecifyPropertyPages.
     }
     return 0; // Пускай разбирается Qt.
   }
};

class MyViewCtrl : public QWidget, public QAxBindable
{
public: // reimplement QAxAggregated 
 virtual QAxAggregated *createAggregate()
 {
   return new QAxEquipmentAggregated();
 }
}

Созданные объекты удаляются либо в QAxServer, либо IUnknow.


Вуаля!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 18.6.2025, 12:16