Seite 19 von 43

Re: WinAPI Library (Snippets) (493)

Verfasst: 19.04.2010 14:50
von Andesdaf
danke für das Update :allright: :allright:

Re: WinAPI Library (Snippets) (493)

Verfasst: 19.04.2010 15:05
von Falko
Andesdaf hat geschrieben:danke für das Update :allright: :allright:
Auch von mir ein Dankeschön für das Update. :allright: :allright: :allright:

Re: WinAPI Library (Snippets) (493)

Verfasst: 22.04.2010 17:32
von Mok
Bei Gadgets > StringGadget sollte man den Titel des Eintrags Tabulatortaste deaktivieren auf "Mit Tabulator Gadgets fokussieren" ändern, da es (laut Überschrift) dasselbe wie Tabulator abschalten wäre.

Edit:
Wenn man beim 2. Link ein Gadget hinzufügt, wird bei einem TAB-Druck auch der Focus der Gadgets geändert... also ist es sogar dasselbe.

Re: WinAPI Library (Snippets) (493)

Verfasst: 22.04.2010 18:07
von RSBasic
Hallo Mok,


ja, der neue Titel "Mit Tabulator Gadgets fokussieren" passt besser zum Code.
Danke^^
Mok hat geschrieben:Wenn man beim 2. Link ein Gadget hinzufügt, wird bei einem TAB-Druck auch der Focus der Gadgets geändert... also ist es sogar dasselbe.
Stimmt, Zufälle gibts :D
Ist mir nicht aufgefallen.
Entweder lasse ich das so und ändere nur bei dem ersten Code den Titel der Seite.
Oder ich entferne den ersten oder zweiten Code und lasse den Titel so stehen. (Von mir aus, kann ich den Titel auch ändern)
Was meinst du?

Re: WinAPI Library (Snippets) (493)

Verfasst: 22.04.2010 18:25
von ts-soft
RSBasic hat geschrieben:Was meinst du?
Ich widerspreche nicht :mrgreen:

Re: WinAPI Library (Snippets) (493)

Verfasst: 22.04.2010 18:46
von Rudi
Für "Gadgets", Gadget ermitteln, ob es versteckt ist:

Code: Alles auswählen

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,100,20,"Test-Button",0)
  
  HideGadget(1,0)
  If IsWindowVisible_(GadgetID(1))=1
    MessageRequester("","ButtonGadget ist nicht versteckt.",0)
  EndIf
  HideGadget(1,1)
  If IsWindowVisible_(GadgetID(1))=0
    MessageRequester("","ButtonGadget ist versteckt.",0)
  EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Gruß, Rudi (Newcomer) :oops:

Re: WinAPI Library (Snippets) (493)

Verfasst: 22.04.2010 18:58
von RSBasic
@Rudi
Herzlich Willkommen im Forum :allright:

Vielen Dank für das Posten eines neuen Codes.
Werd ich beim nächsten Update hinzufügen.

Re: WinAPI Library (Snippets) (493)

Verfasst: 22.04.2010 19:15
von Mok
@RSBasic: Ich denke Titel ändern müsste schon passen.
@Rudi: Willkommen :allright:

Re: WinAPI Library (Snippets) (493)

Verfasst: 06.05.2010 17:46
von Rudi
Besten Dank an RSBasic und Mok, für die herzlichen Begrüßungsworte! <)

Hab' heute wieder eine Kleinigkeit fürs Archiv.
Als Erstes ein Fenster ohne Titelzeile, welches jedoch einen 1px schmalen Rahmen hat um sich vom Hintergrund abzuheben. Dieses könnte z.B. als About-Box oder Splash-Screen Verwendung finden:

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 300, 200, "Über", #PB_Window_ScreenCentered)
  SetWindowLong_(WindowID(0), #GWL_STYLE, #WS_VISIBLE | #WS_BORDER | #SWP_FRAMECHANGED)
  ButtonGadget(0, 100, 100, 100, 25, "Beenden")
EndIf

Repeat
  Select WaitWindowEvent(1)
    Case #WM_LBUTTONDOWN
      SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0) ;movable
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          CloseWindow(0)
          Break
      EndSelect
  EndSelect
ForEver
Als Zweites ein Fenster, welches sich direkt auf den Desktop legt und z.B. als Grundlage für einen Desktopkalender Verwendung finden könnte:

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 300, 300, "DeskKal", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
  SetParent_(WindowID(0), GetShellWindow_())
EndIf

Repeat
  Select WaitWindowEvent(1)
    Case #PB_Event_MinimizeWindow
      Select EventWindow()
        Case 0
          SetWindowState(0, #PB_Window_Normal) ;nicht minimierbar
      EndSelect
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case 0
          CloseWindow(0)
          Break
      EndSelect
  EndSelect
ForEver
Als Drittes ein Code, welcher die Textausrichtung in einem Stringgadget dynamisch ändern kann. Allerdings soll dieser Code erst ab Vista gehen. Testen kann ich das nicht. Unter XP geht er nicht.
Quelle: http://www.purebasic.fr/english/viewtop ... 13&t=36853

Code: Alles auswählen

If OpenWindow(0, 0, 0, 270, 160, "StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(0, 10,  10, 250, 20, "wird rechts ausgerichtet", #ES_CENTER)
  ButtonGadget(1, 10, 40, 100, 20, "Rechts ausrichten")
  Repeat
    eventID = WaitWindowEvent()
    Select eventID
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
            ;per API:
            SetWindowLong_(GadgetID(0), #GWL_STYLE, GetWindowLong_(GadgetID(0), #GWL_STYLE)&~#ES_CENTER | #ES_RIGHT)
            InvalidateRect_(GadgetID(0), 0, 1)
            
            ;ohne API:
            ;FreeGadget(0)
            ;StringGadget(0, 10,  10, 250, 20, "ist rechts ausgerichtet", #ES_RIGHT)
        EndSelect
    EndSelect
  Until eventID = #PB_Event_CloseWindow
EndIf
Bei dieser Gelegenheit möchte ich noch anfragen, ob jemand einen Code kennt, mittels welchem ich überprüfen kann, ob der Text in der jeweiligen Spalte eines Listicongadgets links, mittig oder rechts ausgerichtet ist.

Gruß, Rudi

Re: WinAPI Library (Snippets) (493)

Verfasst: 06.05.2010 18:20
von ts-soft
@Rudi

Also bei mir funktioniert nur der erste Code. Da hätte ich anzumerken, das das Timeout 1 unnötig ist,
bzw. Timeout 1 ist sowieso nicht möglich (ohne echtzeittimer liegt die genauigkeit bei ca. 20 ms)
SetWindowLongPtr_() statt SetWindowLong_() damits auch beim x64 User funktioniert.

Das zweite Beispiel erzeugt ein Fenster, das lediglich das Aero-Design verloren hat, welches sich
auch nicht mehr schliessen läßt.

Beispiel 3 macht hier garnichts.

(getestet win 7 ultimate, pb 4.41 + 4.50, x86)

Gruß
Thomas