FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ToolTip con Imagen
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 06:05 PM

No ha funcionado con el NULL

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 06:05 PM

Paco,

Y de donde obtienes hWnd ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 06:13 PM
De una llamada a la funcion CreateToolTip()

-

Le he quitado todas las caracteristicas al tooltip: balloon, title, etc... y sigue sin sacar la imagen.


Asi ha quedado:
Code (fw): Select all Collapse
...
hWnd = CreateToolTip( Self:hWnd, cToolTip, .F.)
SetAddTool(hWnd)
#define STM_SETIMAGE 0x0172
hBitmap := ReadBitmap( 0, "\video.bmp")
SendMessage( hWnd, STM_SETIMAGE, 0, hBitmap )
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 06:17 PM

Paco,

Comprueba que el hBitmap sea correcto:

hBitmap := ReadBitmap( 0, "\video.bmp")
MsgInfo( hBitmap )
SendMessage( hWnd, STM_SETIMAGE, 0, hBitmap )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 06:27 PM

Lo comprobe antes. Me dio un numero negativo muy grande. Asumi que era correcto.

Ahora uno de los numeros que me da es 369446019

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 06:30 PM
Estoy probando
Code (fw): Select all Collapse
ti.uFlags   = TTF_SUBCLASS
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 06:32 PM

tampoco

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 06:46 PM
¿ Necesitaré modificare el manifest ?

He hecho una prueba.

Code (fw): Select all Collapse
            
n1:= SendMessage(hwnd, TTM_SETDELAYTIME, TTDT_INITIAL, 300)
n2:= SendMessage(hwnd, TTM_SETMAXTIPWIDTH, 0, 1000)

SetAddTool(hWnd)

#define STM_SETIMAGE 0x0172
hBitmap := ReadBitmap( 0, "\video.bmp")
n3:= SendMessage( hWnd, STM_SETIMAGE, 0, hBitmap )


n1 y n3 devuelven 0. En cambio n2 devuelve 120. No sé si puede ser una pista.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: ToolTip con Imagen

Posted: Thu Jul 23, 2015 07:31 PM
Según se explica aqui:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb760782(v=vs.85).aspx

Tal vez tendriamos que crear el tooltip usando el estilo SS_BITMAP

O intentar cambiarle el estilo usando SetWindowLong()
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM

Re: ToolTip con Imagen

Posted: Fri Jul 24, 2015 10:58 AM
Antonio he hecho pruebas con varias combinaciones. Lo he probado tanto en Xp como en Windows 8 y no me ha salido imagen alguna.

Mis pruebas han sido:
Code (fw): Select all Collapse
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

#include <commctrl.h>

HB_FUNC( SETADDTOOL ) // hWnd
{
    TOOLINFO ti;
    HWND hWnd = ( HWND ) hb_parnl( 1 );

    ti.cbSize   = sizeof( ti );
//    ti.uFlags   = TTF_SUBCLASS; //TTF_TRANSPARENT | TTF_CENTERTIP;
    ti.uFlags   = TTF_TRANSPARENT | TTF_CENTERTIP;
    ti.hwnd     = hWnd;
    ti.uId       = 0;
    ti.hinst    = NULL;
    ti.lpszText = NULL;       //LPSTR_TEXTCALLBACK;

    GetClientRect( hWnd, &ti.rect );



//    SetWindowLong( hWnd, GWL_STYLE,   WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP | TTS_BALLOON) ;
//    SetWindowLong( hWnd, GWL_EXSTYLE, WS_EX_TOPMOST | WS_EX_TOOLWINDOW ) ;


//   SetWindowLong( hWnd, GWL_STYLE,   WS_CLIPSIBLINGS|WS_CHILD|WS_VISIBLE|SS_BITMAP|WS_TABSTOP) ;
   SetWindowLong( hWnd, GWL_STYLE,   SS_BITMAP) ;





    SendMessage( hWnd, TTM_ADDTOOL, 0, ( LPARAM ) &ti );



    SetWindowLong( hWnd, GWL_STYLE,   SS_BITMAP) ;




 //    SetWindowLong( hWnd, GWL_STYLE, TBSTYLE_TOOLTIPS | TBSTYLE_FLAT ) ;

 //    SetWindowLong( hWnd, GWL_STYLE, TBSTYLE_TOOLTIPS | TBSTYLE_FLAT | WS_EX_TOOLWINDOW ) ;


 //    SetWindowLong( hWnd, GWL_STYLE, TBSTYLE_TOOLTIPS | TBSTYLE_FLAT | WS_EX_TOPMOST|WS_EX_TOOLWINDO) ;






//    SetWindowLong( hWnd, GWL_STYLE,   TOOLTIPS_CLASS ³ WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP | TTS_BALLOON) ;


}

#pragma ENDDUM
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: ToolTip con Imagen

Posted: Fri Jul 24, 2015 11:02 AM

Paco,

Y como tenemos el hWnd del tooltip, has probado a dibujar un bitmap directamente en él ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM

Re: ToolTip con Imagen

Posted: Fri Jul 24, 2015 11:23 AM

No, no lo he intentado. Primero he querido agotar todas las posibilidades por esta via.

Podria ser un camino escribir directamente... pero ese camino, como este, puede traer otras dificultades... habria que emprenderlo.
De momento, en esto he consumido casi toda mi gasolina... han sido muchas horas de pruebas :oops: empezé con los c5tooltip, adaptando la tsbrowse, la window, luego el STM_SETIMAGE, ahora debo pasar a otra cosa.

Es una pena... porque creo que tener tooltips con imagenes nos abriria una gran puerta... imaginate poder visualizar los preview file que ha estado desarrollando Manuel, o incluso los meta file que son displayables directamente,... habia pensado que podria tener 2 tamaños, el normal y otro cuando se tuviera pulsado la tecla control: haria que la imagen fuera mas grande y el tooltip tambien...

Ya te digo... ahora tengo que pasar a otra cosa... :(

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM

Re: ToolTip con Imagen

Posted: Sun Jul 26, 2015 11:11 AM
hmpaquito wrote:Gracias Marcelo por su comentario.

No he visto ninguna clase que incorpore el C5ToolTip. Los ejemplos que he visto solo son pruebas de concepto, pero no estan aplicados a ninguna clase y por ende no aparece en ellos el ciclo del tooltip de creacion-new()/ mostrado-show()/ destruccion-destroy()

Efectivamente estaba viendo las posibilidades de C5ToolTip e implementandolo dentro de un control TSBrowse.
En primera instancia la implementacion que he hecho hace crash porque porque consume todos los recursos.

He visto que el señor Silvio ha dado unas pautas, que voy a probar, en http://fivetechsupport.com/forums/viewt ... =0#p142167

Saludos


Prueba este ejemplo

Aun quedan por estudiar el funcionamiento de algunas datas, y quizas modificar la clase, pero el funcionamiento parece ser correcto y he comprobado que no hay fugas de recursos


//CheckRes.txt
07/26/15 13:03:12: D:\Fwh\Fwh1506\samples\tooltip.exe -- ====================================================================================================


Code (fw): Select all Collapse
// This sample shows how to easily implement 'tool-tips' in FiveWin!

#include "FiveWin.ch"

static oWnd

//----------------------------------------------------------------------------//

function Main()

   local oBar, oBtn
   SetResDebug( .T. )

   DEFINE WINDOW oWnd TITLE "ToolTips in FiveWin!"

   DEFINE BUTTONBAR oBar 3D SIZE 33, 33 OF oWnd

   DEFINE BUTTON OF oBar ACTION MsgInfo( "One" )   TOOLTIP "This is a long tooltip"
   DEFINE BUTTON OF oBar ACTION MsgInfo( "Two" )   TOOLTIP "Two"
   DEFINE BUTTON OF oBar ACTION MsgInfo( "Three" ) TOOLTIP "Three"
   DEFINE BUTTON OF oBar ACTION MsgInfo( "Four" )  TOOLTIP "Four"

   @ 10, 8 BUTTON oBtn PROMPT "Where is my tooltip?" SIZE 180, 28 OF oWnd ;
      ACTION MsgInfo( "Oh! Thanks!" )

   // Manipulate directly the cToolTip DATA of other controls than ButtonBitmaps
   oBtn:cToolTip = { || HazC5ToolTip( oBtn ) } //"Here it is!"

   SET MESSAGE OF oWnd ;
     TO "FiveWin: CA-Clipper, xBase && OOPS development power" CENTER

   ACTIVATE WINDOW oWnd

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

return nil

//----------------------------------------------------------------------------//

Function HazC5ToolTip( oCtrl )
Local oTip
//New( nTop, nLeft, nWidth, nHeight, oWnd, lDisenio, nClrPane, nClrPane2, nClrText, nWRadio, nHRadio ) CLASS TC5ToolTip
oTip := TC5ToolTip():New( 0 , 0 , 200, 150, oWnd, , CLR_GRAY, CLR_WHITE, CLR_RED, , )
oTip:lLineHeader       := .T.
oTip:cHeader             := "Header"
oTip:cBmpHeader     := "..\bitmaps\16edit.bmp"

oTip:lLineFoot           := .T.
oTip:cFoot                 := "Footer"
oTip:cBmpFoot         := "..\bitmaps\16object.bmp"


oTip:lSplitHdr           := .T.
oTip:lLeft                  := .T.
oTip:cBmpLeft         := "..\bitmaps\16code.bmp"

oTip:lRightAlignBody  := .T.
oTip:cBody               := "En un lugar de la Mancha de cuyo nombre no quiero acordarme"

oTip:lBtnClose          := .F.      //.T.
oTip:lBorder             := .F.

oCtrl:oToolTip      := oTip
Return oTip

//----------------------------------------------------------------------------//






Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces

Continue the discussion