Seite 1 von 2

Welches Fenster ist das?

Verfasst: 02.06.2008 17:37
von Fox
Hi... Weiss jemand wie diese Fenster bzw. Popups heissen und wie man sie in PB erzeugt?

Bild

Hoffe jemand kann mir sagen was is ist^^

Danke euch


Fox

Re: Welches Fenster ist das?

Verfasst: 02.06.2008 18:12
von Kiffi
@Fox: Das sind (Bubble-)Tooltips.

http://www.purebasic.fr/english/viewtop ... 764#243764

Grüße ... Kiffi

Verfasst: 02.06.2008 21:10
von Mok
Wie Kiffi schon gesagt hat, nennt man sie BubbleToolTips.
Wenn du einen BTT für einen Button, ein Textfeld usw. machen willst, würe ich dir den Visual-Designer empfehlen, damit kann man auch Bubbles samt Text und Überschrift (ja, auch Symbole!) entwerfern ;)

MfG, M:Dk

//Edit: OK, eigeentlich heißen sie BaloonTips, aba in der HTL von einem Freund von mir nennen sie sie BubbleTips (weils ne Sprechblase is, schätz ich mal :))

Verfasst: 03.06.2008 14:37
von Fox
Hi.. Danke hat mir schonmal sehr geholfen :)

Nur möchte ich,das die BTT am SysTrayIcon in der Taskleiste angezeigt wird, wenn etwas bestimmtes, z.b. ein download oder igrendeine Programmfunktion ausgeführt wurde...

Therotisch dachte ich gar kein Problem, aber ich kann ja den BTT nur mit Gadget IDS machen...Wie mache ich das, dass es am SysTrayIcon angezeigt wird?


Danke euch

Gruß

FoX

Verfasst: 03.06.2008 14:44
von edel
In dem du die Hilfe oeffnest und unter SysTray nachguckst.

Verfasst: 03.06.2008 14:49
von ts-soft
SysTrayIconEx V1.0 for PB4
Wirste wohl für PB 4.20 neu mit TailBite erstellen müssen, Source ist bei.

Gruß
Thomas

Verfasst: 03.06.2008 14:53
von Kiffi
so auf die Schnelle gefunden:

Hier gibt's einen entsprechenden Code von MarkH(?):
http://www.purebasic.fr/english/viewtop ... 6304#66304

ich habe ihn mal PB4.x - lauffähig gemacht und unten gepostet:

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,"Status Area(Systray) Balloon tip example",#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 "c:\programme\PureBasic\Examples\Sources\Data\CdPlayer.ico"
EndDataSection
Grüße ... Kiffi

// Edit:

@edel: kann man nativ einen Tooltip aufrufen, ohne mit der Maus über
dem Icon zu sein?

Verfasst: 03.06.2008 15:03
von Mok
Kiffi hat geschrieben:@edel: kann man nativ einen Tooltip aufrufen, ohne mit der Maus über
dem Icon zu sein?
Ich bin zwar nich edel, aber bei mir funzt's nich... aber ich arbeite auch mit Bild

Verfasst: 03.06.2008 15:08
von Kiffi
Mok hat geschrieben:aber ich arbeite auch mit Bild
<OT>
wieso nicht 4.2?
</OT>

Dann nimmst Du halt den von mir verlinkten Code.

Grüße ... Kiffi

Verfasst: 03.06.2008 15:27
von Mok
Kiffi hat geschrieben:
Mok hat geschrieben:aber ich arbeite auch mit Bild
<OT>
wieso nicht 4.2?
</OT>
Das is ne sehr lange Story, ich könnte sie dir per PN schreiben, da würdest du aber viele Dosen RedBull brauchen um nicht einzuschlafen (wegen der Länge... und der Langweile :)). Ich mach's mal kurz: Ich hab damals, als noch 4.0-Zeiten waren mal die Beta runtergeladen. Als ich sie öffnette, sah sie auch ganz so wie 3.94 aus. Ich hatte bisher nur 94er Codes, und ich war ahnungslos, dass sich einige Befehle in v4 änderten. Also importierte ich einen Anno-3.94-Code und als ich [F5] drückte was in ungefähr jeder Zeile ein Fehler (Anzahl der Parameter, String gehört zu String und Float ist nicht Long und so weiter)
Wenn alle Befehle nun andere (mehr) Parameter haben, ist v4 fast so wie eine eigene Programmiersprache, die sich stark an 3.94 anlehnt. Aber ich glaub trotz alldem werd ich mir Version 4.20 besorgen, da ich wahrscheinlich der Einzige im Forum bin, der se noch nicht hat, und wenn ich mal wieder ein Prob hab, kann mir keiner helfen, da in v4 allen anders is.