WinAPI und das Drücken von Tasten
-
Hmm also so recht versteh ich dein Code auch nicht. Erstmal kann ich mein Vorredner nur zustimmen und dir Sagen das man für ein Windows-Programm (kein Windows-Konsolen-Programm) WinMain benutzt. Evtl. solltest du dir ncoh mal nen tut oder so durchlesen. Und ich glaube du solltest das mit dem Zeichnen nicht in der Nachricht von WM_PAINT machen. Male immer wenn ne Taste gedrückt wird oder in einer WM_TIMER Nachricht.
Zu deinem Problem ich kann mich auch irren aber ich glaube WM_PAINT wird immer gesendet wenn das Fenster neu gezeichnet wird und wenn du jetzt in der WM_PAINT Nachricht wieder was zeichnest, Muss das Fenster neu gezeichnet werden und es wird automatisch die WM_PAINT Naricht geschickt. Dort zeichnest du ja wieder was usw. also eine Art Endlosschleife
Aber ka ob da wirklich das Prob ist kann mich auch irren.
MfG schirrmie
-
schirrmie schrieb:
Und ich glaube du solltest das mit dem Zeichnen nicht in der Nachricht von WM_PAINT machen. Male immer wenn ne Taste gedrückt wird oder in einer WM_TIMER Nachricht.
Zu deinem Problem ich kann mich auch irren aber ich glaube WM_PAINT wird immer gesendet wenn das Fenster neu gezeichnet wird und wenn du jetzt in der WM_PAINT Nachricht wieder was zeichnest, Muss das Fenster neu gezeichnet werden und es wird automatisch die WM_PAINT Naricht geschickt.
Das stimmt nicht. Bei der WM_PAINT wird der FensterHINTERGRUND neu gezeichnet. Die WM_PAINT kommt immer, wenn sich am Fenster etwas ändert, z. B. die Größe, eine Menü- oder Dialogeinblendung wird gelöscht, InvalidateRect() wird aufgerufen (d. h. das Programm erklärt den Fensterinhalt für ungültig) o. ä.. Faktisch wird dann einfach der Bereich des Menüs oder Dialogs mit dem Fensterhintergrund übermalt.
Alles, was NICHT mit der WM_PAINT gezeichnet wird, wird bei der nächsten Fensteränderung gelöscht (kann manchmal auch erwünscht sein).
Genau deshalb sollte man die WM_PAINT zum Zeichnen nutzen. Dann wird sozusagen alles, was durch die WM_PAINT übermalt wird, direkt danach neu gezeichnet, und der Fensterinhalt bleibt erhalten.
-
Ja stimmt jetzt wo du es schreibst ist klar. Ist schon lange her das ich was mit GDI & co gemacht habe.
Naja dann noch viel Glück bei der Fehlerfindung :pMfG schirrmie
-
Grundsätzlich bekommt nur das Fenster eine WM_KEYDOWN Nachricht, dass den Focus hat. Evtl. liegt hier Dein Problem. Bemühe doch mal Spy++!
-
Martin Richter schrieb:
Grundsätzlich bekommt nur das Fenster eine WM_KEYDOWN Nachricht, dass den Focus hat. Evtl. liegt hier Dein Problem. Bemühe doch mal Spy++!
Das war auch mein erster Gedanke, dass die Ereignisse an eine andere WNDProc geschickt werden, allerdings funktioniert das drücken der Buttons schon, deshalb vermute ich, dass es an etwas anderem liegt.
Bei Spy++ habe ich leider nichts gefunden, nicht mal etwas kommerzielles.Das ganze kompiliert, und funktioniert bis auf den Fehler eben, dass die Tasten nach dem drücken eines Buttons unerreichbar sind - an der WinMain liegt es also nicht.
-
DaGeRe schrieb:
Bei Spy++ habe ich leider nichts gefunden, nicht mal etwas kommerzielles.
nicht.Whaaattt??
Aber du weißt schon was Spy++ ist, oder ?DaGeRe schrieb:
Das ganze kompiliert, und funktioniert bis auf den Fehler eben, dass die Tasten nach dem drücken eines Buttons unerreichbar sind - an der WinMain liegt es also nicht.
Das kannste ausschließen, wenn dus mitter WinMain probiert hast, was soll das eigentlich mitter main ? Ist doch Schwachsinn...
-
Nein, ich weiß net, was Spy++ ist, einfach
http://www.google.de/search?q=Spy%2B%2B&start=0&ie=utf-8&oe=utf-8&meta=lr%3Dlang_de&client=firefox-a&rls=org.mozilla
official
und dann das erste^^
Dachte, das wärs, war ja auch ne Seite, die so bissl nach Programmierung aussah^^Das kannste ausschließen, wenn dus mitter WinMain probiert hast,
Stimmt eigentlich, ich habs grad mal probiert - Fehlanzeige.
-
DaGeRe schrieb:
Nein, ich weiß net, was Spy++ ist, einfach
http://www.google.de/search?q=Spy%2B%2B&start=0&ie=utf-8&oe=utf-8&meta=lr%3Dlang_de&client=firefox-a&rls=org.mozilla
official
und dann das erste^^
Dachte, das wärs, war ja auch ne Seite, die so bissl nach Programmierung aussah^^

Die Spy++ ist ein Programm von M$, mit dem man sich nützliche Infos zu Fenster holen kann...uvm...
Ist in der Regel bei M$ Visual Studio dabei...
Hier n paar Links...:
Zur Benutzung (engl.)
Freeware-Alternative (WinSpy++)
Allgemeine Hinweise von M$
-
Mit dem switch() case WM_* break werden für alle Nachrichten die Default-WndProc des Betriebssystems aufgerufen.
Die Win32-Referenz: "An application should return zero if it processes this message"
-
Danke, keksekekse, istn Interresanter Hinweis, ich habs mal verändert. Hat aber leider nichts mit dem Fehler zu tun
