![]() |
[non VCL] - Fehler bei WM_GETTEXT
Nabend.
Also ich habe einen Dialog in einer Resource, den ich dann lade. Inhalt: Edit, Button, Listbox. Jetzt war mein eigentliches Ziel mit der Listbox experimentieren, allerdings wurde daraus nix, da ich den Text aus dem Edit irgendwie nicht bekomme. Die ID vom Edit ist 102, und obwohl der Code keinen Sinn macht, funktioniert er nicht. Das Edit ist danach leer :(
Delphi-Quellcode:
Nix is ok - non VCL oh weh :mrgreen:
function DlgFunc(hwnd: HWND; uMsg: UINT; wParam: WPARAM;
lParam: LPARAM): Bool; stdcall; var s: PAnsiChar; begin Result := True; if uMsg = WM_COMMAND then begin if HiWord(wParam) = BN_CLICKED then if LoWord(wParam) = 3 then begin edit := GetDlgItem(hwnd, 102); SendMessage(edit, WM_GETTEXT, 0, Integer(@s)); SendMessage(edit, WM_SETTEXT, 0, Integer(@s)); end; end else Result := False; end; |
Re: [non VCL] - Fehler bei WM_GETTEXT
Da du offensichtlich mit Dialogen arbeitest, solltest du auch
![]() |
Re: [non VCL] - Fehler bei WM_GETTEXT
Delphi-Quellcode:
Es wird ein Eintrag hinzugefügt in der Listbox(ID = 101), aber der ist immer leer :wall:
SendDlgItemMessage(hwnd, 102, WM_GETTEXT, 0, Integer(@s));
SendDlgItemMessage(hwnd, 101, LB_ADDSTRING, 0, Integer(@s)); //Edit: Grad gesehen: Zitat:
|
Re: [non VCL] - Fehler bei WM_GETTEXT
Das oben war auch nur ein Formalhinweis. Dein Fehler liegt hier:
![]() Zitat:
|
Re: [non VCL] - Fehler bei WM_GETTEXT
Auch Edits und Listboxen werden in meinen Tutorials behandelt, warum liest du sie nicht einfach mal?
|
Re: [non VCL] - Fehler bei WM_GETTEXT
Ja das hat ich auch schon ausprobiert aber da kommt ab 8 Zeichen immer der Error Code 216.
In der Hilfe steht dann Zitat:
|
Re: [non VCL] - Fehler bei WM_GETTEXT
Wenn du einen PChar nimmst, dann solltest du vorher mal Speicher reservieren. ;)
Delphi-Quellcode:
Und damit du genau weißt, wie viel Speicher du brauchst, guckst du vorher mit
procedure TForm1.Button1Click(Sender: TObject);
var s: PChar; begin GetMem(s, length(Edit1.Text)+1); try SendMessage(Edit1.Handle, WM_GETTEXT, length(Edit1.Text)+1, Integer(@s[0])); ShowMessage(s); finally FreeMem(s, length(Edit1.Text)+1); end; end; ![]() Und noch ein heißer Tipp: Lad dir das PSDK runter: ![]() Noch was: Für Dialoge gibt es auch spezielle Dialog-Funktionen, die einem das Leben einfacher machen. Hier wäre das zum Beispiel: ![]() |
Re: [non VCL] - Fehler bei WM_GETTEXT
Zitat:
|
Re: [non VCL] - Fehler bei WM_GETTEXT
Stimmt. 216 ist nämlich die Access Violation und die kommt, weil du für deinen PChar keinen Speicher alloziierst. ;)
|
Re: [non VCL] - Fehler bei WM_GETTEXT
Probier ich gleich ma aus. Hab vergessen Prog und Dialog zu speichern :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz