|
|
|
События в COM
|
|||
|---|---|---|---|
|
#18+
Есть CoClass, у него есть события. Я получил интерфейс(INeroDrives), но в нем ничего типа OnDone нет (по документацииим они есть у CoClass'а). Зато они обьявлены у всяких там : interface _INeroEvents : public TDispWrapper<IDispatch> видимо в Com как то хитро надо работать с событиями Помогите. C ув. Tors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2004, 17:44 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
I[что-то]Events - обычно так обзываются интерфейсы для работы с событиями, их и нужно использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 07:43 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
Если это СОМ то сделай Project->Import type library -> install да и не мучайся , builder все сам за тебя сделает , всмусле компоненту . i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 09:19 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
автор Если это СОМ то сделай Project->Import type library -> install да и не мучайся , builder все сам за тебя сделает , всмусле компоненту . Я именно так исделал. автор I[что-то]Events - обычно так обзываются интерфейсы для работы с событиями, их и нужно использовать. Пытаюсь получить I[что-то]Events, NULL. Правда не проверял, что возвращает HRESULT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 09:29 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
Эээ а ты как пытаешся работать с событиями ? там же ничего мудренного нету тем более что реализацию приемника событий на стороне клиента сделал для тебя уже билдер для этой уже полученной компененты. i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 09:34 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
Есть Com обьекты которые добавились в палитру(их можно создавать непосредственно, как написано в доке по NeroCom), а есть, интерфейсы которых получаются вызовом, например, Nero->GetDrives. B последних нету ничего похожего на OnXxx. Зато OnXxx есть у _INeroXxxEvents, это диспинтерфейс, и : HRESULT hr=tmpdrive->QueryInterface(DIID__INeroDriveEvents,(void **)&drvevents); if(hr==E_NOINTERFACE) { ShowMessage("Вот хр...!!!"); } Не поддерживается он. Пролучал интерфейс самого-самого главного обьекта, оттуда: HRESULT hr=INero->QueryInterface(DIID__INeroDriveEvents,(void **)&drvevents); Не поддерживает!!! Кстати диспинтерфейсы получать надо тем же макаром, что и интерфейсы, иликак по другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 10:37 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
Тогда тебе придется самому писать приемника событий интерфейса диспетчеризации :) Возможно даже так ... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 10:55 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
автор Тогда тебе придется самому писать приемника событий интерфейса диспетчеризации :) Не нравится мне эта перспективка. Думаю есть способ попроще. В VB у этого интерфейса тоже нету OnXxx. Но он обявлен: Public WithEvents drive As NeroDrive После чего для него можно определить событие как для любого компонента. Есть ли что нить подобное в бульдере? Чтоб я мог определить события, не обязательно c помощью IDE, ручками. C ув. Tors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 13:21 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
Двже не знаю как на VB я его в глаза не видел .. i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 13:41 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
interface _INeroDriveEvents : public TDispWrapper<IDispatch> Как бы мне получить этот хе...в диспинтерфейс? Какого он не поддерживается? Поможите, уже два дня на месте стою!!!!!!!!!! C ув. Tors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 15:13 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
template <class T> class _INeroDriveEventsDispT : public TAutoDriver<_INeroDriveEvents> { public: _INeroDriveEventsDispT(){} void Attach(LPUNKNOWN punk) { m_Dispatch = static_cast<T*>(punk); } HRESULT __fastcall OnProgress(long* ProgressInPercent/*[in,out]*/, VARIANT_BOOL* Abort/*[in,out]*/); HRESULT __fastcall OnAddLogLine(Nerolib_tlb::NERO_TEXT_TYPE* TextType/*[in,out]*/, BSTR* Text/*[in,out]*/); HRESULT __fastcall OnSetPhase(BSTR* Text/*[in,out]*/); HRESULT __fastcall OnDisableAbort(VARIANT_BOOL* EnableAbort/*[in,out]*/); HRESULT __fastcall OnWriteDAE(long* TrackNumber/*[in,out]*/, VARIANT* Data/*[in,out]*/); HRESULT __fastcall OnDoneDAE(VARIANT_BOOL* Ok/*[in,out]*/); HRESULT __fastcall OnDoneErase(VARIANT_BOOL* Ok/*[in,out]*/); HRESULT __fastcall OnDoneBurn(Nerolib_tlb::NERO_BURN_ERROR* StatusCode/*[in,out]*/); HRESULT __fastcall OnAborted(VARIANT_BOOL* Abort/*[in,out]*/); HRESULT __fastcall OnDoneImport(VARIANT_BOOL* Ok/*[in,out]*/, Nerolib_tlb::INeroFolder** Folder/*[in,out]*/, Nerolib_tlb::INeroCDStamp** CDStamp/*[in,out]*/); HRESULT __fastcall OnMajorPhase(Nerolib_tlb::NERO_MAJOR_PHASE* phase/*[in,out]*/); HRESULT __fastcall OnSubTaskProgress(long* ProgressInPercent/*[in,out]*/, VARIANT_BOOL* Abort/*[in,out]*/); HRESULT __fastcall OnDoneWaitForMedia(VARIANT_BOOL* Success/*[in,out]*/); HRESULT __fastcall OnDoneCDInfo(Nerolib_tlb::INeroCDInfo* pCDInfo/*[in]*/); HRESULT __fastcall OnDoneImport2(VARIANT_BOOL bOk/*[in]*/, Nerolib_tlb::INeroFolder* pFolder/*[in]*/, Nerolib_tlb::INeroCDStamp* pCDStamp/*[in]*/, Nerolib_tlb::INeroImportDataTrackInfo* pImportInfo/*[in]*/ , Nerolib_tlb::NERO_IMPORT_DATA_TRACK_RESULT importResult/*[in]*/); HRESULT __fastcall OnDriveStatusChanged(Nerolib_tlb::NERO_DRIVESTATUS_RESULT driveStatus/*[in]*/); }; typedef _INeroDriveEventsDispT<_INeroDriveEvents> _INeroDriveEventsDisp; C ув. Tors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 15:16 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
нет , я не понимаю , что у тя билдер не сделал реализацию приема событий ?? или как ? i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 15:45 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
Я бы вообще тебе посоветовал , создай свой COM обьект , простой , где просто метод ,в этом методе возбуждается событие зарегестрируй , сделай клитента (тоесть просто import type library ) и в файле xxx_OCX.cpp который появится посмотри , как реализовано прием событий ... i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 15:49 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
[quote]нет , я не понимаю , что у тя билдер не сделал реализацию приема событий ?? или как ? [/quote] Реализация приема событий- что это такое? Есть Com-обьект, по доке у него есть события, но в палитре его нету. Есть интерфейс у него, который я получил. Есть функция обработчик. Как мне задать обработчик события для Com- обьекта? TNero - ес ть в палитре, длоя него определить событие не проблема. C ув. Tors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 16:00 |
|
||
|
События в COM
|
|||
|---|---|---|---|
|
#18+
Реализация приема событий- что это такое? К сожалению не знаю я - есть ли в билдере волшебная кнопка какая.. Если по простому( вдруг поможет :)) : Реализация приема событий - клиент должен создать класс(не абстрактный) который будет реализовывать все методы этого, так называемого , dispинтерфейса искомого объекта.. (т.е. отнаследоватся от этого интерфейса) Далее создать и передать указатель на экземпляр этого класса ком объекту ( ключевое слово IConnectionPoint) .. После этого событие будет получаться клиентом так: Исходный Com объект проверяет все подключенные к нему клиентские объекты и вызывает соответствующие методы .. Вроде так :).. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 21:21 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2035029]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 374ms |

| 0 / 0 |
