Bug oder Fehler?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
kayfr72
Beiträge: 130
Registriert: 12.09.2004 19:13
Wohnort: Lehrberg

Bug oder Fehler?

Beitrag von kayfr72 »

Hallo!

Entweder steh' ich auf der Leitung und es ist ein Fehler drin oder da ist ein Bug im 4.0 drin! Wenn man das Fenster mit dem Maximieren-Icon drückt funktioniert die Fensteranpassung. Wenn ich versuche mit dem Size-Pfeilen das Fenster zu ziehen bekomme ich eine Fehlermeldung.

Kay

Code: Alles auswählen

Global Weite = 1000
Global Hoehe = 600
Procedure Form()
Feldweite = (Weite-208)/2
Feldhoehe = (Hoehe-48)/2
Image1 =CreateImage(1,Feldweite,Feldhoehe,32)
Image2 =CreateImage(2,Feldweite,Feldhoehe,32)
Image3 =CreateImage(3,Feldweite,Feldhoehe,32)
Image4 =CreateImage(4,Feldweite,Feldhoehe,32)
Image5 =CreateImage(5,Feldweite,Feldhoehe,32)
Image6 =CreateImage(6,Feldweite,Feldhoehe,32)
EndProcedure

Procedure Form2()
ImageGadget(1, 2, 2, Feldweite, Feldhoehe, ImageID(1))
ImageGadget(2, 402, 2, Feldweite, Feldhoehe, ImageID(2))
ImageGadget(3, 2, 282, Feldweite, Feldhoehe, ImageID(3))
ContainerGadget(100,Weite-198,2,196,596)
SetGadgetColor(100, #PB_Gadget_BackColor, RGB(192,192,192))
EndProcedure

If OpenPreferences("Editor.ini")

Else
CreatePreferences("Editor.ini")
WritePreferenceLong("Weite", 1000)
WritePreferenceLong("Hoehe", 600)

EndIf

Dim Figur.Point3D(8000)
OpenWindow(0,0,0,Weite,Hoehe,"MeshEditor",#PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
SetWindowColor(0, RGB(0,0,0))
If CreateGadgetList(WindowID(0))
Form()
For S= 1 To 6
StartDrawing(ImageOutput(S))
FillArea(250,175,RGB(255,255,255),RGB(255,255,255))
StopDrawing()
Next
Form2()


EndIf
Repeat

Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
quit = 1 
Case #PB_Event_Gadget
EG = EventGadget()
Select EventType()
Case #PB_EventType_LeftClick

StartGrafikX = WindowMouseX(0)-GadgetX(EG)
StartGrafikY = WindowMouseY(0)-GadgetY(EG)
Set= 1

EndSelect 
 Case #WM_SIZE
 Weite = WindowWidth(0)
 Hoehe = WindowHeight(0)
 Feldweite = (Weite-208)/2
Feldhoehe = (Hoehe-48)/2
ResizeGadget(1, 2, 2, Feldweite, Feldhoehe)
ResizeGadget(2, (Weite-196)/2, 2, Feldweite, Feldhoehe)
ResizeGadget(3, 2, (Hoehe-36)/2, Feldweite, Feldhoehe)
ResizeGadget(100,Weite-198,#PB_Ignore,#PB_Ignore,Hoehe-4)
ResizeImage(1,Feldweite,Feldhoehe,#PB_Image_Raw)
ResizeImage(2,Feldweite,Feldhoehe,#PB_Image_Raw)
ResizeImage(3,Feldweite,Feldhoehe,#PB_Image_Raw)
ResizeImage(4,Feldweite,Feldhoehe,#PB_Image_Raw)
ResizeImage(5,Feldweite,Feldhoehe,#PB_Image_Raw)
ResizeImage(6,Feldweite,Feldhoehe,#PB_Image_Raw)
SetGadgetState(1, ImageID(1))
SetGadgetState(2, ImageID(2))
SetGadgetState(3, ImageID(3))


 Case #WM_MOUSEMOVE
 If Set = 1
MoveGrafikX = WindowMouseX(0)-GadgetX(EG)
MoveGrafikY = WindowMouseY(0)-GadgetY(EG)

CopyImage(EG+3, EG)
StartDrawing(ImageOutput(EG))
LineXY(StartGrafikX, StartGrafikY, MoveGrafikX, MoveGrafikY , RGB(255,0,0))
StopDrawing()


SetGadgetState(EG, ImageID(EG))
EndIf
Case #WM_LBUTTONUP
Set = 0
CopyImage(EG, EG+3)         
         EndSelect



Until quit=1
ClosePreferences()
End
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

hi kayfr72,

EG = EventGadget() wird bei dir im code erst gesetzt wenn man auf irgend ein gadget klickt,
resized man vorher löst CopyImage(EG, EG+3) bei #WM_LBUTTONUP einen fehler aus.
mit dem Maximieren-Icon löst man keinen #WM_LBUTTONUP event aus drum kommt kein fehler.
PureBasic 4.40 (Windows - x86)
Benutzeravatar
kayfr72
Beiträge: 130
Registriert: 12.09.2004 19:13
Wohnort: Lehrberg

Beitrag von kayfr72 »

Jawohl , doch auf der Leitung gestanden. Habe es mit einer For-Next Schleife gelöst.

Danke Tobe!

Code: Alles auswählen


Global Weite = 1000
Global Hoehe = 600
Procedure Form()
Feldweite = (Weite-208)/2
Feldhoehe = (Hoehe-48)/2
Image1 =CreateImage(1,Feldweite,Feldhoehe,32)
Image2 =CreateImage(2,Feldweite,Feldhoehe,32)
Image3 =CreateImage(3,Feldweite,Feldhoehe,32)
Image4 =CreateImage(4,Feldweite,Feldhoehe,32)
Image5 =CreateImage(5,Feldweite,Feldhoehe,32)
Image6 =CreateImage(6,Feldweite,Feldhoehe,32)
EndProcedure

Procedure Form2()
ImageGadget(1, 2, 2, Feldweite, Feldhoehe, ImageID(1))
ImageGadget(2, 402, 2, Feldweite, Feldhoehe, ImageID(2))
ImageGadget(3, 2, 282, Feldweite, Feldhoehe, ImageID(3))
ContainerGadget(100,Weite-198,2,196,596)
SetGadgetColor(100, #PB_Gadget_BackColor, RGB(192,192,192))
EndProcedure

If OpenPreferences("Editor.ini")

Else
CreatePreferences("Editor.ini")
WritePreferenceLong("Weite", 1000)
WritePreferenceLong("Hoehe", 600)

EndIf

Dim Figur.Point3D(8000)
OpenWindow(0,0,0,Weite,Hoehe,"MeshEditor",#PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
SetWindowColor(0, RGB(0,0,0))
If CreateGadgetList(WindowID(0))
Form()
For S= 1 To 6
StartDrawing(ImageOutput(S))
FillArea(250,175,RGB(255,255,255),RGB(255,255,255))
StopDrawing()
Next
Form2()


EndIf
Repeat

Event = WaitWindowEvent(10)

Select Event
Case #PB_Event_CloseWindow
quit = 1 
Case #PB_Event_Gadget
EG = EventGadget()
Select EventType()
Case #PB_EventType_LeftClick

StartGrafikX = WindowMouseX(0)-GadgetX(EG)
StartGrafikY = WindowMouseY(0)-GadgetY(EG)
Set= 1

EndSelect 
 Case #WM_SIZE
 Weite = WindowWidth(0)
 Hoehe = WindowHeight(0)
 Feldweite = (Weite-208)/2
Feldhoehe = (Hoehe-48)/2
ResizeGadget(1, 2, 2, Feldweite, Feldhoehe)
ResizeGadget(2, (Weite-196)/2, 2, Feldweite, Feldhoehe)
ResizeGadget(3, 2, (Hoehe-36)/2, Feldweite, Feldhoehe)
ResizeGadget(100,Weite-198,#PB_Ignore,#PB_Ignore,Hoehe-4)
ResizeImage(1,Feldweite,Feldhoehe)
ResizeImage(2,Feldweite,Feldhoehe)
ResizeImage(3,Feldweite,Feldhoehe)
ResizeImage(4,Feldweite,Feldhoehe)
ResizeImage(5,Feldweite,Feldhoehe)
ResizeImage(6,Feldweite,Feldhoehe)
SetGadgetState(1, ImageID(1))
SetGadgetState(2, ImageID(2))
SetGadgetState(3, ImageID(3))


 Case #WM_MOUSEMOVE
 If Set = 1
MoveGrafikX = WindowMouseX(0)-GadgetX(EG)
MoveGrafikY = WindowMouseY(0)-GadgetY(EG)

CopyImage(EG+3, EG)
StartDrawing(ImageOutput(EG))
LineXY(StartGrafikX, StartGrafikY, MoveGrafikX, MoveGrafikY , RGB(255,0,0))
StopDrawing()


SetGadgetState(EG, ImageID(EG))
EndIf
Case #WM_LBUTTONUP
Set = 0
For EG = 1 To 3
CopyImage(EG, EG+3)
Next         
         EndSelect



Until quit=1
ClosePreferences()
End

Kay
Antworten