Frage zu NOTIFYICONDATA

13/12/2013 - 12:15 von Wolfgang Wolf | Report spam
Hallo,

ich verwende NOTIFYICONDATA um ein Icon im Infobereich anzuzeigen.
Anders als in den meisten Tipps habe ich versucht die
Picture-Eigenschaft einer PictureBox zu verwenden. Das funktioniert wenn
ich eine ico-Datei zuvor in die Picturebox lade. Mein Besterben wàre
aber, die VB-Zeichenmethoden dafür anzuwenden um mir mein Bild für den
Infobereich sebst zu zeichnen.

Übrigens, das funktioniert nur mit einer zuvor geladenen ico-Datei,
nicht mit einer bmp. Ich vermute mal, dass hier irgendwo auch der Hund
begraben liegt.

Möchte damit erreichen, dass ich über das Infobereich-Symbol dem
Anwender visuelle Rückmeldungen geben kann. Kann mir dazu jemand einen
Tipp geben?

Mein Code:

Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
UID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Public NI As NOTIFYICONDATA
Public Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage
As Long, lpData As NOTIFYICONDATA) As Long
Public Const NIM_ADD = &H0&
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200

Me.TrayIcon.AutoRedraw = True
Me.TrayIcon.PSet (15, 15), vbRed

NI.cbSize = Len(NI)
NI.hWnd = Me.TrayIcon.hWnd 'Verweis zu der PictureBox
NI.UID = 0
NI.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
NI.hIcon = Me.TrayIcon.Picture
NI.szTip = "Tooltipp" & Chr$(0)
Do
NI.UID = NI.UID + 1
i = Shell_NotifyIconA(NIM_ADD, NI)
Loop While i = 0

Schönen Gruß
W. Wolf
 

Lesen sie die antworten

#1 G.Wietzorek
13/12/2013 - 16:29 | Warnen spam
Am 13.12.2013 12:15, schrieb Wolfgang Wolf:
Hallo,

ich verwende NOTIFYICONDATA um ein Icon im Infobereich anzuzeigen.
Anders als in den meisten Tipps habe ich versucht die
Picture-Eigenschaft einer PictureBox zu verwenden. Das funktioniert wenn
ich eine ico-Datei zuvor in die Picturebox lade. Mein Besterben wàre
aber, die VB-Zeichenmethoden dafür anzuwenden um mir mein Bild für den
Infobereich sebst zu zeichnen.

Übrigens, das funktioniert nur mit einer zuvor geladenen ico-Datei,
nicht mit einer bmp. Ich vermute mal, dass hier irgendwo auch der Hund
begraben liegt.

Möchte damit erreichen, dass ich über das Infobereich-Symbol dem
Anwender visuelle Rückmeldungen geben kann. Kann mir dazu jemand einen
Tipp geben?




Viele Wege führen nach Rom ;-).

Wenn Du Dich auf predefined Icons beschrànkst, einfach das letzte Icon
mit Shell_NotifyIconA(NIM_DELETE,...) rauswerfen und das neue wieder mit
Shell_NotifyIconA(NIM_ADD,..) rein, reicht mir und mache ich bei Status
Icons so.

oder

Selbst gezeichnete mit quick and dirty Methode verwenden: zeichne Deine
Bitmap, weise diese einer Imagelist zu und hole Dir das Icon über die
extracticon methode der Imagelist wieder heraus. Ganz ohne
Programmieraufwand.

oder

Gert


"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein

Ähnliche fragen