Aktuelle Zeit: 03.07.2020 14:55

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Forumsregeln


Die Forumsregeln lesen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: CreateToolBar
BeitragVerfasst: 04.12.2016 09:12 
Offline

Registriert: 27.08.2012 21:08
Hallo

Möglicherweise bin ich auf einen Fehler in PureBasic gestoßen.
Es betrifft das Toolbar-Gadget.
Solange die Toolbar integriert ist, verändern sich die Fenstereigenschaften.
Wen man nach dem Start des Prgs ein anderes Fenster anklickt, sollte das eigene Prg nach 2,5 Sekunden wieder vorne kommen.
Das Fenster bleibt im Hintergrund obwohl es mit den anderen Befehlen (Topmost,Sticky...) nach vorne geholt werden sollte.

Bitte den Code mal prüfen.

Code:
  If OpenWindow(0, 0, 0, 150, 125, "ToolBar", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
       
    If CreateToolBar(0, WindowID(0))
      ToolBarStandardButton(0, #PB_ToolBarIcon_New)
      ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
      ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
    EndIf
   
    Delay (2500)
    SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
    StickyWindow(0, #True)
    SetActiveWindow(0)
    SetWindowState(0, #PB_Window_Maximize)
   
    Repeat
      Event = WaitWindowEvent()
      If Event = #PB_Event_Menu
        Debug "ToolBar ID: "+Str(EventMenu())
      EndIf
    Until Event = #PB_Event_CloseWindow
  EndIf



Ohne Toolbar funktioniert es wie es sein sollte.

Code:
  If OpenWindow(0, 0, 0, 150, 125, "ToolBar", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
       
   ; If CreateToolBar(0, WindowID(0))
   ;   ToolBarStandardButton(0, #PB_ToolBarIcon_New)
   ;   ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
   ;   ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
   ; EndIf
   
    Delay (2500)
    SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
    StickyWindow(0, #True)
    SetActiveWindow(0)
    SetWindowState(0, #PB_Window_Maximize)
   
    Repeat
      Event = WaitWindowEvent()
      If Event = #PB_Event_Menu
        Debug "ToolBar ID: "+Str(EventMenu())
      EndIf
    Until Event = #PB_Event_CloseWindow
  EndIf



Gibt es zum Erstellen einer Toolbar einen API-Aufruf als alternative ?

Gruß

Lite


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: CreateToolBar
BeitragVerfasst: 04.12.2016 12:54 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Die Fensterstyles ändern sich nach dem Erstellen der ToolBar nicht:
Code:
If OpenWindow(0, 0, 0, 150, 125, "ToolBar", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 
  Debug GetWindowLongPtr_(WindowID(0), #GWL_STYLE)
  Debug GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE)
 
  If CreateToolBar(0, WindowID(0))
    ToolBarStandardButton(0, #PB_ToolBarIcon_New)
    ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
  EndIf
 
  Debug GetWindowLongPtr_(WindowID(0), #GWL_STYLE)
  Debug GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE)
 
  Delay (2500)
  SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
  StickyWindow(0, #True)
  SetActiveWindow(0)
  SetWindowState(0, #PB_Window_Maximize)
 
  Debug GetWindowLongPtr_(WindowID(0), #GWL_STYLE)
  Debug GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE)
 
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_Menu
      Debug "ToolBar ID: "+Str(EventMenu())
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf


Aber ich kann es ebenfalls bestätigen. Keine Ahnung, woran das liegt.
Ich habe aber eine Lösung gefunden, wie du das umgehen kannst:
Code:
If OpenWindow(0, 0, 0, 150, 125, "ToolBar", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 
  If CreateToolBar(0, WindowID(0))
    ToolBarStandardButton(0, #PB_ToolBarIcon_New)
    ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
  EndIf
 
  Delay (2500)
  SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
  StickyWindow(0, #True)
  SetActiveWindow(0)
  SetWindowState(0, #PB_Window_Minimize)
  SetWindowState(0, #PB_Window_Maximize)
 
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_Menu
      Debug "ToolBar ID: "+Str(EventMenu())
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: CreateToolBar
BeitragVerfasst: 04.12.2016 19:29 
Offline

Registriert: 27.08.2012 21:08
@RSBasic

Danke für Lösung. Es hilft momentan weiter. Nur sieht es nicht besonders professionell aus. Komisch ist das verhalten auf alle Fälle.
Vielleicht ist es auch ein Windows-Bug.
Irgendwie muss es eine andere Lösung geben.
Der PureBasic-Editor nutzt eine Toolbar und dort funktioniert es auch.
Bringt es was, eine Meldung im englischen Forum zu machen ?

Gruß

Lite


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: CreateToolBar
BeitragVerfasst: 04.12.2016 19:52 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Es ist auch lustig, dass StickyWindow() gar nicht wirksam ist, wenn vorher die ToolBar erstellt wird und das Fenster plötzlich im Hintergrund erscheint.
Selbst wenn man das Fenster manuell mit der Maus in den Vordergrund setzt, bleibt das Fenster nicht im Vordergrund, wenn man ein anderes Fenster öffnet.
Wenn die ToolBar erst danach erstellt wird, funktioniert es einwandfrei und das Fenster bleibt stets im Vordergrund.
Ob es ein PB- oder Windows-Bug ist, weiß ich nicht. Das müsste man mit reinen WinAPI-Befehlen testen.
Aber du kannst gerne mal im englischen Forum nachfragen, warum das so ist.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: CreateToolBar
BeitragVerfasst: 04.12.2016 19:53 
Offline
Benutzeravatar

Registriert: 30.03.2010 15:24
lite hat geschrieben:
Bringt es was, eine Meldung im englischen Forum zu machen ?

Die Beta Phase für PB 5.44 läuft gerade.
Da kann ein gemeldeter Bug, mit etwas Glück schnell behoben werden. :D

_________________
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure


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

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


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