[Gelöst] GetWindowRect Heap beschädigung o_O??
-
Hallo liebe c++fan-gemeinde
da ich im gegensatz zu euch noch ein ziemliche noob bin was c++ angeht habt ich da mal ne frage an eucherstmal zu meinem system:
WINXP, VS 2005 mit QT Trolltech(bei dieser func eig nicht relevant)mein error:
Dies kann auf eine Beschädigung des Heaps zurückzuführen sein und weist auf ein Problem in actions.exe oder in einer der geladenen DLLs hin.die dateien:
main.cpp
#include "main.h" #include "windowhandles.h" #include "actions.h" int main(int argc, char *argv[]) { winHandlerClass test; test.findWindows(); }windowhandles.h
#include <windows.h> #include <string> using namespace std; struct hwndStrLprect { HWND hwnds[3]; string titles[3]; LPRECT coords[3]; /* geeky: von LPRECT auf RECT */ }; class winHandlerClass { public: //sucht bei gegebenen fenster name(string) das jeweilige handle dazu void findWindows(); };windowhandles.cpp
#include "windowhandles.h" BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam) { hwndStrLprect windowHandles; const int ANZAHLARRAYS = 3; windowHandles.titles[0] = "NAME DES ERSTEN FENSTERS(tragt einfach mal nen fenster ein ;))"; windowHandles.titles[1] = "NAME DES ZWEITEN FENSTERS"; windowHandles.titles[2] = "blubb"; char title[500] = { 0 }; GetWindowTextA(hWnd, (LPSTR)title, GetWindowTextLength(hWnd) + 1); for (int a = 0; a < ANZAHLARRAYS; a++) { if (strstr(title, windowHandles.titles[a].c_str())) { GetWindowRect(hWnd, windowHandles.coords[a]); windowHandles.hwnds[a] = hWnd; return false; } } return TRUE; } void winHandlerClass::findWindows(){ EnumWindows(MyEnumProc, 0); }hab ehrlich gesagt gar kein plan woran das liegt, scheint ja eig alles in Ordnung zu sein(mehr oder weniger)

wäre echt dankbar falls einer von euch mir einen ratschlag geben könnte
mfg
-
LPRECT coords[3]; <-- LP = "Large Pointer"
Der Pointer zeigt allerdings weiss gott wo hin.
GetWindowRect() erwartet aber das der Zeiger den er da bekommt auf gültigen Speicher zeigt.Lass das LP weg und gib bei GetWindowRect() dann den Zeiger an.
-
//edit:
habe es so verändert wie du gesagt hast geekykomischer error, tritt noch immer auf o_O
manchmal tritt er sogar nicht auf O_o
-
struct hwndStrLprect { HWND hwnds[3]; string titles[3]; RECT coords[3]; };
-
sri schrieb:
struct hwndStrLprect { HWND hwnds[3]; string titles[3]; RECT coords[3]; };danke, danke euch beiden es funktioniert...