
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.11.2003, 16:55
|
|||
|---|---|---|---|
|
|||
Active X COleVariant свойство нестандартного типа |
|||
|
#18+
Вот создал класс (производный от 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 если это мой класс или структура или что иное, ну или хотябы как параметр метода это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2003, 17:05
|
|||
|---|---|---|---|
|
|||
Active X COleVariant свойство нестандартного типа |
|||
|
#18+
COM IDL - содержит фиксированный набор типов - его менять нельзя Если надо - то создавайте новый COM-объект - и используйте его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2003, 19:06
|
|||
|---|---|---|---|
Active X COleVariant свойство нестандартного типа |
|||
|
#18+
нет почему? можно использовать произвольные структуры, описанные по правилам MS IDL, и описание это, ессно, должно там и располагаться. VARIANT - это просто описание одной из структур, с точки зрения компилятора IDL. только, эти структуры никак не отнаследуешь в IDL. другое дело С++... кстати, зачем виртуальный деструктор? зачем вообще виртуальные ф-ции? ты потерял двоичную совместимость с VARIANT. насчет мастеров - они могут немногое, порой приходится и "ручками". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.11.2003, 09:08
|
|||
|---|---|---|---|
|
|||
Active X COleVariant свойство нестандартного типа |
|||
|
#18+
страуктуры можно - тут вроде class AFunctional ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2003, 17:09
|
|||
|---|---|---|---|
|
|||
Active X COleVariant свойство нестандартного типа |
|||
|
#18+
В общем я переписал это так: 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 что это изменит с точки зрения передачи через межпроцесное пространство, или как ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=LiS&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 634ms |
| total: | 784ms |

| 0 / 0 |
