Seite 32 von 43

Re: WinAPI Library (Snippets) (702)

Verfasst: 09.12.2011 19:23
von D.J.Peters
@RSBasic

WoW da war aber Jemand sehr fleisig, tolle Sammlung.

10 points goes to "RSBasic"

DJ

Re: WinAPI Library (Snippets) (702)

Verfasst: 10.12.2011 16:01
von Bisonte
Ich hätte da auch noch was ...

PB Interne Window Nummer durch OS-Handle ermitteln:

Code: Alles auswählen

EnableExplicit

Procedure GetWindowPBID(WindowID)
  Protected Result = -1
  If IsWindow_(WindowID)
    Result = GetProp_(WindowID,"PB_WINDOWID") - 1
  EndIf
  ProcedureReturn Result ; wenn -1 dann kein PB erstelltes Window oder nicht vorhanden
EndProcedure

Define WindowID

WindowID = OpenWindow(17,0,0,300,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)

If WindowID
  
  MessageRequester("","Die PB-WindowNummer lautet : "+Str(GetWindowPBID(WindowID)))
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  
EndIf

Re: WinAPI Library (Snippets) (702)

Verfasst: 10.12.2011 16:05
von RSBasic
@D.J.Peters
Danke, freut mich. ;)

@Bisonte
Danke für deinen Code. :allright:

Re: WinAPI Library (Snippets) (702)

Verfasst: 10.12.2011 16:29
von ts-soft
@Bisonte

Ich schlage folgende Erweiterung vor:

Code: Alles auswählen

Procedure GetWindowPBID(WindowID)
  Protected Result = -1
  If IsWindow_(WindowID)
    Result = GetProp_(WindowID,"PB_WINDOWID") - 1
  ElseIf IsWindow_(WindowID(WindowID))
    Result = WindowID
  EndIf
  ProcedureReturn Result ; wenn -1 dann kein PB erstelltes Window oder nicht vorhanden
EndProcedure
Grund: Bei Verwendung von #PB_Any kommen viele durcheinander, so wird auch in diesem Falle der richtig Wert
ermittelt.

Re: WinAPI Library (Snippets) (702)

Verfasst: 10.12.2011 16:30
von RSBasic
Ich hab zwei weitere Bezeichnungen für GetProp_() gefunden:
-PB_ToolBar_ID
-PB_StatusBar_ID

PB_ToolBar_ID:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateToolBar(128,WindowID(0))
    ToolBarStandardButton(0,#PB_ToolBarIcon_New)
    
    MessageRequester("","ToolBar-Nummer: "+Str(GetProp_(WindowID(0),"PB_ToolBar_ID")),#MB_ICONINFORMATION)
    
  EndIf
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
PB_StatusBar_ID:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateStatusBar(128,WindowID(0))
    AddStatusBarField(#PB_Ignore)
    
    MessageRequester("","StatusBar-Nummer: "+Str(GetProp_(WindowID(0),"PB_StatusBar_ID")-1),#MB_ICONINFORMATION)
    
  EndIf
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: WinAPI Library (Snippets) (702)

Verfasst: 10.12.2011 17:00
von Bisonte
@ts-soft: klingt einleuchtend ;)
@RSBasic: Die Dinger hab ich vor ein paar Minuten auch entdeckt und wollt sie grade posten ;)

Re: WinAPI Library (Snippets) (702)

Verfasst: 10.12.2011 17:42
von Bisonte
Ok... dann hier die "Deluxe" Variante :mrgreen:

Code: Alles auswählen

#PB_ID_Window    = 1
#PB_ID_Gadget    = 2
#PB_ID_ToolBar   = 3
#PB_ID_StatusBar = 4

Procedure GetPBID(ID, Type = #PB_ID_Window)
  
  Protected Result = -1, Properties.s = "PB_WINDOWID,PB_ID,PB_ToolBar_ID,PB_StatusBar_ID"
  
  If Type=>#PB_ID_Window And Type<=#PB_ID_StatusBar
    If IsWindow_(ID)
      Debug StringField(Properties,Type,",")
      Result = GetProp_(ID,StringField(Properties,Type,","))
      If Type = #PB_ID_Window Or Type = #PB_ID_StatusBar
        Result - 1
      EndIf
    Else
      Select Type
        Case #PB_ID_Window
          If IsWindow(ID) : Result = ID : EndIf
        Case #PB_ID_Gadget
          If IsGadget(ID) : Result = ID : EndIf
        Case #PB_ID_StatusBar
          If IsStatusBar(ID) : Result = ID : EndIf
        Case #PB_ID_ToolBar 
          If IsToolBar(ID) : : Result = ID : EndIf
      EndSelect
    EndIf
  EndIf

  ProcedureReturn Result ; wenn -1 dann kein PB erstelltes Window oder nicht vorhanden
  
EndProcedure

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateToolBar(128,WindowID(0))
    ToolBarStandardButton(0,#PB_ToolBarIcon_New)
  EndIf
  If CreateStatusBar(112,WindowID(0))
    AddStatusBarField(#PB_Ignore)
  EndIf
  ButtonGadget(1,100,100,100,20,"Huhu")
  
  Debug GetPBID(WindowID(0), #PB_ID_Window)
  Debug GetPBID(WindowID(0), #PB_ID_ToolBar)
  Debug GetPBID(WindowID(0), #PB_ID_StatusBar)
  Debug GetPBID(GadgetID(1), #PB_ID_Gadget)
  Debug GetPBID(0, #PB_ID_Gadget) ; Kein erstelltes Gadget
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: WinAPI Library (Snippets) (747)

Verfasst: 17.05.2012 19:58
von RSBasic
WinAPI Library 1.2.9 wurde veröffentlicht (45 neue Beispielcodes)

Neue Programmfunktion: Als erstes möchte ich sagen, dass im Programm was hinzugefügt wurde und zwar wenn man (nach dieser Aktualisierung natürlich) auf "Aktualisieren" klickt. Es wird nun zuerst überprüft, ob ein neues Update vorhanden ist, ohne dass das Programm selbst beendet werden muss. Erst wenn ein neues Update vorhanden ist, dann wird das Programm beendet.

Hinzugefügt:


Arbeitsspeicher: Benutzer: ButtonGadget: CheckBoxGadget: Desktop: Dialoge: ExplorerListGadget: Gadgets: HyperLinkGadget: Konsole: ListIconGadget: Menü: OpenWindow: OptionGadget: Prozesse: Sonstige: StatusBar: StringGadget: ToolBar:
Online: http://www.rsbasic.de/winapi-library
Offline: Updaten ;)

Re: WinAPI Library (Snippets) (747)

Verfasst: 18.05.2012 07:03
von Nino
RSBasic hat geschrieben:WinAPI Library 1.2.9 wurde veröffentlicht (45 neue Beispielcodes)
Klasse! Vielen Dank! :allright:
RSBasic hat geschrieben:ButtonGadget:
Das funktioniert bei mir nicht (PB 4.60 unter Windows XP 32 Bit): Ich sehe gar keinen Button, mit oder ohne XP-Skin-Unterstützung. Wenn ich in der Definition des Buttons

Code: Alles auswählen

, #BS_COMMANDLINK
lösche, dann sehe ich ihn, aber nach Anklicken kommt es zu keiner Farbänderung.

Grüße, Nino

Re: WinAPI Library (Snippets) (747)

Verfasst: 18.05.2012 09:58
von RSBasic
Nino hat geschrieben:
RSBasic hat geschrieben:ButtonGadget:
Das funktioniert bei mir nicht (PB 4.60 unter Windows XP 32 Bit): Ich sehe gar keinen Button, mit oder ohne XP-Skin-Unterstützung. Wenn ich in der Definition des Buttons

Code: Alles auswählen

, #BS_COMMANDLINK
lösche, dann sehe ich ihn, aber nach Anklicken kommt es zu keiner Farbänderung.
Ich vergaß, dazu zu schreiben, dass dieser Code nur ab Vista funktioniert:
MSDN - BS_COMMANDLINK hat geschrieben:Windows Vista and Version 6.00. Creates a command link button that behaves like a BS_PUSHBUTTON style button, but the command link button has a green arrow on the left pointing to the button text. A caption for the button text can be set by sending the BCM_SETNOTE message to the button.
\\Edit:
Ich habs angepasst, damit man jetzt sieht, dass dieser Code nur ab Vista funktioniert.