Frage

Ich bin irgendwie neu in c++ und ich versuche, um ein Spiel zu erstellen.Ich habe ein 2d-array RECT_GRID von Rechtecken.Ich habe ein 2d-array RASTER von unsigned short.Ich fülle das Rechteck-array bei WM_CREATE

Die WM_PAINT-event Rechtecke Farben für alle Elemente im array.Die Farbe des Rechtecks basiert auf dem Wert von GRID[x][y]

Ich machte es also, wenn Sie die Taste nach unten gedrückt wird, ändert sich die Farbe der Rechtecke durch Einstellung RASTER[1][XMOVE] = in eine andere Farbe dann erlischt die client-Rechteck

Im Grunde, was passiert ist, es funktioniert gut für eine Weile, aber irgendwann ist es einfach aufhört Zeichnung Zeug.Ich habe meine XMOVE Variablen beim Debuggen habe ich überprüft, indem grid-Werte und Sachen, und alles ist in Ordnung.Wenn ich entfernen Sie die for-Schleife aus dem paint-Ereignis und den Fokus auf 1 bestimmte Rechteck, es ist nie fehl, aber wenn ich versuche, neu zu zeichnen, Sie alle auf einmal, nach rund 20 mal, es Stoppt die Malerei Dinge.Was könnte der Grund HIERFÜR sein?Ich bin neu in c++ und ich Wette, ich bin nicht die Malerei richtig und verursacht einen überlauf oder so etwas.

Wenn jemand erklären könnte, was falsch läuft, oder eine richtige Weg, dies zu tun, ich würde es wirklich schätzen.Ich konnte nichts finden wie in diesem Beispiel auf Google.Vielen Dank

EDIT:

Ich bin mit 3 global Bürsten HBRUSH A;HBRUSH B;HBRUSH C;

und wenn ich Sie ändern, sage ich immer A = MakeBrush(NUM);

ami habe ich mit Pinsel richtig?

War es hilfreich?

Lösung

Meine erste Vermutung, wenn Sie insgesamt GDI/C++ - Neuling sind, ist, dass Sie wahrscheinlich erstellen eine Menge Stifte und Pinsel.Dies sind die eingeschränkten Ressourcen in Windows.Sie können nur so viele von Ihnen, bevor Sie anfangen zu Steuer Ihre Ressourcen.Also entweder machen die Pinsel und Stifte und Windows, etc, alles auf einmal und Wiederverwendung auf oder entsorgen Sie Sie ordnungsgemäß, wenn Sie fertig sind.Ich empfehle immer eine Kopie von "die Bibel" (http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Microsoft/dp/157231995X/ref=sr_1_1?ie=UTF8&s=books&qid=1252788457&sr=8-1) und Lesen Sie die Kapitel, die dort über die Zeichnung.

BEARBEITEN:Es klingt nicht wie Sie sind, ändern Ihre Pinsel richtig, aber da ich nicht sehen kann, den code für MakeBrush, weiß ich nicht.Du bist wahrscheinlich erstellen eine Menge von Pinseln hinter die kulissen und Sie nicht einmal wissen es.Im ernst, Holen Sie sich eine Kopie von Petzolds Buch und verbringen eine Stunde oder zwei.Sie werden am Ende mit mehr Haar auf Ihrem Kopf-höher!;-)

Andere Tipps

Sie werden bemerken, alle GDI-Beispiele, eine 'CreatePen" oder "CreateSolidBrush" wird gefolgt von einem Objekt löschen.Dies ist, weil Sie begrenzte Ressourcen in windows, und Sie können Auslaufen, wenn Sie nicht löschen Sie, wenn Sie fertig sind.

PAINTSTRUCT Ps;
HDC hDC = BeginPaint(hWnd, &Ps);
HBRUSH NewBrush = CreateSolidBrush(RGB(250, 25, 5));

SelectObject(hDC, NewBrush);
Rectangle(hDC, 20, 20, 250, 125);
DeleteObject(NewBrush);
EndPaint(hWnd, &Ps);

Wenn Sie vergessen zu schließen die 'DeleteObject' nennen, dann werden Sie Probleme haben, nachdem Sie die Bürsten zur Verfügung.Es ist tatsächlich Spaß zu versuchen =)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top