Hi all
I had modified Borje's code from https://forum.powerbasic.com/forum/u...173#post794173
by adding the icon named "Canada.ico" ( this icon is available in the samples file named treeview.bas )
but unable to display the icon in the tooltips
The modified program is as below
I had modified Borje's code from https://forum.powerbasic.com/forum/u...173#post794173
by adding the icon named "Canada.ico" ( this icon is available in the samples file named treeview.bas )
but unable to display the icon in the tooltips
The modified program is as below
Code:
' Thanks to Borje ' with accelerator keys and tooltips with icon #COMPILE EXE #INCLUDE "win32api.inc" #INCLUDE "CommCtrl.Inc" %BUTTON1 = 500 : %BUTTON2 = 501 %BUTTON3 = 503 : %BUTTON4 = 504 %TAB1 = 550 %IDM_F10 = %WM_USER + 610 %IDM_F11 = %WM_USER + 611 %IDM_F12 = %WM_USER + 612 GLOBAL hWnd_ToolTip AS LONG GLOBAL hTab1, hTab2 AS LONG #RESOURCE ICON, 1100, "canada.ico" '============================================ FUNCTION PBMAIN LOCAL hDlg AS DWORD DIALOG NEW 0, "Tooltips and Accel test", , , 170, 200, %WS_CAPTION , 0 TO hDlg CONTROL ADD TAB, hDlg, %TAB1, "",0,0,170,90, , , 'CALL PBCallback() TAB INSERT PAGE hDlg, %TAB1, 1, 0, "Tab Page 1" CALL TabProc TO hTab1 CONTROL ADD BUTTON, hTab1, %BUTTON3, "Button #3", 50, 30, 50, 14 TAB INSERT PAGE hDlg, %TAB1, 2, 0, "Tab Page 2" CALL TabProc TO hTab2 CONTROL ADD BUTTON, hTab2, %BUTTON4, "Button #4", 50, 30, 50, 14 '------------------------------------------------------------------ CONTROL ADD BUTTON, hDlg, %BUTTON1, "&Close", 55, 120, 60, 25 CONTROL ADD BUTTON, hDlg, %BUTTON2, "Button #2", 55, 155, 60, 25 DIALOG SET COLOR hDlg, -1, %RGB_LEMONCHIFFON DIM ac(2) AS ACCELAPI, hAccel AS DWORD ac(0).fvirt = %FVIRTKEY : ac(0).key = %VK_F10 : ac(0).cmd = %IDM_F10 ac(1).fvirt = %FVIRTKEY : ac(1).key = %VK_F11 : ac(1).cmd = %IDM_F11 ac(2).fvirt = %FVIRTKEY : ac(2).key = %VK_F12 : ac(2).cmd = %IDM_F12 ACCEL ATTACH hDlg, ac() TO hAccel '------------------------------------------------------------------ DIALOG SHOW MODAL hDlg, CALL DLGPROC ' <- Modal or Modeless works like expected ' DIALOG SHOW MODELESS hDlg, CALL DLGPROC ' <- also works with message loop below ' DO ' DIALOG DOEVENTS ' LOOP WHILE ISWIN(hDlg) END FUNCTION '================================================================================================== ' Callback '================================================================================================== CALLBACK FUNCTION DLGPROC SELECT CASE CBMSG CASE %WM_INITDIALOG SetToolTip CBHNDL, %BUTTON2, "This is button #2" SetToolTip CBHNDL, %BUTTON1, "Click this to close the window" SetToolTip hTab1, %BUTTON3, "Tab Control Button3, Page 1" SetToolTip hTab2, %BUTTON4, "Tab Control Button4, Page 2" CASE %WM_COMMAND SELECT CASE CBCTL ' accelerator keys CASE %IDM_F10 IF CBCTLMSG = 1 THEN ? "%IDM_F10" END IF CASE %IDM_F11 IF CBCTLMSG = 1 THEN ? "%IDM_F11" END IF CASE %IDM_F12 IF CBCTLMSG = 1 THEN ? "%IDM_F12" END IF CASE %BUTTON1 IF CBCTLMSG = %BN_CLICKED THEN DIALOG END CBHNDL END IF END SELECT END SELECT END FUNCTION '================================================================================================== ' SetToolTip ' with information icon ' Note that icon styles are as follows ' https://docs.microsoft.com/en-us/windows/win32/controls/ttm-settitle ' %TTI_NONE No icon. ' %TTI_INFO Info icon. ' %TTI_WARNING Warning icon ' %TTI_ERROR Error Icon ' %TTI_INFO_LARGE Large info Icon ' %TTI_WARNING_LARGE Large error Icon ' %TTI_ERROR_LARGE Large error Icon FUNCTION SetToolTip(BYVAL hDlg AS LONG, BYVAL CtlID AS LONG, BYVAL sText AS STRING) AS LONG STATIC TI AS TOOLINFO LOCAL iStyle AS LONG LOCAL sTitle AS STRING IF IsWindow(hWnd_ToolTip) = 0 THEN iStyle = %TTS_ALWAYSTIP OR %TTS_BALLOON hWnd_ToolTip = CreateWindowEx( 0, "tooltips_class32", "", iStyle, 0, 0, 0, 0, _ hDlg, BYVAL 0&, GetModuleHandle(BYVAL 0&), BYVAL 0&) SetWindowTheme(hWnd_ToolTip, " ", " ") ' DIALOG SEND hWnd_ToolTip, %TTM_SETMAXTIPWIDTH, 0, 300 DIALOG SEND hWnd_ToolTip, %TTM_SETDELAYTIME, %TTDT_AUTOPOP, 10000 DIALOG SEND hWnd_ToolTip, %TTM_SETDELAYTIME, %TTDT_INITIAL, 500 DIALOG SEND hWnd_ToolTip, %TTM_SETDELAYTIME, %TTDT_RESHOW, 1 DIALOG SEND hWnd_ToolTip, %TTM_SETTIPBKCOLOR, %RGB_AZURE,0 sTitle = "Information" ' or whatever.. ' DIALOG SEND hWnd_ToolTip, %TTM_SETTITLE, %TTI_WARNING , STRPTR(sTitle) DIALOG SEND hWnd_ToolTip, %TTM_SETTITLE, 1100 , STRPTR(sTitle) END IF IF hWnd_ToolTip THEN TI.cbSize = SIZEOF(TI) TI.uFlags = %TTF_SUBCLASS OR %TTF_IDISHWND TI.hWnd = hDlg IF CtlID = 0 THEN TI.uId = hDlg ELSE TI.uId = GetDlgItem(hDlg, CtlID) END IF IF SendMessage(hWnd_ToolTip, %TTM_GETTOOLINFO, 0, BYVAL VARPTR(TI)) THEN CALL SendMessage(hWnd_ToolTip, %TTM_DELTOOL, 0, BYVAL VARPTR(TI)) END IF sText = sText + CHR$(0) TI.lpszText = STRPTR(sText) FUNCTION = SendMessage(hWnd_ToolTip, %TTM_ADDTOOL, 0, BYVAL VARPTR(TI)) END IF END FUNCTION '==================================================================== ' Tab Control Callback '==================================================================== CALLBACK FUNCTION TabProc SELECT CASE AS LONG CB.MSG CASE %WM_COMMAND SELECT CASE AS LONG CBCTL CASE %BUTTON3 ' on page 1 IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN ? "Tab Button3, Page1 Clicked" END IF CASE %BUTTON4 ' on page 2 IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN ? "Tab Button4, Page2 Clicked" END IF END SELECT END SELECT END FUNCTION
Comment