WM_GETTEXT Problem
-
Hi,
ich habe ein kleines Problem.
Ich will auf einem edit Feld einen String auslesen.Diesen String will ich in eine andere Funktion übertragen,
aber ich dauernd gehen gibt es irgendwelche Typecastingfehler.Ich hoffe mir kann jemand helfen
-
Wenn du schon keinen Code zeigst, sag doch wenigstens welche Fehlermeldungen du konkret bekommst

-
"irgendwelche typecastingfehler" ist eine sehr sehr grobe beschreibung deines problems
-
Um welche Cast-Fehler handelt es sich denn?
char result[1000]; SendMessage(handleEditbox, WM_GETTEXT, sizeof(result), (ULONG)result);
-
das ist die definition von SendMessage():
SendMessage( __in HWND hWnd, __in UINT Msg, __in WPARAM wParam, __in LPARAM lParam );wieso castest du in ulong?
-
Das ist wohl durch ständiges kopieren zwischen den Projekten zustande gekommen.
LPARAM ist halt ein long und ULONG ist halt ein unsigned long. Da LPARAM die Adresse des Puffers bei WM_GETTEXT darstellt und nicht negativ ist, sollte es an dieser Stelle keine Probleme geben.
-
was zeigt den dein compiler jetzt genau für einen fehlern an?
-
Hi,
also ich habe das Codebeispiel genommen
http://www.artima.com/forums/flat.jsp?forum=76&thread=18485std::string GetWindowText( HWND wnd ) { std::string text; WPARAM length = SendMessage( wnd, WM_GETTEXTLENGTH, 0, 0 ); if( length > 0 ) { char *buffy = new char [length+1]; LRESULT got = SendMessage( wnd, WM_GETTEXT, length+1, (LPARAM)buffy ); if( (LRESULT)length == got ) text = buffy; delete [] buffy; } return text; }leicht abgeändert
Nun habe ich diesen Quelltext eingesetzt.
aber irgendwie wird die zweite if-Bedingung nicht passiert.
Ich weis nict woran es liegen kann.
Ich will lediglich dann den fertigen String an eine Funktion übergeben.\_\
-
Grützenfrickler!
// Ungetestet std::string GetWindowText(HWND windowHandle) { std::string text; unsigned int size = SendMessage(windowHandle, WM_GETTEXTLENGTH, 0, 0) + 1; text.resize(size); SendMessage(windowHandle, WM_GETTEXT, size, reinterpret_cast<LPARAM>(&text[0])); return text; }