Ik heb in C++Builder een ActiveX component geschreven met een eigen geschreven event. Als ik mijn ActiveX component in een nieuw project importeer en zodra ik bijvoorbeeld een messagebox achter het event knoop, wordt deze keurig geshowed zodra ik het event afvuur.
Nu heb ik het component ook in Microsoft Visual C++ 6.0 geimporteerd en hier ook een messagebox achter het event geknoopt. Zodra ik nu het event afvuur, gebeurd er helemaal niets. Als ik een ander event pak, bijvoorbeeld OnClick, dan werkt deze wel (de rest van het ActiveX component werkt ook prima). Waarom werkt mijn event in MSVC niet goed?
Als ik het component in de ActiveX Control Test Container draai, dan zie je dat het event wel wordt uitgevoerd:
Heeft iemand enig idee waarom het ene event en de rest van het component prima werkt, terwijl de andere event het niet doet? En daarnaast, waarom hij het wel in de testcontainer en in op C++Builder from ook?
Alvast bedankt!!!
[edit: layout aangepast]
Nu heb ik het component ook in Microsoft Visual C++ 6.0 geimporteerd en hier ook een messagebox achter het event geknoopt. Zodra ik nu het event afvuur, gebeurd er helemaal niets. Als ik een ander event pak, bijvoorbeeld OnClick, dan werkt deze wel (de rest van het ActiveX component werkt ook prima). Waarom werkt mijn event in MSVC niet goed?
Als ik het component in de ActiveX Control Test Container draai, dan zie je dat het event wel wordt uitgevoerd:
En als ik met de OLE/COM ITypelib vieuwer kijk naar mijn geregistreerde componenten ziet alles er ook correct uit, namelijk:ActiveWebServer Control: OnPaint
ActiveWebServer Control: FileAndParamsEvent {FilenameOut=-1}{ParamsOut=-1}{FilenameIn=}{ParamsIn=}
Want in C++Builder is de volgende IDL gegenereerd voor mij gegenereert:[id(0x0000000a)]
void FileAndParamsEvent(
[out] VARIANT* FilenameOut,
[out] VARIANT* ParamsOut,
[in] VARIANT FilenameIn,
[in] VARIANT ParamsIn);
De code van MSVC is de volgende:[
id(0x0000000A)
]
void FileAndParamsEvent([out] VARIANT * FilenameOut, [out] VARIANT * ParamsOut, [in] VARIANT FilenameIn, [in] VARIANT ParamsIn );
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| // Generated message map functions //{{AFX_MSG(CV2Dlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnOnClickActivewebserver1(); afx_msg void OnFileAndParamsEventActivewebserver1(VARIANT FAR* FilenameOut, VARIANT FAR* ParamsOut, const VARIANT FAR& FilenameIn, const VARIANT FAR& ParamsIn); DECLARE_EVENTSINK_MAP() //}}AFX_MSG DECLARE_MESSAGE_MAP() |
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| BEGIN_EVENTSINK_MAP(CV2Dlg, CDialog) //{{AFX_EVENTSINK_MAP(CV2Dlg) ON_EVENT(CV2Dlg, IDC_ACTIVEWEBSERVER1, 2 /* OnClick */, OnOnClickActivewebserver1, VTS_NONE) ON_EVENT(CV2Dlg, IDC_ACTIVEWEBSERVER1, 10 /* FileAndParamsEvent */, OnFileAndParamsEventActivewebserver1, VTS_PVARIANT VTS_PVARIANT VTS_VARIANT VTS_VARIANT) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() void CV2Dlg::OnOnClickActivewebserver1() { MessageBox("BLA","Bla",MB_OK); } void CV2Dlg::OnFileAndParamsEventActivewebserver1(VARIANT FAR* FilenameOut, VARIANT FAR* ParamsOut, const VARIANT FAR& FilenameIn, const VARIANT FAR& ParamsIn) { MessageBox("BLA","Bla",MB_OK); } |
Heeft iemand enig idee waarom het ene event en de rest van het component prima werkt, terwijl de andere event het niet doet? En daarnaast, waarom hij het wel in de testcontainer en in op C++Builder from ook?
Alvast bedankt!!!
[edit: layout aangepast]
[ Voor 5% gewijzigd door PKP B-Man op 06-06-2003 14:24 ]