- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can have tooltips on toolbar items.
Can you have "tooltips" on buttons?
If you can, how do you do them.
Thanks,
David
Can you have "tooltips" on buttons?
If you can, how do you do them.
Thanks,
David
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here's a snip from an actual app which does just that. To be honest, it's evolved from a working 3rd-party example and I'm not on a solid ground why and whether it has to be so complicated... but then, if it works for me, it could also work for you. The dialog actually consists only of four buttons and serves as a "sub-toolbar" like in AutoCad. Here's its dialogproc:
(To be continued...)
!===============================================================
LOGICAL(4) FUNCTION BojenjeDlgProc(hWnd,Msg,wParam,lParam)
!DEC$ATTRIBUTES STDCALL:: BojenjeDlgProc
USE DFWIN
USE COMCTL
USE HISTORY
USE GLOBALS
USE REGISTRY
USE UKS
IMPLICIT NONE
INCLUDE "Resource.fd"
INCLUDE 'Strings.fd' ! Contains string definitions (S_TT_ stuff)
INTEGER:: hWnd,Msg,wParam,lParam
INTEGER:: IDCommand(4)=(/ID_BUTTON_PONAP,ID_BUTTON_POGRA, &
ID_BUTTON_POIZV,ID_BUTTON_POSTA/)
CHARACTER*32:: szTool(4)= &
(/S_TT_COLOR_LEVEL, &
S_TT_COLOR_AREA, &
S_TT_COLOR_FEEDER, &
S_TT_COLOR_ENERGIZATION/)
TYPE(T_RECT):: Rect
TYPE(T_POINT):: PT
TYPE(T_TTTOOLINFO):: TI
INTEGER:: iSt, i, ID, iState
INTERFACE
INTEGER(4) FUNCTION HookProc(nCode,wParam,lParam)
!DEC$ATTRIBUTES STDCALL:: HookProc
INTEGER,INTENT(IN):: nCode,wParam,lParam
END FUNCTION
END INTERFACE
SELECT CASE(Msg)
CASE (WM_INITDIALOG)
!iSt=ScreenToClient(hMDI,PT)
iSt=SendMessage(GetDlgItem(hWnd,ID_BUTTON_PONAP),BM_SETIMAGE,IMAGE_BITMAP,hBojenjeBmp(1))
iSt=SendMessage(GetDlgItem(hWnd,ID_BUTTON_POGRA),BM_SETIMAGE,IMAGE_BITMAP,hBojenjeBmp(2))
iSt=SendMessage(GetDlgItem(hWnd,ID_BUTTON_POIZV),BM_SETIMAGE,IMAGE_BITMAP,hBojenjeBmp(3))
iSt=SendMessage(GetDlgItem(hWnd,ID_BUTTON_POSTA),BM_SETIMAGE,IMAGE_BITMAP,hBojenjeBmp(4))
iSt=SendMessage(GetDlgItem(hWnd,ID_BUTTON_POSTA),BM_SETCHECK,BST_CHECKED,0)
hTooltip=CreateWindowEx(WS_EX_TOPMOST, "TOOLTIPS_CLASS32"C,""C, &
TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, &
CW_USEDEFAULT, hFrame, NULL, hInst, NULL)
hHook=SetWindowsHookEx(WH_GETMESSAGE,LOC(HookProc),NULL,GetCurrentThreadId())
Rect=T_RECT(0,0,0,0)
DO i=1,4
TI=T_TTTOOLINFO(32,TTF_IDISHWND,hWnd,GetDlgItem(hWnd,IDCommand(i)),Rect,0,LOC(szTool(i)),0)
iSt=SendMessage(hTooltip, TTM_ADDTOOL,0,LOC(TI))
END DO
BojenjeDlgProc=.FALSE.
CASE (WM_COMMAND)
!(Stripped)
CASE DEFAULT
BojenjeDlgProc=.FALSE.
END SELECT
END FUNCTION BojenjeDlgProc
(To be continued...)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
...here's HookProc:
HTH
Jugoslav
!================================================================
INTEGER(4) FUNCTION HookProc(nCode,wParam,lParam)
!DEC$ATTRIBUTES STDCALL:: HookProc
USE DFWIN
USE COMCTL
USE GLOBALS
USE REGISTRY
IMPLICIT NONE
INTEGER,INTENT(IN):: nCode,wParam,lParam
INTEGER:: iSt
TYPE(T_MSG):: Msg,MsgOut
POINTER(pMsg,Msg)
INCLUDE "Resource.fd"
pMsg=lParam
IF (Msg%hWnd.EQ.GetDlgItem(hBojenje,ID_BUTTON_PONAP) .OR. &
Msg%hWnd.EQ.GetDlgItem(hBojenje,ID_BUTTON_POGRA) .OR. &
Msg%hWnd.EQ.GetDlgItem(hBojenje,ID_BUTTON_POIZV) .OR. &
Msg%hWnd.EQ.GetDlgItem(hBojenje,ID_BUTTON_POSTA)) THEN
SELECT CASE (Msg%Message)
CASE (WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP,WM_RBUTTONDOWN,WM_RBUTTONUP)
MsgOut%lParam = Msg%lParam
MsgOut%wParam = Msg%wParam
MsgOut%Message = Msg%Message
MsgOut%hwnd = Msg%Hwnd
iSt=SendMessage(hTooltip, TTM_RELAYEVENT, 0, LOC(MsgOut))
END SELECT
HookProc=CallNextHookEx(hHook,nCode,wParam,lParam)
ELSE IF (...
!Snipped part for other dialogs
HookProc=CallNextHookEx(hHook,nCode,wParam,lParam)
ELSE
HookProc=CallNextHookEx(hHook,nCode,wParam,lParam)
END IF
END FUNCTION HookProc
HTH
Jugoslav
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jugoslav,
Thanks again for you help.
I got the tool tips to work. I don't know how any body could work that out for themselves.
I simplified HookProc, I wanted tips for all the buttons.
Thanks again for you help.
I got the tool tips to work. I don't know how any body could work that out for themselves.
I simplified HookProc, I wanted tips for all the buttons.
INTEGER(4) FUNCTION HookProc(nCode,wParam,lParam) ------------------------------------------------- !DEC$ATTRIBUTES STDCALL:: HookProc ! tool tips USE dfwin USE global INTEGER:: nCode,wParam,lParam INTEGER:: iSt TYPE(T_MSG):: Msg POINTER(pMsg,Msg) INCLUDE 'Resource.fd' pMsg=lParam SELECT CASE (Msg%Message) CASE (WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP,WM_RBUTTONDOWN,WM_RBUTTONUP) iSt=SendMessage(hTooltip, TTM_RELAYEVENT, 0, LOC(Msg)) END SELECT HookProc=CallNextHookEx(hHook,nCode,wParam,lParam) END FUNCTION HookProc
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page