Polyline von der GDi32 funktioniert nicht so...

Für allgemeine Fragen zur Programmierung mit PureBasic.
funker
Beiträge: 33
Registriert: 02.06.2014 12:32

Re: Polyline von der GDi32 funktioniert nicht so...

Beitrag von funker »

Hallo, guten Tag.

Warum geht dieses *DC nicht in der Procedure?
Wenn ich es in der Event oben reinpacke, funktioniert es.

Danke.
Gruss

Code: Alles auswählen

Global *DC
Global Dim poly(5)

Declare asm_polyline()

poly(0)=10
poly(1)=10
poly(2)=100
poly(3)=150
poly(4)=190
poly(5)=150

OpenWindow(0, 0, 0, 220, 220, "PolyLine", #PB_Window_SystemMenu)

Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_Event_Gadget And EventGadget() = 0 
    If EventType() = #PB_EventType_LeftButtonDown 
      asm_polyline()          
    EndIf
  EndIf 
  
   
Until Event = #PB_Event_CloseWindow


Procedure asm_polyline() 
  *DC = GetDC_(WindowID(0))
  Polyline_(*DC,poly(),3)
EndProcedure 
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Polyline von der GDi32 funktioniert nicht so...

Beitrag von Kiffi »

funker hat geschrieben:Warum geht dieses *DC nicht in der Procedure?
das hat eher was mit einem fehlenden Gadget zu tun:
funker hat geschrieben:

Code: Alles auswählen

 [...] If Event = #PB_Event_Gadget And EventGadget() = 0 [...]
a²+b²=mc²
funker
Beiträge: 33
Registriert: 02.06.2014 12:32

Re: Polyline von der GDi32 funktioniert nicht so...

Beitrag von funker »

Jup, danke.

Verstehe es aber nicht, was da jetzt noch rein soll?
Die anderen vorhergehenden Programme funktionieren doch damit.

Danke.
Gruss
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Polyline von der GDi32 funktioniert nicht so...

Beitrag von STARGÅTE »

@funker
deine Procedure wird doch nicht aufgerufen!, was soll da also passieren:

Außerdem hast du wieder den falschen Typen verwendet.
Polyline_() verlangt ein Array mit LONGs, also muss du es auch als LONG definieren (ja auch dann wenn DU nur auf 32Bit arbeitest)

Code: Alles auswählen

Global *DC
Global Dim poly.l(5)

Declare asm_polyline()

poly(0)=10
poly(1)=10
poly(2)=100
poly(3)=150
poly(4)=190
poly(5)=150

OpenWindow(0, 0, 0, 220, 220, "PolyLine", #PB_Window_SystemMenu)
asm_polyline()     

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow


Procedure asm_polyline()
  *DC = GetDC_(WindowID(0))
  Polyline_(*DC,poly(),3)
EndProcedure 
Bitte beachte noch, dass die Linie wieder "wegraddiert" wird, wenn du das Fenster verschiebst.
Das Malen auf dem Window ist nur temporär, bitte lieber das Canvas nutzen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
funker
Beiträge: 33
Registriert: 02.06.2014 12:32

Re: Polyline von der GDi32 funktioniert nicht so...

Beitrag von funker »

Jup danke.
Benutze jetzt das Canvas, ist einfacher und sicherer

Danke.
Gruss
Antworten