Seite 1 von 1

Bug oder Fehler?

Verfasst: 10.01.2007 05:50
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

Verfasst: 10.01.2007 07:11
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.

Verfasst: 10.01.2007 16:27
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