Letztes Menu auf die rechte Seite bringen.

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Gezuppel
Beiträge: 29
Registriert: 18.09.2004 06:43
Computerausstattung: Intel Core i7 2600 / Asus P8P67 Rev. 3 / 8GB DDR3 / Geforce GTX570
Wohnort: Niedersachsen

Letztes Menu auf die rechte Seite bringen.

Beitrag von Gezuppel »

Moin moin,
war bestimmt schonmal da, meine habe ähnliches von Falko gesehen.
Da ich beim Suchen aber nichts gefunden habe hier nochmal:

Code: Alles auswählen

; ---------------------------------------------------------------------  
; Funktion : RSetLastMenu - V1.0 vom 26.08.2006
; ---------------------------------------------------------------------  
; Setzt das letze WindowsMenu an die rechte Seite des Fensters
; ---------------------------------------------------------------------  
; MenuNR.l PureBasic MenuID(nicht Handle)
; Purebasic Version 4.0
; ---------------------------------------------------------------------  

Procedure RSetLastMenu(MenuNR.l)
  ; MenuHandle feststellen.
  MenuHandle.l = MenuID(MenuNr.l)
  
  ; Letzte MenuNr(TitelID) ermitteln. (#False = kein Menue)
  ; Ermittelte Anzahl -1 weil erste Menuenummer = 0 ist.
  LastMenuNr.l = GetMenuItemCount_(MenuHandle.l) -1
  
  If LastMenuNr.l 
    ; MENUITEMINFO Struktur erstellen.
    MII.MENUITEMINFO
    MII\cbSize = SizeOf(MENUITEMINFO)
    
    ; Daten aus dem Letzen Menu in unsere MENUITEMINFO Struktur schreiben.
    GetMenuItemInfo_(MenuHandle.l,LastMenuNr.l,#True,@MII.MENUITEMINFO)
    
    ; Werte fuer MenueAusrichtung auf rechts setzen.
    MII\fMask = #MIIM_FTYPE
    MII\fType = #MFT_RIGHTJUSTIFY
    
    ; Geaenderte MENUITEMINFO Struktur zurueckschreiben.
    SetMenuItemInfo_(MenuHandle.l,LastMenuNr.l,#True,@MII.MENUITEMINFO)
    
    ; Menue neu Zeichnen.    
    DrawMenuBar_(MenuHandle.l)
    
    ; Wahr zurueckgeben wenn alles geklappt hat.
    ProcedureReturn #True
    
  Else
    
    ; #False zurueckgeben, wenn das letze Menue nicht ermittelt werden konnte.
    ; (Vermutlich noch keins angelegt).
    ProcedureReturn #False 
    
  EndIf
EndProcedure