Название: Несколько вопросов про Qt ActiveX Отправлено: dr_Begemot от Июль 14, 2009, 17:04 1. Написал на Qt activeX контролл. У него есть свойство setColor(QColor). Добавляю этот контролл, например в MFC проект. В редакторе формы MFC все ок, свойство можно настраивать. Однако при попытке программно обратится к этому свойству возникают некоторые вопросы:
1.1 Почему свойство изменило свое имя с setColor на Setcolor? 1.2 Почему в параметрах Setcolor стоит не QColor, а unsigned long? Что туда передавать - COLORREF или как-то нужно по особому формировать данные о цвете? 2. Можно ли передать клиенту (программа на MFC) методы, в качестве параметров в которых стоят типы данных определенные в контролле, например: Метод setMarker(MarkerProperty prop); Код: //Класс описывающий свойства маркера Вообще, в идеале хотелось бы добится того, чтобы в MFC-клиенте можно было сделать так: m_pMyControll.GetMarker()->setSize(...); Привожу код самого контролла, прошу не пинать за то, что это немного видоизмененный пример AxBouncer из примеров книги про Qt - "Qt4 программирование GUI на C++" Жасмин Бланшет) Код: class BInterface Вот кстати еще не понимаю, почему интерфейс stop3() и stop4(QRect) доступны из клиента, а метод setCurveData нет? Потому, что они объвлены в блоке public slots? и кстати для stop4 экспортируется класс QRect, правда без методов, а QColor почему-то нет. main.cpp: Код: #include <QAxFactory> p.s. для проверки, вы можете взять пример из книги и изменить его как тут написано Название: Re: Несколько вопросов про Qt ActiveX Отправлено: dr_Begemot от Июль 15, 2009, 15:17 Никто не работал с ActiveX в Qt? :(
Название: Re: Несколько вопросов про Qt ActiveX Отправлено: Spicos от Июль 15, 2009, 17:39 Похоже нет, все молчат. Это тайна покрытая мраком. ;D
Название: Re: Несколько вопросов про Qt ActiveX Отправлено: Tonal от Июль 16, 2009, 10:18 1.1 Почему свойство изменило свое имя с setColor на Setcolor? Похоже на соглашение об именах для COM-а.Стандартное свойство называется color, сеттер Setcolor. 1.2 Почему в параметрах Setcolor стоит не QColor, а unsigned long? Что туда передавать - COLORREF или как-то нужно по особому формировать данные о цвете? Клиент ActiveX-а может быть написан на языке, который не в курсе что такое QColor. Поэтому вместо QColor используется unsigned long.Про COLORREF похоже на правду. :) 2. Можно ли передать клиенту (программа на MFC) методы, в качестве параметров в которых стоят типы данных определенные в контролле, например: В COM-е параметр может принимать базовые типы, Variant или указатель на известный COM-интерфейс.Метод setMarker(MarkerProperty prop); Как это выразить в QActiveX я не в курсе. Нужно разбираться. :) Название: Re: Несколько вопросов про Qt ActiveX Отправлено: dr_Begemot от Июль 16, 2009, 10:51 1.1 Почему свойство изменило свое имя с setColor на Setcolor? Похоже на соглашение об именах для COM-а.Стандартное свойство называется color, сеттер Setcolor. 1.2 Почему в параметрах Setcolor стоит не QColor, а unsigned long? Что туда передавать - COLORREF или как-то нужно по особому формировать данные о цвете? Клиент ActiveX-а может быть написан на языке, который не в курсе что такое QColor. Поэтому вместо QColor используется unsigned long.Про COLORREF похоже на правду. :) 2. Можно ли передать клиенту (программа на MFC) методы, в качестве параметров в которых стоят типы данных определенные в контролле, например: В COM-е параметр может принимать базовые типы, Variant или указатель на известный COM-интерфейс.Метод setMarker(MarkerProperty prop); Как это выразить в QActiveX я не в курсе. Нужно разбираться. :) Спасибо) Хоть что-то) Где бы еще найти где почитать про то как сделать возможность в методы передавать указатель на известный COM-интерфейс - я так понимаю, это и сделает возможным setMarker(MarkerProperty prop);... В Qt доке чет мало по этому вопросу, несколько базовых примеров - демонстрирующих, очень малую часть возможностей :( Название: Re: Несколько вопросов про Qt ActiveX Отправлено: Tonal от Июль 21, 2009, 10:47 QActiveX - просто обёртка над MS ActiveX технологией.
Поэтому читать нужно доки по самой MS ActiveX, а в доках по Qt смотреть нюансы реализации. :) |