Fenster nicht verschiebbar+Stay On Top+nicht in Taskleiste

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

@Mash
Deine Aussagen sind nicht präzise! Was denn nun?
Wenn man sich nicht deutlich ausdrückt, kriegt man auch keine eindeutige antwort! (oder gar keine)

1. Soll dein Fenster nun verschiebbar oder nicht verschiebbar sein?
2 .Oder möchtest du ein Fremdes Fenster verschieben?
3. oder möchtest du dein Fenster mit deinem Programmcode verschieben?

1 , 2 , oder 3…. du musst dich entscheiden, 3 Felder sind frei!
Plopp….

[Edit]
Du findes auf www.purearea.net das sehr gute CodeArchiv, da sind ne menge beispiele drin. Zieh dir das rein das Hilft !!

Code geändert: Fenster nich in der Taskbar anzeigen

[/edit]

Code: Alles auswählen

; Fenster nicht verschiebbar
; Pamkkkkk 12.August 2005 PB 3.93



 If OpenWindow(0,0,0,230,90,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible,"Verschieb mich !")
  If CreateGadgetList(WindowID())
    ButtonGadget  (1, 10, 10,200, 20, "Klick mich")
    CheckBoxGadget(2, 10, 40,200, 20, "Markiere mich")
  EndIf
 
  If CreateMenu(0, WindowID())
    MenuTitle("Menu")
    MenuItem(1, "Eintrag 1")
    MenuItem(2, "Eintrag 2")
    MenuItem(3, "Eintrag 3")
  EndIf
  
   ; es wirkt leider nur: Fenster immer oben (#HWND_TOPMOST)
  SetWindowPos_(WindowID(0), #HWND_TOPMOST, 0, 0, 0, 0,#SWP_NOMOVE | #SWP_NOSIZE)
  SetWindowLong_(WindowID(0),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW) ; Fenster nich in der Taskbar anzeigen
  
  HideWindow(0, 0) ; Jetzt erst Fenster zeichnen lassen
  WinX = WindowX() ; X Position retten
  WinY = WindowY() ; y Position retten
   
  Repeat
    EventID = WaitWindowEvent()
    
    Select EventID
      
      Case #WM_MOVE ; Wenn Fensterbewegung ....
        MoveWindow(WinX,WinY) ; .....Fenster auf alte Position zurück setzen
      
      Case #PB_Event_Gadget
        Select EventGadgetID()
          Case 1 : Debug "Schalter 1 angeklickt!"
          Case 2 : Debug "Schalter 2 angeklickt!"
          Case 3 : Debug "Schalter 3 angeklickt!"
        EndSelect
        
      Case #PB_Event_Menu
        Select EventMenuID()
          Case 1 : Debug "Menü-Eintrag 1 angeklickt!"
          Case 2 : Debug "Menü-Eintrag 2 angeklickt!"
          Case 3 : Debug "Menü-Eintrag 3 angeklickt!"
        EndSelect
    EndSelect
    
  Until EventID = #PB_Event_CloseWindow
EndIf
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
iF
Beiträge: 84
Registriert: 17.07.2005 20:20
Wohnort: Berlin
Kontaktdaten:

Beitrag von iF »

Damit das Fenster nicht mehr verschiebbar ist - musst Du halt im Fenstercallback die entsprechende Message selbst verarbeiten - in diesem Fall ebend garnicht. :? Schaue Dir also verschiedene Callbackbeispiele an und versuche Dich in's Verschieben einzuklinken. Ich bin kein PB'ler - daher kein Code von mir. Im Grunde ist das aber sehr einfach.

Um das Fenster aus der Taskleiste zu bekommen gibt's zwei Wege - einmal über in PB glaube callcom(#20.... also über Comobjects - oder Trick17 - Du legst das Fenster auf einen Parent welchen Du versteckst. Das klappt auch.

Salve.

Nachtrag: Huch - ich sehe grad da war ja schon jemand schneller. :)
Achtung: kein PB'ler - habt bitte erbarmen. :mrgreen: /:->
Benutzeravatar
MASH
Beiträge: 130
Registriert: 22.05.2005 17:43

Beitrag von MASH »

Ihr habt mir alle sehr geholfen "!Danke!"

Code: Alles auswählen

SetWindowPos_(WindowID(#Window_Toolbar),#HWND_TOPMOST,XPosition,0,WindowLang,25,#SWP_NOMOVE|#SWP_NOSIZE)
SetWindowLong_(WindowID(#Window_Toolbar),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW)
Diese Beiden Zeilen waren das. :allright:
Danke Mark S.
Antworten