ATL: [propget] wird nie aufgerufen in ActiveX-Control

15/01/2008 - 23:12 von Volker Birk | Report spam
Hallo,

hab hier einen schwer zu debuggenden Fehler:

__interface IDialog : public IDispatch
{
[propput, id(101), bindable, displaybind, requestedit]
HRESULT x([in] BSTR newVal);
[propget, id(101), bindable, displaybind, requestedit]
HRESULT x([out, retval] BSTR* pVal);
}

So ist mein Interface für das Control definiert.

Das Problem ist: get_x() wird nie aufgerufen, weder durch das Einbetten
in eine Webseite und Verwenden von <param name="x" value="test" />, noch
wenn ich den OLE-Testcontainer verwende.

Ich hab mal eine Property-Page erstellt. Die funktioniert entsprechend
ebenfalls nicht. Man kann zwar in der Property-Page einen Wert
festlegen, dieser wird aber nicht mehr ausgelesen, weil die get_x() nie
aufgerufen wird, auch nicht beim Öffnen der Property-Page.

Starte ich die get_x() im OLE-Testcontainer direkt, so geht es.

Hat jemand eine Idee?

Viele Grüsse,
VB.
The file name of an indirect node file is the string "iNode" immediately
followed by the link reference converted to decimal text, with no leading
zeroes. For example, an indirect node file with link reference 123 would
have the name "iNode123". - HFS Plus Volume Format, MacOS X
 

Lesen sie die antworten

#1 Markus Schaaf
16/01/2008 - 14:04 | Warnen spam
Volker Birk schrieb:

__interface IDialog : public IDispatch
{
[propput, id(101), bindable, displaybind, requestedit]
HRESULT x([in] BSTR newVal);
[propget, id(101), bindable, displaybind, requestedit]
HRESULT x([out, retval] BSTR* pVal);
}

So ist mein Interface für das Control definiert.

Das Problem ist: get_x() wird nie aufgerufen, weder durch das Einbetten
in eine Webseite und Verwenden von <param name="x" value="test" />, noch
wenn ich den OLE-Testcontainer verwende.



Vollstàndiges Beispiel ist immer hilfreich. Hier also ein paar
Rateversuche: Fehlende Attribute für `IDialog` (dual, uuid,
library_block), irgendein Compiler-Problem. Schau immer zuerst
die Type-Library an (OLE-COM Object Viewer -> File -> View TypeLib)!

Ähnliche fragen