CreatePopupMenu() Farbig

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

CreatePopupMenu() Farbig

Beitrag von Tsuki-Namida »

Hallo,
ist es möglich das man die Hintergrundfarbe eines Popupmenüs zu ändern?
Ich habe leider nichts in der Hilfe finden können....
wenn es nicht möglich sein sollte ist es zwar schade aber kein Beinbruch....
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: CreatePopupMenu() Farbig

Beitrag von RSBasic »

http://www.rsbasic.de/index.php?option= ... &Itemid=59

Unter XP funktioniert das problemlos.
Unter Win7 zwar auch, aber er färbt wie ich sehe nicht komplett ein.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: CreatePopupMenu() Farbig

Beitrag von X360 Andy »

Für die die das mit Windows 7 sehen wollen ...
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: CreatePopupMenu() Farbig

Beitrag von Kaeru Gaman »

ganz ehrlich, ich würde das so oder so einfach lassen.
das Farbschema ist nun mal Sache des Users, außer man bietet eine stilvoll komplett geskinnte Anwendung an, wie z.B. Winamp.

Aber einfach nur an einer handvoll Farben rumpfuschen, das passt vielleicht zu deinem Farbschema,
aber beim Kunden kanns aussehen wie
Bild
Augenkrebs
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Re: CreatePopupMenu() Farbig

Beitrag von Tsuki-Namida »

Hmmm es funktioniert fast super :) Danke

Ich habe den Code kopiert und mit Erfolg getestet.
Als ich es in mein Projekt eingebaut habe ging es nicht mehr.... Ich habe alles überprüft und kein Fehler gefunden...

Als ich einen Code Ausschnitt zum Testen vorbereitet habe um ihn hier zu testen ging es plötzlich mit der Hintergrundfarbe
das Einzige was ich an den Test Code geändert habe habe ich nur das Menü was ich für ein Systrayicon gedacht habe auf das Fenster gelegt.

hier ist der umgebaute Test Code wo es funktioniert.... Die anfragen, die ich im eigentlichen Quelltext genutzt habe habe ich auskommentiert und für den Test Geändert...

Code: Alles auswählen

Enumeration
  #SettingWindow
  #ServerList
  #ListAdd
  #ListEdit
  #ListInfo
  #ListRemov
  #ListPrio
  #ListZeit
  #ListOff
  #ListOn
  #ListTimeout
  #ListOK
  #SystrayIcon
  #SysPopup
EndEnumeration

#MIM_BACKGROUND=2

Structure MENUINFO
  cbSize.l
  fMask.l
  dwStyle.l
  cyMax.l
  hbrBack.l
  dwContextHelpID.l
  dwMenuData.l
EndStructure

MI.MENUINFO\cbSize=SizeOf(MENUINFO)
hBrush=CreateSolidBrush_(RGB($CE,$DE,$F3))
MI\hbrBack=hBrush
MI\fMask=#MIM_BACKGROUND


Procedure.s Setting(String$)
  ;Dummy Procedure zum Testen
EndProcedure

  If Val(Setting("SettingFentserX")) = 0 Or Val(Setting("SettingFentserY")) = 0
    OpenWindow(#SettingWindow,0,0,500,450,"Init Server",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
  Else
    OpenWindow(#SettingWindow,Val(Setting("SettingFensterX")),Val(Setting("SettingFensterY")),500,450,"Init Server",#PB_Window_MinimizeGadget)
  EndIf
  If CreateGadgetList(WindowID(#SettingWindow))
    ListIconGadget(#ServerList,5,39,490,250,"Name",170,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
      AddGadgetColumn(#ServerList,1,"Adresse/IP",170)
      AddGadgetColumn(#ServerList,2,"Port",50)
      AddGadgetColumn(#ServerList,3,"Server",45)
      AddGadgetColumn(#ServerList,4,"Status",50)
    ButtonGadget(#ListAdd,5,5,100,24,"Hinzufügen")
    ButtonGadget(#ListEdit,105,5,100,24,"Bearbeiten")
    ButtonGadget(#ListInfo,205,5,100,24,"Information")
    ButtonGadget(#ListRemov,395,5,100,24,"Löschen")   
    Frame3DGadget(#PB_Any,0,295,250,156,"Aktualisierungs Einstellung")
    TextGadget(#PB_Any,5,310,235,52,"Je häufiger der Status der Eingetragenen Server überprüft wird, um so mehr wird der Processeor belastet. Also vorsichtig verwenden!")
    TextGadget(#PB_Any,15,370,40,18,"Priorität:")
    ComboBoxGadget(#ListPrio,57,369,110,20)
      AddGadgetItem(#ListPrio,-1,"Höher als Normal")
      AddGadgetItem(#ListPrio,-1,"Normal")
      AddGadgetItem(#ListPrio,-1,"Nidrig")
      AddGadgetItem(#ListPrio,-1,"Sehr Nidrig")
      SetGadgetText(#ListPrio,Setting("Priorität"))
    TextGadget(#PB_Any,15,393,60,18,"Zeitabstand:")
    StringGadget(#ListZeit,77,392,30,20,Setting("Zeit"),#PB_String_Numeric)
    TextGadget(#PB_Any,109,393,30,18,"Min")
    Frame3DGadget(#PB_Any,248,295,240,70,"Benachrichtigung")
    CheckBoxGadget(#ListOff,265,322,13,13,"")
      TextGadget(#PB_Any,280,320,80,18,"Server Offline")
      SetGadgetState(#ListOff,Val(Setting("OfflineMSG")))
    CheckBoxGadget(#ListOn,265,342,13,13,"")
      TextGadget(#PB_Any,280,340,80,18,"Server Online")
      SetGadgetState(#ListOn,Val(Setting("OnlineMSG")))
    TextGadget(#PB_Any,360,320,120,18,"Benarichtigung Timeout:")
    StringGadget(#ListTimeout,360,340,30,20,Setting("Timeout"),#PB_String_Numeric)
    TextGadget(#PB_Any,395,342,25,18,"Sec.")
    TextGadget(#PB_Any,255,375,240,26,"Hinzugefügte oder Bearbeitete Server werden automatisch gespeichert.")
    ButtonGadget(#ListOK,395,421,100,24,"Speichern",Image1)
;     InfLesen()
;     ListeAktualisieren()
    AddSysTrayIcon(#SystrayIcon,WindowID(#SettingWindow),LoadImage(0,Icon$))
    SysTrayIconToolTip(#SystrayIcon,"Init Server")
    CreatePopupMenu(#SysPopup)
      MenuItem(1,"Einstellung Ein-/Aus-Blenden")
      MenuItem(2,"Alle Server Sofort Überprüfen")
      MenuItem(3,"Info")
      MenuItem(4,"Beenden")
  Else
    MessageRequester("Fehler","Es ist ein Fehleraufgetreten beim öffnen des Einstellungsfenster! Bitte Starten Sie die Anwendung Neu.")
    End
  EndIf
;   ServerTest(0)
  
  SetMenuInfo_(MenuID(#SysPopup),MI)
  SetMenuInfo_(GetSubMenu_(MenuID(#SysPopup),5),MI)
  
  Repeat
    Event = WaitWindowEvent()
    WindowID = EventWindow()
    GadgetID = EventGadget()
    EventType = EventType()

    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            If Hinde = 0
              HideWindow(#SettingWindow,1)
              Hinde = 1
            ElseIf Hinde = 1
              HideWindow(#SettingWindow,0)
              Hinde = 0
            EndIf
          Case 2
            
          Case 3
            
          Case 4
            End
        EndSelect
      Case #PB_Event_CloseWindow
        Quit = 1
    EndSelect

    If Event = #PB_Event_Gadget
      If GadgetID = #ListAdd
        DisableWindow(#SettingWindow,1)
;         AddServerWindow("","",0,"",0)
      ElseIf GadgetID = #ListEdit
        If GetGadgetState(#ServerList) <> -1
;           EditServer(GetGadgetText(#ServerList))
        Else
          MessageRequester("Fehler","Bitte wählen Sie einen Server aus.")
        EndIf
      ElseIf GadgetID = #ListInfo
        If GetGadgetState(#ServerList) <> -1
          DisableWindow(#SettingWindow,1)
;           ServerInfo(GetGadgetText(#ServerList))
        Else
          MessageRequester("Fehler","Bitte wählen Sie einen Server aus.")
        EndIf
      ElseIf GadgetID = #ListRemov
        If GetGadgetState(#ServerList) <> -1
          If MessageRequester("Frage","Möchten Sie wirklich den Server "+Chr(34)+GetGadgetText(#ServerList)+Chr(34)+" Löschen?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
;             DelServer(GetGadgetText(#ServerList))
          EndIf
        Else
          MessageRequester("Fehler","Bitte wählen Sie einen Server aus.")
        EndIf
      ElseIf GadgetID = #ListOK
;         SaveServer()
;         SaveSetting()
      EndIf
    ElseIf GetAsyncKeyState_(#VK_RBUTTON) ;Event = #PB_Event_SysTray; And GetAsyncKeyState_(#VK_RBUTTON)
      DisplayPopupMenu(#SysPopup, WindowID(#SettingWindow))
    ElseIf Event = #PB_Event_CloseWindow
      HideWindow(#SettingWindow,1)
      Hinde = 1
    EndIf
  ForEver
Bild
Antworten