COM



  • Hallo,

    wie kann ich in meiner COM-Schnittstelle Enumerationen (enum) verwenden und somit meine Fehlercodes definieren?

    Und wie kann ich diese Fehlercodes dann in einer meiner Methoden zurückgegeben?

    Danke im voraus.

    (Ein kleines Bsp. wäre nicht schlecht)



  • In COM verwendet man doch IErrorInfo bzw. ICreateErrorInfo



  • Aber ich will doch einfach Werte (vom Typ HResult) zurückgegeben, und da wären doch enumerationen die einfachste Möglcihkeite diese zu definieren.

    typedef [v1_enum] enum {
    
    /*
    Benutzerdefinierte Fehlercodes ab 0x80040200 (Hex) 
    */
    
        err_NO_PROTOCOLPATH = 0x80040201,   
    } INewsletterErrorCodes;
    

    Aber wo mussich diese Enumeration einfügen um sie für den Anwender in Typbibliothekenbeschreibung (OLE-Viewer) sichtbar zu machen.



  • Auszug aus eine *.idl-Datei

    [helpstring("Bitflags for Modifiable Behaviors")]
        enum {
            DAContinueTimeline = (1L << 0),
            DASwitchFinal      = (1L << 1),
            DASwitchNextTick   = (1L << 2),
        };
        typedef enum {DAEmpty = 0, DASolid = 1, DADash = 2} DA_DASH_STYLE;
    
        [
            uuid(9CADDC0C-AD56-11d1-9FF8-00C04FA32195),
            helpstring("DirectAnimation Behavior2"),
            local,
            object,
            pointer_default(unique),
            oleautomation,
            hidden,
            dual
        ]
        interface IDA2Behavior : IDABehavior
        {
            HRESULT     SwitchToEx([in] IDABehavior * newBvr, [in] DWORD dwFlags);
            HRESULT     ApplyPreference([in] BSTR pref,
                                        [in] VARIANT val,
                                        [out, retval] IDABehavior **bvr);
    
            HRESULT     ExtendedAttrib([in] BSTR arg1,
                                       [in] VARIANT arg2,
                                       [out, retval] IDABehavior **ppResult);
    
            HRESULT     LineDashStyle([in] DA_DASH_STYLE id);
        }
    

    [ Dieser Beitrag wurde am 20.03.2003 um 12:19 Uhr von RenéG editiert. ]


Anmelden zum Antworten