[ToolTipsHandles: 0 #16] ; Space for 16 handles
[TOOLINFOS: 0 #(48*16)] ; Space for 16 Structures
[Mode1 &TTS_NOPREFIX + &TTS_ALWAYSTIP] ; declaration of values
[Mode2 Mode1 + &TTS_BALLOON]
[uFlags &TTF_SUBCLASS + &TTF_IDISHWND]
Proc SetTTip:
;;
Only individuals
Each one has its complete system.
The Proc maintains the data
;;
Arguments @hWnd, ; Dialog or Window H
@ttnb, ; Tool tip Number
@Mode, ; Normal 1, Balloons 2
@CtlID, ; ID of Control
@ttText
Uses ebx
[@ToolMode: ?]
[@hToolHandle: ?]
If D@ttnb > 16
Call 'USER32.MessageBoxA' D$hdlg,
{'Only 16 Possible',0}, ; Text message
{'ToolTip Id TOO High',0}, ; Box title
0 ; Box style
jmp X1>>
End_If
; Setup TOLINFO
mov eax 48
; Set for Base 0
dec D@ttnb
mul D@ttnb
add eax TOOLINFOS
;ToolInfo base
mov ebx eax
nop
;Setup TOOLINFO(Array)
mov D$ebx 48 ; .cbSize
mov D$ebx + 4 uFlags ; .uFlags
mov eax D@hWnd
mov D$ebx + 8 eax ; .hWnd
Call 'USER32.GetDlgItem' eax , D@CtlID
mov D$ebx + 12 eax
mov eax D$hInstance
mov D$ebx + 32 eax
mov eax D@ttText
mov D$ebx + 36 eax
If D@Mode = 1
mov D@ToolMode Mode1
Else
mov D@ToolMode Mode2
End_If
Call 'USER32.CreateWindowExA' 0,TOOLTIPS_CLASS,0,
D@ToolMode,0,0,0,0,
D@hWnd,0,
D$hinstance,0
; Local Handle of Tool Tip
mov D@hToolHandle eax
Call 'USER32.SendMessageA' eax,;D@hToolHandle, ; Handle to tooltip 1
&TTM_ADDTOOL,
0,
ebx;TOOLINFO ; Ptr to tool
mov eax D@hToolHandle ; show valid handle,it is in the array anyway
mov edx D@ttNb
;dec edx ; base to 0 was done at top
sal edx 2 ; mult by 4
mov ebx HandlesArray
add ebx edx
mov D$ebx eax
inc D$Counter ; Satellite for Controlling display
X1:
EndP