Aktuelle Zeit: 24.05.2013 18:40

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Windowed Screen-im zweit. Fenster wird Liste nicht angezeigt
BeitragVerfasst: 08.10.2011 12:48 
Offline
Benutzeravatar

Registriert: 24.08.2011 18:00
Wohnort: Ruhrpott
Hallo zusammen,

ich habe folgendes Problem:

ich erstelle ein Fenster mit einem Listicongadget, danach erstelle ich ein fenster auf dem ich einen Screen öffne. Das ListIconGadget wird aber auf dem ersten Fenster nicht angezeigt. Siehe:
Bild

Der Befehl zum Neuzeichnen des Fensters
Code:
InvalidateRect_(WindowID(#helpWnd), #Null, #True)
bringt leider auch nichts. Weiterhin habe ich schon versucht das Fenster mit der Liste als Child des Screenwindows zu erzeugen, aber nichts funktioniert.

Noch merkwürdiger wird es, wenn ich das Fenster mit dem Gadget in einem Thread öffne, es öffnet sich kurz und ist anschließend weg, ohne das ich irgendwo CloseWIndow() bennutze.

Hat hier noch jemand einen Rat was ich tun kann ? Vielen Dank schonmal.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Windowed Screen-im zweit. Fenster wird Liste nicht angez
BeitragVerfasst: 08.10.2011 13:42 
Offline
Benutzeravatar

Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg
WindowEvent()?

Ansonsten:
Wie wärs mit lauffähigem Code, um das nach vollziehen zu können? :wink:

MFG PMV

_________________
alte Projekte:
CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Windowed Screen-im zweit. Fenster wird Liste nicht angez
BeitragVerfasst: 08.10.2011 20:37 
Offline
Benutzeravatar

Registriert: 24.08.2011 18:00
Wohnort: Ruhrpott
Ok, hier mal das Grundgerüst:

Code:
InitSprite() : InitMouse() : InitKeyboard()

If OpenWindow(0, 0, 0, 400, 300, "Fenster mit Gadgets", #PB_Window_SystemMenu|#PB_Window_Tool)
  ListIconGadget(0, 5, 5, 390, 290, "Column 1", 100, #PB_ListIcon_GridLines)
EndIf

If OpenWindow(1, 450, 0, 800, 600, "Fenster mit Screen", #PB_Window_TitleBar)
  If OpenWindowedScreen(WindowID(1), 0, 0, 800, 600, 0, 0, 0, #PB_Screen_WaitSynchronization)
    SetFrameRate(60)
    MouseLocate(800 / 2, 600 / 2)
  EndIf
EndIf

Repeat
 
  StartDrawing(ScreenOutput())
  DrawText(350, 290, "Windowed Screen", $FFFFFF, $0)
  StopDrawing()
 
  ExamineMouse() : ExamineKeyboard()
 
  If WindowEvent() = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
    QUIT = #True
  EndIf
 
  FlipBuffers()
  Delay(1)
 
Until QUIT = #True


In meinem Progrämmchen sind noch einige Prozeduraufrufe zwischen dem erstellen der Fenster und der Schleife, aber selbst in dem entschlackten Code ist das Problem das gleiche. Ich hoffe das hilft weiter.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Windowed Screen-im zweit. Fenster wird Liste nicht angez
BeitragVerfasst: 08.10.2011 20:44 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Das Problem ist hier, das du immer nur einmal das WindowEvent ausführst pro Frame.
Überlicherweise gibt es aber viel mehr Ereignisse die du alle nicht abarbeitest.

Wie auch im PB-Beispiel zu OpenWindowedScreen zu sehen ist, muss man WindowEvent selbst in einer Schleife haben:
Code:
InitSprite()
InitKeyboard()

OpenWindow(1, 450, 0, 800, 600, "Fenster mit Screen", #PB_Window_TitleBar)
OpenWindowedScreen(WindowID(1), 0, 0, 800, 600, 0, 0, 0, #PB_Screen_WaitSynchronization)
SetFrameRate(60)

OpenWindow(2, 0, 0, 400, 300, "Fenster mit Gadgets", #PB_Window_SystemMenu|#PB_Window_Tool, WindowID(1))
ListIconGadget(0, 5, 5, 390, 290, "Column 1", 100, #PB_ListIcon_GridLines)

Repeat
   
   Repeat
      Select WindowEvent()
         Case #PB_Event_CloseWindow
            Break 2
         Case #Null
            Delay(1)
            Break
      EndSelect
   ForEver
   
   ClearScreen(0)
   
   If StartDrawing(ScreenOutput())
      DrawText(350, 290, "Windowed Screen", $FFFFFF, $0)
      StopDrawing()
   EndIf
   
   ExamineKeyboard()
   If KeyboardPushed(#PB_Key_Escape)
      Break
   EndIf
   
   FlipBuffers()
   
ForEver
Habe mal die Maus wieder freigegeben und das ToolWindow auch dem Hauptfenster untergeordnet.

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Windowed Screen-im zweit. Fenster wird Liste nicht angez
BeitragVerfasst: 08.10.2011 20:46 
Offline
Benutzeravatar

Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg
Keine Ahnung, in wie weit man das als Bug bezeichnen kann ... aber
ExamineMouse() fängt die Maus komplett ein, weshalb der Benutzer
nicht mehr in der Lage ist, den Screen zu verlassen. Das in verbindung
mit weiteren Fenstern macht also wenig Sinn. Um dem Benutzer
weiter die Möglichkeit zu geben, die Maus frei zu bewegen, solltest
du WindowMouseX() usw. verwenden. Ich denke mal, dass hierdurch
das Eventhandling von Windows/ PureBasic durcheinander kommt
bzw. hängen bleibt. Vermeidung der DX-Eingabe-Funktionen sollte
das also beheben. (Aussage ohne es getest zu haben :) )

So bald ich den WindowedScreen verlasse, wird das ListGadget
nämlich dargestellt.

MFG PMV

_________________
alte Projekte:
CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Windowed Screen-im zweit. Fenster wird Liste nicht angez
BeitragVerfasst: 08.10.2011 21:45 
Offline
StudiMod oder sowas in der Art
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Homburg (Saar)
STARGÅTE hat geschrieben:
...
Code:
...
         Case #Null
            Delay(1)
            Break
...

Das 'Delay(1)' ist in dem Fall übrigens unnötig. Dazu gibt's 'FlipBuffers()'. :wink: Natürlich wird es nicht viel ausmachen.

_________________
Bild

NEU! Elektronik, Bastelei, Verrücktes, Interessantes, Schlaues, alles in Text, Bild und Ton? Klick hier! NEU!
Linux Mint 14 x64, PureBasic 5.11 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10)

Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Windowed Screen-im zweit. Fenster wird Liste nicht angez
BeitragVerfasst: 08.10.2011 22:18 
Offline

Registriert: 08.11.2004 01:50
Makke hat geschrieben:
Noch merkwürdiger wird es, wenn ich das Fenster mit dem Gadget in einem Thread öffne, es öffnet sich kurz und ist anschließend weg, ohne das ich irgendwo CloseWIndow() bennutze.


Bei mir gehts mit nem Thread.

Code:
InitSprite() : InitMouse() : InitKeyboard()

If OpenWindow(0, 0, 0, 400, 300, "Fenster mit Gadgets", #PB_Window_SystemMenu|#PB_Window_Tool)
  ListIconGadget(0, 5, 5, 390, 290, "Column 1", 100, #PB_ListIcon_GridLines)
EndIf

If OpenWindow(1, 450, 0, 800, 600, "Fenster mit Screen", #PB_Window_TitleBar)
  If OpenWindowedScreen(WindowID(1), 0, 0, 800, 600, 0, 0, 0, #PB_Screen_WaitSynchronization)
    SetFrameRate(60)
    MouseLocate(800 / 2, 600 / 2)
  EndIf
EndIf

Global QUIT

Procedure ScreenWindow(*dummy) 
  Repeat   
    ExamineKeyboard()
    StartDrawing(ScreenOutput())
    DrawText(350, 290, "Windowed Screen", $FFFFFF, $0)
    StopDrawing()       
   
    If KeyboardPushed(#PB_Key_Escape)
      QUIT = #True
    EndIf
    FlipBuffers()
  Until QUIT = #True
EndProcedure

th1.l = CreateThread(@ScreenWindow(), 0)

Repeat   
  If WindowEvent() = #PB_Event_CloseWindow
    QUIT = #True   
  EndIf   
  Delay(1)
Until QUIT = #True

WaitThread(th1)


Mfg Nero

_________________
SimpleDX11 rev: 38


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Windowed Screen-im zweit. Fenster wird Liste nicht angez
BeitragVerfasst: 09.10.2011 09:57 
Offline
Benutzeravatar

Registriert: 24.08.2011 18:00
Wohnort: Ruhrpott
Vielen Dank an Alle für Eure Hilfe.

@Stargate: ich hatte nicht bedacht das bei Erstellung eines Fensters bereits Windows-Ereignisse stattfinden. Ich benutze dieses Toolwindow nur zum Anzeigen diverser Informationen, es sollen dort keine Benutzereingaben erfolgen.

@Nero: den Thread habeich ohne Event-Schleife erstellt, ich dachte mir einfach nur das Fenster zu zeichnen.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye