R
moin meisters ...
Ich habe ein COMObjekt mit dieser Methode erstellt:
STDMETHODIMP CTAPI1::LineOpen(DWORD dwPrivileges, DWORD dwMediaModes)
{
// ZU ERLEDIGEN: Implementierungscode hier hinzufügen
DWORD dwAPIVersion = (MAKELONG(4,1));
DWORD dwRetAPIVersion = 0;
LINEEXTENSIONID ExtensionID;
LONG lRet = 0;
lRet = lineNegotiateAPIVersion(m_hLineApp, m_dwDeviceID, dwAPIVersion, dwAPIVersion, &dwRetAPIVersion, &ExtensionID);
if( lRet == 0 )
{
lRet = lineOpen(m_hLineApp, m_dwDeviceID, &m_hLine, dwRetAPIVersion, 0, (DWORD)this, dwPrivileges|LINECALLPRIVILEGE_MONITOR, dwMediaModes, NULL);
if( lRet == 0 )
{
MessageBox(NULL, "ok", "LineOpen", MB_OK);
return S_OK;
}
}
MessageBox(NULL, "Error", "LineOpen", MB_OK);
return 1;
}
In meinen Test wird ein Fehler verursacht, weil m_dwDevice nicht geöffnet werden kann ( Gerät ist nicht angeschlossen )
Die Funktion lineNegotiateAPIVersion schlägt schon fehl was ok ist.
Nur im FoxPro Programm wird beim Aufruf der Methode 0 (.NULL.) zurück gegeben,
obwohl die MsgBox mit "Error" erscheint.
Wenn ich E_FAIL zurückgebe, kommt zusätzlich noch ein "Unknown OLE Error".
Ich möchte aber keinen OLE Error sondern einen definierten Rückgabewert meiner
Methode erhalten !
Ein anders Problem: wie erstelle ich eine Methode welche einen BSTR zurück gibt ?
Ich kann zwar beim Erstellen den Rückgabewert BSTR festlegen, beim Kompilieren
wird aber gemeldet, daß die Methode HRESULT nur zurückgeben kann.
Da ich ein Newbie in Sachen ATL bin würde ich mich auch über nen Link freuen
wo diese Problematik erklärt wird. Das Tut von MS habe ich gelesen und auch bei
CodeGuru mich schlau gemacht, aber nix passendes gefunden.
Besten Dank im Voraus
mfg
RB