1

Salut,
est ce que quelqu'un sait faire ça:
bulle.bmp

Pour ceux qui velent pas réfléchir, je voudrais faire apparaitre une bulle d'info au dessus d'une icone déja en systray.

Ce serait cool en VB, mais je suppose que c des APIs Windows, je veux bien aussi un code C.
Aussi inutile que le H d'Hawaï

2

ca doit etre possible en vb

en cherchant sur www.vbfrance.com ou en posant la question sur leur forum

3

Vu qu'on peut utiliser l'API Win32 en VB, c'est presque certainement possible d'une manière ou d'une autre en VB.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

Je suis vachement content de savoir que c possible, je m'en doutais un peu au fond, mais je voudrais savoir >comment<.
Aussi inutile que le H d'Hawaï

5

-

6

peut-être, mais comment?
Aussi inutile que le H d'Hawaï

7

pour chaque objet y a une propriété dans vb qui permet de définir une infobulle.

si tu mets un texte dans cette propriété pour l'icone que tu va placer dans le systray, ca fait quelque chose ?

8

Attention avec VB l'icone du systray n'existe pas directement, faut le faire avec l'api win32 (ya des modules pour ça)
Aussi inutile que le H d'Hawaï

9

avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

10

Y'a un OCX pour ça : TaskbarIcon.ocx
Topper

11

Mais il vaut mieux utiliser l'API Win32 directement plutôt que d'alourdir son programme avec un OCX.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

12

faut pas déconner non plus ! On est plus à compter les octets de mémoire ... c'est pas l'ajout d'un ocx qui va changer radicalement le comportement du programme.
Topper

13

Kevin, l'API il est direct dans l'OCX! Seulement l'OCX est fait pour VB, alors que l'API... c'est bof-bof en VB. surtout quand tu taquines les pointeurs: VB ne supporte pas les types unsigned et quand il faut jouer avec les varptr() ca déconne vite, surtout avec les chaines de caractères qui ont des pointeurs négatifs (dès que &var > 0x7F FF FF FF).
Aussi inutile que le H d'Hawaï

14

Topper
a écrit : faut pas déconner non plus ! On est plus à compter les octets de mémoire ...

Si (les disques durs ne sont pas gratuits), et en plus ça fait un fichier de dépendance supplémentaire duquel on peut parfaitement se passer. Et en plus, appeler directement l'API Win32 est plus rapide.
squalyl
a écrit : Kevin, l'API il est direct dans l'OCX!

Mais si tu utilises l'OCX, ce n'est plus direct (vu qu'il y a l'OCX comme intermédiaire)!
Seulement l'OCX est fait pour VB, alors que l'API... c'est bof-bof en VB. surtout quand tu taquines les pointeurs: VB ne supporte pas les types unsigned et quand il faut jouer avec les varptr() ca déconne vite, surtout avec les chaines de caractères qui ont des pointeurs négatifs (dès que &var > 0x7F FF FF FF).

On n'a pas besoin de pointeurs, on passe par référence (il suffit de ne pas mettre ByVal) et les fonctions C verront ça comme un pointeur.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

15

Quant au problème du unsigned, on peut faire les calculs dans un Double, soustraire 4294967296# si la valeur dépasse 214748367#, et convertir en Long. Mais c'est rarement nécessaire.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

16

J'ai eu des problèmes avec byref!
Aussi inutile que le H d'Hawaï

17

c'est peut etre un peut tard, mais si il y en a que ca interesse:
http://faq.vb.free.fr/index.php?question=3

18

on peut le télécharger où le contrôle TaskBarIcon.ocx
Trampoline Powwwweeeeeerrrrrr!
Fier d'être Lyonnais

19

J'informe tout le monde que les bulles d'aides a la Windows XP c un API et sa marche pour tout.
Tout ce qui a un HWND quoi. Donc le systray mais aussi tout les autre trucs partant des contrôles jusqu'au bureau windows...
Si vous aimez les APIs,

Public Type TOOLINFO
cbSize As Long
dwFlags As Long
hwnd As Long
dwID As Long
rtRect As RECT
hInst As Long
lpszText As Long
lParam As Long
End Type

Public Type ICCEX
dwSize As Long
dwICC As Long
End Type

Public Enum EditTipIcon
etiNone = 0
etiInfo = 1
etiWarning = 2
etiError = 3
End Enum

Public Type EDITBALLOONTIP
cbStruct As Long
pszTitle As Long
pszText As Long
ttiIcon As Long
End Type

Public Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Declare Function InitCommonControlsEx Lib "comctl32.dll" (ByRef iccInit As ICCEX) As Long
Public Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long

' Set Window Pos Flags
Public Const HWND_TOPMOST As Long = -1
Public Const SWP_NOMOVE As Long = &H2
Public Const SWP_NOSIZE As Long = &H1

' Init Common Controls
Public Const ICC_WIN95_CLASSES As Long = &HFF

' Misc
Public Const CCM_FIRST As Long = &H2000
Public Const CCM_SETWINDOWTHEME As Long = (CCM_FIRST + &HB)
Public Const WM_USER As Long = &H400
Public Const CW_USEDEFAULT As Long = &H80000000
Public Const ECM_FIRST As Long = &H1500

' Edit Box Tip
Public Const EM_SHOWBALLOONTIP = ECM_FIRST + 3

' Window Styles
Public Const WS_POPUP As Long = &H80000000
Public Const WS_EX_TOPMOST As Long = &H8&


' ToolTips Class
Public Const TOOLTIPS_CLASSA As String = "tooltips_class32"

' ToolTips Flags
Public Const TTF_ABSOLUTE As Long = &H80
Public Const TTF_CENTERTIP As Long = &H2
Public Const TTF_DI_SETITEM As Long = &H8000
Public Const TTF_IDISHWND As Long = &H1
Public Const TTF_RTLREADING As Long = &H4
Public Const TTF_SUBCLASS As Long = &H10
Public Const TTF_TRACK As Long = &H20
Public Const TTF_TRANSPARENT As Long = &H100

' ToolTips Icon
Public Const TTI_ERROR As Long = 3
Public Const TTI_INFO As Long = 1
Public Const TTI_NONE As Long = 0
Public Const TTI_WARNING As Long = 2

' ToolTips Message
Public Const TTM_ACTIVATE As Long = (WM_USER + 1)
Public Const TTM_ADDTOOL As Long = (WM_USER + 4)
Public Const TTM_ADJUSTRECT As Long = (WM_USER + 31)
Public Const TTM_DELTOOL As Long = (WM_USER + 5)
Public Const TTM_ENUMTOOLS As Long = (WM_USER + 14)
Public Const TTM_GETBUBBLESIZE As Long = (WM_USER + 30)
Public Const TTM_GETCURRENTTOOL As Long = (WM_USER + 15)
Public Const TTM_GETDELAYTIME As Long = (WM_USER + 21)
Public Const TTM_GETMARGIN As Long = (WM_USER + 27)
Public Const TTM_GETMAXTIPWIDTH As Long = (WM_USER + 25)
Public Const TTM_GETTEXT As Long = (WM_USER + 11)
Public Const TTM_GETTIPBKCOLOR As Long = (WM_USER + 22)
Public Const TTM_GETTIPTEXTCOLOR As Long = (WM_USER + 23)
Public Const TTM_GETTOOLCOUNT As Long = (WM_USER + 13)
Public Const TTM_GETTOOLINFO As Long = (WM_USER + 8)
Public Const TTM_HITTEST As Long = (WM_USER + 10)
Public Const TTM_NEWTOOLRECT As Long = (WM_USER + 6)
Public Const TTM_POP As Long = (WM_USER + 28)
Public Const TTM_POPUP As Long = (WM_USER + 34)
Public Const TTM_RELAYEVENT As Long = (WM_USER + 7)
Public Const TTM_SETDELAYTIME As Long = (WM_USER + 3)
Public Const TTM_SETMARGIN As Long = (WM_USER + 26)
Public Const TTM_SETMAXTIPWIDTH As Long = (WM_USER + 24)
Public Const TTM_SETTIPBKCOLOR As Long = (WM_USER + 19)
Public Const TTM_SETTIPTEXTCOLOR As Long = (WM_USER + 20)
Public Const TTM_SETTITLE As Long = (WM_USER + 32)
Public Const TTM_SETTOOLINFO As Long = (WM_USER + 9)
Public Const TTM_SETWINDOWTHEME As Long = CCM_SETWINDOWTHEME
Public Const TTM_TRACKACTIVATE As Long = (WM_USER + 17)
Public Const TTM_TRACKPOSITION As Long = (WM_USER + 18)
Public Const TTM_UPDATE As Long = (WM_USER + 29)
Public Const TTM_UPDATETIPTEXT As Long = (WM_USER + 12)
Public Const TTM_WINDOWFROMPOINT As Long = (WM_USER + 16)

' ToolTips Notification
Public Const TTN_FIRST As Long = (-520)
Public Const TTN_GETDISPINFO As Long = (TTN_FIRST - 0)
Public Const TTN_LAST As Long = (-549)
Public Const TTN_LINKCLICK As Long = (TTN_FIRST - 3)
Public Const TTN_NEEDTEXT As Long = TTN_GETDISPINFO
Public Const TTN_POP As Long = (TTN_FIRST - 2)
Public Const TTN_SHOW As Long = (TTN_FIRST - 1)

' ToolTips Creation Flags
Public Const TTS_ALWAYSTIP As Long = &H1
Public Const TTS_BALLOON As Long = &H40
Public Const TTS_NOANIMATE As Long = &H10
Public Const TTS_NOFADE As Long = &H20
Public Const TTS_NOPREFIX As Long = &H2

Global ghWndTip As Long, ghWndParent As Long


Et voila le code :


Public Sub StartTip(hWndParent As Long)

Dim hWndTip As Long, dwFlags As Long, ICEx As ICCEX

dwFlags = TTS_NOPREFIX Or TTS_ALWAYSTIP Or TTS_BALLOON

With ICEx
.dwSize = Len(ICEx)
.dwICC = ICC_WIN95_CLASSES
End With

InitCommonControlsEx ICEx

hWndTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASSA, "", WS_POPUP Or dwFlags, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWndParent, 0, App.hInstance, ByVal 0&)

If hWndTip = 0 Then Exit Sub

SetWindowPos hWndTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

ghWndTip = hWndTip
ghWndParent = hWndParent

End Sub

Public Sub CreateBalloon(hWndOwner As Long, szText As String)

Dim tiInfo As TOOLINFO

With tiInfo

.dwFlags = TTF_SUBCLASS Or TTF_TRANSPARENT
.hwnd = hWndOwner
.lpszText = StrPtr(StrConv(szText, vbFromUnicode))
.hInst = App.hInstance
GetClientRect hWndOwner, .rtRect

.cbSize = Len(tiInfo)

End With

SendMessage ghWndTip, TTM_ADDTOOL, 0&, tiInfo

End Sub

Public Sub ShowBalloonTip(hwndEdit As Long, szTitle As String, szText As String, tipIcon As EditTipIcon)

Dim ebtTip As EDITBALLOONTIP

With ebtTip
.cbStruct = Len(ebtTip)
.pszText = StrPtr(szText)
.pszTitle = StrPtr(szTitle)
.ttiIcon = tipIcon
End With

SendMessage hwndEdit, EM_SHOWBALLOONTIP, 0&, ebtTip

End Sub


Et pour l'appeler...

CreateBalloon Me.Picture1.hwnd, "This is a picture box with a ballon tip"


Comme sa, pas de OCX ou de ByRef...
* MyRegiga - The CRAG Forever
* Vivre libre ou mourrir !!
* fab8dc041b1c8248f05e376f698c060
* Ma casquette a celui qui me trouve un message qui digéré donne ce hash !!
* p3ch3 m31b4 powaa

20

Ptein, c illisible mon truc eek
* MyRegiga - The CRAG Forever
* Vivre libre ou mourrir !!
* fab8dc041b1c8248f05e376f698c060
* Ma casquette a celui qui me trouve un message qui digéré donne ce hash !!
* p3ch3 m31b4 powaa

21

si tu l'avais pas mis en vert fluo aussi...

22

tu peux afficher des messages tant que tu veux dans ces bulles ... ca ne se fait pas auto donc !
ensuite, faut juste aller sur la msdn pour trouver comment on fait je pense, non ?

23

http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/em_showballoontip.asp
Minimum operating systems Windows XP

Bref, n'utilisez-pas ça, ou vous allez rendre vos programmes incompatibles avec toutes les versions plus anciennes de Windows que pas mal de monde utilise!!!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

24

ben c normal ces boites de dialogue la dans le systray n'existait pas avant windows xp... cheeky

25

Donc un bon programme utilise son propre code pour simuler cet effet. smile Ou, encore mieux, son propre code sous Windows <XP et la fonction prévue sous Windows >=XP.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

26

Ta déjà essayé de faire du grapique avancé avec 95/98 ?
C trop galère
A moins que tu ne veuille utiliser de l'ASM ou DirectDraw
Alors la question compatibilité ...
Et pis si tu fe ton code bonjours la rapidité...
Et pis je comprend pas les gens qui refusent d'utiliser Xp a l'heure du beta2 de LongHorn (vrai daube d'ailleur)

* MyRegiga - The CRAG Forever
* Vivre libre ou mourrir !!
* fab8dc041b1c8248f05e376f698c060
* Ma casquette a celui qui me trouve un message qui digéré donne ce hash !!
* p3ch3 m31b4 powaa