GadgetToolTip ... aktualisieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Haste nun noch eine Idee, wie man den Text zweizeilig machen kann?
Zum Beispiel in der ersten Zeiele die Position und in der zweiten die aktuelle Farbe.

Kann man Farbe auch als Farbe darstellen, oder eignen sich Tooltips nur für Text?

Sonst könnte man vielleicht auch kleine Icons anzeigen zu verschiedenen Hilfetexten.

So ähnlich wie die Balloon-Hilfe.

Aber wieder einmal ein Thema, wo ich mich nicht mit auskenne.

:freak:
etwas eigenen Balloon modifiziert, auch von Edel ...
http://www.purebasic.fr/german/viewtopi ... ht=balloon

Balloon automatisch stehen lassen
http://www.purebasic.fr/german/viewtopi ... ht=balloon

Kann man Balloons auch mit 2D-Drawing-Befehlen beschreiben?

Nach PB 4.0 umgewandelt

Code: Alles auswählen

#TRAY_ID = 999 
  #NIM_ADD = $0 
  #NIM_MODIFY = $1 
  #NIM_DELETE = $2 
  #NIF_MESSAGE = $1 
  #NIF_ICON = $2 
  #NIF_TIP = $4 
  #NIF_STATE = $8 
  #NIF_INFO = $10 
  #NIS_SHAREDICON = $2 
  #NIFF_NONE = $0 
  #NIIF_INFO = $1 
  #NIIF_WARNING = $2 
  #NIIF_ERROR = $3 
  #NIIF_NOSOUND = $10 
  #NIN_BALLOONSHOW=$402 
  #NIN_BALLOONHIDE=$403 
  #NIN_BALLOONTIMEOUT =$404 
  #NIN_BALLOONUSERCLICK=$405 
  #NOTIFYICON_VERSION = $3 
  #NOTIFYICONDATA_V1_SIZE = 88 
  #NOTIFYICONDATA_V2_SIZE = 488 
  #NOTIFYICONDATA_V3_SIZE = 504 
  
  Enumeration  
    #Window_0 
    #TRAYICON_0 
    #image_0 
  EndEnumeration 
  
  Structure IconData 
    cbSize.l 
    hwnd.l 
    uID.l 
    uFlags.l 
    uCallbackMessage.l 
    hIcon.l 
    szTip.b[128] 
    dwState.l 
    dwStateMask.l 
    szInfo.b[256] 
    StructureUnion 
      uTimeout.l 
      uVersion.l 
    EndStructureUnion 
    szInfoTitle.b[64] 
    dwInfoFlags.l 
  EndStructure 
  
  Procedure MyWindowCallback(WindowID, Message, wParam, lParam) 
    Result = #PB_ProcessPureBasicEvents 
    Select Message 
      Case #WM_USER 
        Select lParam 
          Case #WM_LBUTTONDOWN 
            Debug "Left mousebutton click on Icon" 
            
          Case #WM_RBUTTONDOWN 
            Debug "Right mousebutton click on Icon" 
            
          Case #WM_LBUTTONDBLCLK 
            Debug "Left button doublecklick on Icon" 
            
          Case #WM_MOUSEMOVE 
            ;Debug "Mouse moved over TrayIcon" 
            
          Case #NIN_BALLOONSHOW 
            Debug "SHow balloon" 
            
          Case #NIN_BALLOONTIMEOUT 
            Debug "Timeout or X pressed" ; The 'X' doesn't seem to be available in W2K?! 
          Case #NIN_BALLOONUSERCLICK 
            Debug "Balloon user click" 
            
          Case #NIN_BALLOONHIDE 
            Debug "Balloon closed" 
            
        EndSelect 
    EndSelect 
    
    ProcedureReturn Result 
  EndProcedure 
  
  Procedure.w GetDataSize() 
    
    If OpenLibrary(1,"VERSION.DLL") 
      BuffSize.l= CallFunction(1,"GetFileVersionInfoSizeA","shell32.dll",0) 
      If BuffSize>0 
        databuf.s=Space(BuffSize-1) 
        ;Dim databuf.b(BuffSize-1) 
        Result=CallFunction(1,"GetFileVersionInfoA","shell32.dll",0,BuffSize,@databuf) 
        Result=CallFunction(1,"VerQueryValueA",@databuf,"\",@lpBuffer,@puLen) 
        CopyMemory(lpBuffer+10,@nVerMajor,2) 
      EndIf 
      CloseLibrary(1) 
      Select nVerMajor 
        Case 6 
          ProcedureReturn #NOTIFYICONDATA_V3_SIZE 
          
        Case 5 
          ProcedureReturn #NOTIFYICONDATA_V2_SIZE 
          
        Default 
          ProcedureReturn #NOTIFYICONDATA_V1_SIZE 
      EndSelect 
    EndIf 
    
  EndProcedure 
  
  Procedure StatusAreaAddIcon(tooltiptext.s) 
    Balloon.IconData\cbSize=GetDataSize() 
    
    Balloon\hwnd = WindowID(#Window_0) 
    Balloon\uID = #TRAY_ID 
    Balloon\uFlags = #NIF_MESSAGE | #NIF_ICON | #NIF_TIP 
    Balloon\hIcon = ImageID(#image_0) 
    Balloon\dwState = #NIS_SHAREDICON 
    Balloon\uCallbackMessage=#WM_USER 
    If OSVersion() < #PB_OS_Windows_2000 
      Balloon\uVersion = 0 
    Else 
      Balloon\uVersion = #NOTIFYICON_VERSION 
    EndIf 
    Balloon\uTimeout = 11000 ; The balloon will not disappear if you don't move the mouse! 
    Balloon\dwInfoFlags = #NIIF_INFO 
    If Balloon.IconData\cbSize=#NOTIFYICONDATA_V1_SIZE 
      PokeS(@Balloon\szTip, tooltiptext,64) 
    Else 
      PokeS(@Balloon\szTip, tooltiptext,128) 
    EndIf 
    
    Result= CallFunction(0,"Shell_NotifyIcon",#NIM_ADD,@Balloon) 
  EndProcedure 
  
  Procedure StatusAreaRemoveIcon() 
    Balloon.IconData\cbSize=GetDataSize() 
    
    Balloon\hwnd = WindowID(#Window_0) 
    Balloon\uID = #TRAY_ID 
    Result= CallFunction(0,"Shell_NotifyIcon",#NIM_DELETE,@Balloon) 
  EndProcedure 
  
  Procedure ShowBalloonTip(title.s,maintext.s,tooltiptext.s,IconType.l) 
    Balloon.IconData\cbSize=GetDataSize() 
    
    Balloon\hwnd = WindowID(#Window_0) 
    Balloon\uID = #TRAY_ID 
    Balloon\uFlags =  #NIF_INFO | #NIF_MESSAGE | #NIF_ICON | #NIF_TIP 
    Balloon\hIcon = ImageID(#image_0) 
    Balloon\dwState = #NIS_SHAREDICON 
    Balloon\uCallbackMessage=#WM_USER 
    Balloon\uTimeout = 10000 
    If OSVersion() < #PB_OS_Windows_2000 
      Balloon\uVersion = 0 
    Else 
      Balloon\uVersion = #NOTIFYICON_VERSION 
    EndIf 
    Balloon\dwInfoFlags = IconType 
    
    If Balloon.IconData\cbSize=#NOTIFYICONDATA_V1_SIZE 
      PokeS(@Balloon\szTip, tooltiptext,64) 
    Else 
      PokeS(@Balloon\szTip, tooltiptext,128) 
      PokeS(@Balloon\szInfo,maintext.s,255) 
      PokeS(@Balloon\szInfoTitle,title.s,63) 
    EndIf 
    Result= CallFunction(0,"Shell_NotifyIcon",#NIM_MODIFY,@Balloon) 
  EndProcedure 
  
  
  OpenLibrary(0,"shell32.dll") 
  
  If OpenWindow(#Window_0,0,0,300,90,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(#Window_0)) 
    ButtonGadget  (1, 50, 10,200, 20, "Add Status area icon") 
    ButtonGadget  (2, 50, 30,200, 20, "Show Balloon tip") 
    ButtonGadget  (3, 50, 50,200, 20, "Remove Icon") 
    CatchImage(#image_0,?Icon) 
    SetWindowCallback(@MyWindowCallback()) 
    
    Repeat 
      EventID = WaitWindowEvent() 
      
      Select EventID 
        
        Case #PB_Event_Gadget 
          Select EventGadget() 
            Case 1 
              StatusAreaAddIcon("Tool tip text") 
            Case 2 
              ShowBalloonTip("Status Area Balloon Tip demo","This is the first line"+Chr(13)+"This should be the second line","Tool tip text",#NIIF_INFO) 
            Case 3 
              StatusAreaRemoveIcon() 
          EndSelect 
      EndSelect 
    Until EventID = #PB_Event_CloseWindow 
    StatusAreaRemoveIcon() 
    CloseLibrary(0) 
  EndIf 
  End 
  
  DataSection 
  Icon: 
  IncludeBinary "..." ; eigenes Symbol im ICO-Format nutzen
  EndDataSection 
Kinder an die Macht http://scratch.mit.edu/
Antworten