GetWindowText will plötzlich nicht!
-
Hey!
Ich komm einfach nicht weiter. Habe ein Projekt geschrieben, und dort einen 100% gültigen Handle abgefragt:
char* buf;
GetWindowText(windowHandle, buf, 100);Funktioniert auch wunderbar.
Dann habe ich ein zweites Projekt erstellt, und den Code vom ersten Projekt kopiert. Aber nun meckert der Compiler:"The variable "buf" is being used without being defined"
Und wenn ich char* buf = 0; schreibe, geht auch der debugger an mit irgendeiner string-funktion length... Also GetWindowText liefert im zweiten Projekt 0 zurück, aber auch dort ist das windowHandle 100%, wirklich 100% gültig, da ich auch andere Dinge damit problemlos machen kann! Und das Fenster ist immer dasselbe.
Starte ich in Projekt1, funktioniert alles. Starte ich in Projekt 2, funktioniert es nicht (Code 1:1, selbe header, selbe libraries !)
Woran kann das nur liegen? Ich komm da jetzt schon 2 Stunden nicht weiter...
Danke!
MfG
-
Oh man, grade rausgefunden...
Also im RELEASE mode in Projekt 2 funktioniert es nun auch... Warum eigentlich?
Und noch was:
Warum muss ich char* buf mit 0 initialisieren, dmait beim Beenden des Programms nicht der Fehler"Windows has triggered a breakpoint in bla.exe
This may be due to a corruption of the heap, and indicates a bug in bla.exe or any of the DLLs it has loaded.
The output window may have more diagnostic information"
auftritt?
Passiert aber erst, wenn ich die Funktion, welche char* buf; erstellt, zwei mal aufrufe.
MfG
-
Wenn das klappt, ist es Zufall.
Dein Zeiger sollte schon auf einen gültigen, von dir angelegten Speicherbereich zeigen. Nicht irgendwohin (uninitialisiert) oder auf Null. Das sind aber Grundlagen.
-
bei char* bla ist bla erstmal nur eine Adresse. Dieses muss aber auf einen Speicherbereich zeigen, in den GetWindowText() schreibt.
Wenn du bla nicht initialisierst zeigt es ins nirvada, sodass höchstwahrscheinlich dein programm wegen einer zugriffsverletzung abstürzt.
Also:
char Buf[100];
GetWindowText(hwnd, Buf, 100);
-
char* buf=new char[GetWindowTextLength(hWnd)+1];Wäre das nicht eleganter, weil man nicht unnötig Speicher belegt?
-
Alles klar, danke

-
TCHAR...
-
CodeFinder steck dir dein Gespamme mal bitte sonstwohin, ist ungemein nervig. Diese Postcount Spielchen kannst du woanders veranstalten. Bitte darum den Postcounter global oder speziell für den Account CodeFinder einzufrieren.
-
LuckyStriker schrieb:
CodeFinder steck dir dein Gespamme mal bitte sonstwohin, ist ungemein nervig. Diese Postcount Spielchen kannst du woanders veranstalten. Bitte darum den Postcounter global oder speziell für den Account CodeFinder einzufrieren.
Deine Sperenzchen sind mir schon seit geraumer Zeit negativ aufgefallen. Ich merk mir dein Gesicht...