Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Active X COleVariant свойство нестандартного типа / 6 сообщений из 6, страница 1 из 1
04.11.2003, 16:55
    #32315102
black zorro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Active X COleVariant свойство нестандартного типа
Вот создал класс (производный от COleVariant а соотвественно от VARIANT)
class AFunctional :
public COleVariant
{
public:
AFunctional(void);
virtual ~AFunctional(void);

virtual double Foo_F (double x) = 0;
virtual double Foo_MaxX () = 0;
virtual double Foo_MinX () = 0;

virtual double Foo_MaxY () = 0;
virtual double Foo_MinY () = 0;
};
затем к активному контролу добавляю свойство и устанавливаю в качестве его типа AFunctional * а мне гад-мастер говорит что нельзя т.к. класс не из выпадающего списка, и тоже при добавлении метода нельзя параметр задать не в ввиде списка уже предопределенных типов.
как быть как сделать свойство типа Foo если это мой класс или структура или что иное, ну или хотябы как параметр метода это сделать.
...
Рейтинг: 0 / 0
04.11.2003, 17:05
    #32315125
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Active X COleVariant свойство нестандартного типа
COM IDL - содержит фиксированный набор типов - его менять нельзя

Если надо - то создавайте новый COM-объект - и используйте его
...
Рейтинг: 0 / 0
04.11.2003, 19:06
    #32315319
vdimas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Active X COleVariant свойство нестандартного типа
нет почему?
можно использовать произвольные структуры, описанные по правилам MS IDL, и описание это, ессно, должно там и располагаться.
VARIANT - это просто описание одной из структур, с точки зрения компилятора IDL.

только, эти структуры никак не отнаследуешь в IDL.
другое дело С++...
кстати, зачем виртуальный деструктор?
зачем вообще виртуальные ф-ции?
ты потерял двоичную совместимость с VARIANT.

насчет мастеров - они могут немногое, порой приходится и "ручками". :)
...
Рейтинг: 0 / 0
05.11.2003, 09:08
    #32315575
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Active X COleVariant свойство нестандартного типа
страуктуры можно - тут вроде class AFunctional
...
Рейтинг: 0 / 0
06.11.2003, 17:09
    #32317456
black zorro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Active X COleVariant свойство нестандартного типа
В общем я переписал это так:

class AFunctional :
public IUnknown
{
public:
static int GUID;
AFunctional(void);
virtual ~AFunctional(void);

virtual double Foo_F (double x) = 0;
virtual double Foo_MaxX () = 0;
virtual double Foo_MinX () = 0;

virtual double Foo_MaxY () = 0;
virtual double Foo_MinY () = 0;
};
int AFunctional::GUID = 12345;

И в классе контроля сделал метод "SET"
void CAGraphCtrl::SetFunctional(VARIANT* fo)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

if ( (reinterpret_cast <AFunctional * > (fo))->GUID != 12345 )
AfxMessageBox (
"Переданный параметр не является объектом типа 'AFunctional *' как ожидалось" );
else

core.Set_Functional (reinterpret_cast <AFunctional * > (fo));

// TODO: Add your dispatch handler code here
}
Это заработало, но самому не нравится, может есть еще идеи-способы.

кстати а что за "наезды" на виртуальный конструктор и чисто виртуальные методы, ну подумаешь у меня в производном классе будет еще таблица vtable
что это изменит с точки зрения передачи через межпроцесное пространство, или как ?
...
Рейтинг: 0 / 0
06.11.2003, 17:14
    #32317460
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Active X COleVariant свойство нестандартного типа
Вообщего для этого используется QueryInterface()
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Active X COleVariant свойство нестандартного типа / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]