- 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