WinAPI Library (Snippets) (1163 Beispielcodes)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: WinAPI Library (Snippets) (493)

Beitrag von Andesdaf »

danke für das Update :allright: :allright:
Win11 x64 | PB 6.20
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: WinAPI Library (Snippets) (493)

Beitrag 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:
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: WinAPI Library (Snippets) (493)

Beitrag 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.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (493)

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WinAPI Library (Snippets) (493)

Beitrag von ts-soft »

RSBasic hat geschrieben:Was meinst du?
Ich widerspreche nicht :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: WinAPI Library (Snippets) (493)

Beitrag 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:
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (493)

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: WinAPI Library (Snippets) (493)

Beitrag von Mok »

@RSBasic: Ich denke Titel ändern müsste schon passen.
@Rudi: Willkommen :allright:
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: WinAPI Library (Snippets) (493)

Beitrag 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
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WinAPI Library (Snippets) (493)

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten