Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

WinAPI Zeichung wieder entfernen?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 27.08.2006, 18:56    Titel: WinAPI Zeichung wieder entfernen? Antworten mit Zitat

Hi zusammen, betrifft zwar nicht FB, aber dafür die WinApi und ich hoffe ihr könnt mir helfen. Hier mal mein Code:

Code:
hWndDC = api_GetDC( example_window )         ;--> DC (Device Context) zum Zeichnen holen
api_Ellipse( hWndDC, 0, 0, 200, 200 )         ;--> Ellipse

PS_SOLID = 0                              ;--> Linienart
pen = api_CreatePen( PS_SOLID, 1, $FF00FF )   ;--> Rahmen
brush = api_CreateSolidBrush( $00FF00 )      ;--> Füllfarbe

api_SelectObject(hWndDC, pen)               ;--> Linienfarbe zuweisen
api_SelectObject(hWndDC, brush)            ;--> Füllfarbe zuweisen

api_Rectangle( hWndDC, 100, 100, 400, 400 )   ;--> Rechteck

For x=0 To 500 Step 10                     ;--> Punkte
   For y=0 To 500 Step 10
      api_SetPixel( hWndDC, x, y, $0000FF )   ;--> Color in BGR !!!
   Next
Next

api_DeleteObject pen
api_DeleteObject brush

api_ReleaseDC( example_window, hWndDC )      ;--> DC freigeben


so, alles wo "api_" davorsteht sind die API Aufrufe in meiner Programmiersprache, sollte also verständlich sein. In diesem Beispiel zeichne ich ein paar Sachen direkt in ein Fenster (example_window). Das klappt auch prima, nur möchte ich das gezeichnete auch wieder löschen können, so das mein Fenster wieder "sauber" ist und ich google schon 2 Stunden und bin einfach zu doof was zu finden.

Bin dankbar für Vorschläge. EPS
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 27.08.2006, 20:50    Titel: Antworten mit Zitat

schnufff...ok, das Problem da oben hat sich erledigt. Die Antwort lautet:

Code:
api_InvalidateRect example_window, tRect , True


das leert den angegeben Bereich.

Nun hab ich aer ein neues Problem. Um das jetzt mal etwas zu präzisieren, zeig ich mal ein Bild von dem was ich haben möchte:


So, wie ihr seht ist da ein Fenster in welches Punkte gezeichnet sind. Obendrauf sind einige Gadgets (Button, TextEdit).

Das momentane Problem ist das nach einem ändern der Fenstergröße die Punkte verschwinden. Gleiches passiert auch wenn das Fenster minimert und maximiert wird, also prinzipiell nach einem Redraw des Fensters.

Wenn ich nun aber die Punkte ständig aktualisiere, landen diese ÜBER den Gadgets, was nicht nur dämlich aussieht, sondern auch nicht so sein soll:


FRAGE: Wie kann ich die Grafik/Zeichnung in dem Fenster statisch machen?
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 27.08.2006, 20:53    Titel: Antworten mit Zitat

Ich würd versuchen abzufragen, ob es zu einem Redraw des Fensters gekommen ist und in dem Falle alles in der richtigen Reihenfolge neu drauf zu zeichen - zuerst die Punkte und dann die Gadgets.
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 28.08.2006, 09:15    Titel: Antworten mit Zitat

Tja, wärs meine eigene GUI würd ich sagen: "kein Thema", aber was sagt Windows dazu?

Wie soll ich das anstellen?

PS: Frage an den Admin, wieso klappt das Informieren per E-Mail bei mir eigentlich nicht?
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 28.08.2006, 12:32    Titel: Antworten mit Zitat

Äh...ich weiß net, ich kann auch daneben sein, aber die WM_PAINT-Nachricht, ist das nicht das, wonach du suchst? Außerdem kann man bei der Erstellung des Fensters angeben, bei welchen Größenänderungen (horizontal/vertikal) eine WM_PAINT-Message verschickt wird. Is' aber auch nur 'ne Idee, da ich das mit "wär's meine eigene GUI" nicht ganz gerafft hab. neutral
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 28.08.2006, 16:40    Titel: Antworten mit Zitat

Das mit "mein GUI" sollte ein Witz sein.

Danke für den Tipp mit WM_Paint, werd mal in der Richtung etwas nachforschen.
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 29.08.2006, 12:21    Titel: Antworten mit Zitat

Aso. happy
Wie gesagt, alles unter vorbehalt, aber: wie erstellst du dein Fenster?
In deiner "WNDCLASS"-Variable muss "style=CS_HREDRAW Or CS_VREDRAW" sein. Dann müsste eigentlich eine PAINT-Message verschickt werden. neutral
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz