SendMessage Returnwert



  • Hi,

    ich möchte gern bei einer SendMessage() einen CString zurückgeben. Leider funktioniert mein Ansatz noch nicht, bekomme immer einen Ausnahmefehler.

    LRESULT LcdClass::OnGetParam(WPARAM wParam, LPARAM lParam)
    {
      CString value ("test");
    
      return (LRESULT) value.GetString(); 
    }
    
    //hier ist der Code in dem ich die SendMessage generiere
    
    LRESULT result = wnd->SendMessage(...); 
    
    CString value = (LPTCSTR) result;
    

    Kann mir jmd kurz erklären, wie ich es richtig machen muss, damit es funktioniert?

    LG
    Udo



  • Das kann auch nicht gehen, da dein CString nach verlassen von OnGetParam() wieder weg ist, der wird ja nur für die laufzeit von OnGetParam() auf dem Stack erzeugt. Entweder du erstellst den CString mit new und gibst einen zeiger zurück, der aufrufer muß sich dann um das delete kümmern, finde aber die Methode Persönlich schlecht. Oder du lässt den aufrufen den CSting erstellen und übergibst einen Zeiger auf diesen in lParam, oder sollte der schon benutzt sein, dann einen Zeiger auf eine Stuktur in lParam. LRESULT kann dir eigentlich nur zurückgeben ob die Funktion IO oder NIO gelaufen ist, also die Länge vom Sting den du in den CString geschrieben hast zum Beispiel.


Log in to reply