powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Active X COleVariant свойство нестандартного типа
6 сообщений из 6, страница 1 из 1
Active X COleVariant свойство нестандартного типа
    #32315102
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот создал класс (производный от 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
Active X COleVariant свойство нестандартного типа
    #32315125
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
COM IDL - содержит фиксированный набор типов - его менять нельзя

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

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

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

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
Active X COleVariant свойство нестандартного типа
    #32317460
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщего для этого используется QueryInterface()
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Active X COleVariant свойство нестандартного типа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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