Funktionspointer über Sendmessage schicken



  • (MSVisual C++ 2008 standard)

    hallo,

    moechte gerade die Windows API ansprechen... da sagt mir microsoft, dass ich

    ::SendMessage(camWindowHandle, WM_CAP_SET_CALLBACK_ERROR, 0, ??? );
    

    bei den ??? eine callback funktion mitsenden soll. gesagt getan.

    ...
            ...
            // irgendwo in meiner ref class
            private: delegate bool dCamError(HWND hWnd, int nID, LPCTSTR lpsz);
    	private: dCamError^ OnCamError;
    	private: static bool camError(HWND hWnd, int nID, LPCTSTR lpsz){
                                       // mach was
    				   return true;
    			   }
            ...
            // im konstructor
            myClass(void){
                   OnCamError = gcnew dCamError(&camError);
            }
    

    also das delegate mitsenden

    ::SendMessage(camWindowHandle, WM_CAP_SET_CALLBACK_ERROR, 0, OnCamError);
    

    natuerlich fehlermeldung

    dCamError ^' in 'LPARAM' nicht möglich

    weil ja das delegate eigentlich ne klasse ist, die die ganzen delegate mechanismen kapselt... und irgendwie managed vs unmanaged code, was mir so langsam den letzten nerv raubt... kann mir jemand helfen??


  • Mod

    1. Ist das C++/CLI.
    2. Könntest Du einen Zeiger auf eine Methode einer Klasse auch nicht in normalen C++ sezen, solange die nicht statisch ist.

    So müsstees gehen.
    Erzeuge eine Native Funktion die einen Parameter (LPARAM) aufnimmt.
    Diese ist Dein Callback Punkt.
    Pinne Deine Managed Klass und wandle den Zeiger in einen LPARAM um.
    Sende die statische Mehtode + Deinen gepinnten und gecasteten Zeiger an Deine Native Fensterklasse.
    Deine Fensterklasse kann nun die statische Funktion mit dem LPARAM Wert aufrufen den Du übergeben hast.
    In Deiner statischen Funktion cstest Du den LPARAM zurück in ein managed Objekt und rufst Dort Deinen managed Handler auf.

    Ich verschiebe den Thread.



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • wow, danke... deine hinweise haben mich immerhin zum ziel geführt... es ging über das pinnen o.O

    Allerdings gebe ich zu, dass ich das eher über try and error geschafft habe und nur eine ganz schwammige Vorstellung davon habe, was da vor sich geht... die meisten Schwierigkeiten jedoch habe ich in dieser Sprache meine Programme im vornherein zu planen... meine letzte Strategie war es nur im mannaged C++ zu arbeiten... dann werd ich aber plötzlich gezwungen, dass doch wieder mit dem nativen zu mischen XD

    Ich programmiere schon nun ne ganze weile... jetzt wurde ich zum ersten mal mit ms visual c++/cli konfrontiert... und ich finde es ist das reinste GEWUCHERE.

    hast du vielleicht ein paar tips, wo man das nachlesen kann, um ein wenig durchblick zu erlangen ?

    danke nochmals


Anmelden zum Antworten