ToolTip con Imagen

Re: ToolTip con Imagen

Postby hmpaquito » Thu Jul 23, 2015 6:05 pm

No ha funcionado con el NULL
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ToolTip con Imagen

Postby Antonio Linares » Thu Jul 23, 2015 6:05 pm

Paco,

Y de donde obtienes hWnd ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ToolTip con Imagen

Postby hmpaquito » Thu Jul 23, 2015 6: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: Select all  Expand view
...
hWnd = CreateToolTip( Self:hWnd, cToolTip, .F.)
SetAddTool(hWnd)
#define STM_SETIMAGE 0x0172
hBitmap := ReadBitmap( 0, "\video.bmp")
SendMessage( hWnd, STM_SETIMAGE, 0, hBitmap )
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ToolTip con Imagen

Postby Antonio Linares » Thu Jul 23, 2015 6: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ToolTip con Imagen

Postby hmpaquito » Thu Jul 23, 2015 6: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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ToolTip con Imagen

Postby hmpaquito » Thu Jul 23, 2015 6:30 pm

Estoy probando
Code: Select all  Expand view
ti.uFlags   = TTF_SUBCLASS
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ToolTip con Imagen

Postby hmpaquito » Thu Jul 23, 2015 6:32 pm

tampoco
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ToolTip con Imagen

Postby hmpaquito » Thu Jul 23, 2015 6:46 pm

¿ Necesitaré modificare el manifest ?

He hecho una prueba.

Code: Select all  Expand view
           
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.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ToolTip con Imagen

Postby Antonio Linares » Thu Jul 23, 2015 7: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ToolTip con Imagen

Postby hmpaquito » 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: Select all  Expand view
#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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ToolTip con Imagen

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ToolTip con Imagen

Postby hmpaquito » 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... :(
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: ToolTip con Imagen

Postby cnavarro » 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: Select all  Expand view

// 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

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



Image


Image
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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 56 guests