S
Hallo
Noch ein Problem zu \1: Es werden keine Events und Properties exportiert.
Hier ein Auszug aus einer idl Datei eines einfachen ActiveX. Man sieht eine Property, 3 Methoden, und 1 Event
[ uuid(F84CC32B-0656-4E83-8135-55302999B9CA),
helpstring("Dispatch interface for xtest Control")]
dispinterface _Dxtest
{
properties:
[id(3) , helpstring("property someprop")] LONG someprop;
methods:
[id(DISPID_ABOUTBOX)] void AboutBox();
[id(1), helpstring("method hurra")] void hurra(void);
[id(2), helpstring("method kkkkk")] void kkkkk(void);
[id(4), propget, helpstring("property agetprop")] BYTE agetprop(CHAR val);
[id(4), propput, helpstring("property agetprop")] void agetprop(CHAR val, BYTE newVal);
};
// Event dispatch interface for CxtestCtrl
[ uuid(A23A9C57-39E0-4198-8FFE-63AF748D6ED5),
helpstring("Event interface for xtest Control") ]
dispinterface _DxtestEvents
{
properties:
// Event interface has no properties
methods:
[id(1)] void MyEvent(DOUBLE kindofdbl);
};
Füge ich das in einen Container ein mit der ADD Funktion auf das Projekt (-> CLASS -> MFC CLASS FROM ACTIVE , was mit eine CWnd abgeleitete Klasse generiert wie früher unter VS6 ( Menu PROJECT -> ADD TO PROJECT -> COMPONENT AND CONTROL), dann sieht das include File so aus:
// Attributes
public:
// Operations
public:
void AboutBox()
{
InvokeHelper(DISPID_ABOUTBOX, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void hurra()
{
InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void kkkkk()
{
InvokeHelper(0x2, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
unsigned char get_agetprop(signed char val)
{
unsigned char result;
static BYTE parms[] = VTS_I1 ;
InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_UI1, (void*)&result, parms, val);
return result;
}
void put_agetprop(signed char val, unsigned char newValue)
{
static BYTE parms[] = VTS_I1 VTS_UI1 ;
InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, val, newValue);
}
Die Methoden und GET/SET Varianten sind vorhanden, aber das reine Property und der Event sind verschwunden. Die kann ich zwar produzieren, wenn ich anstatt "MFC CLASS FROM ACTIVE X" den Klassentyp "MFC CLASS FROM TYPELIB" auswähle ( dann noch #ifndef headerflag geschichten einbaue usw..), aber damit kriege ich keine windows klasse die mit dem Steuerelement zusammenpasst ( Dialogbasiert generiert )
Hat jemand eine Idee warum es bei der Klassengenerierung über ActiveX die Properties und Events zerhaut?
Danke
Stefan