ToolTip con Imagen
- Antonio Linares
- Site Admin
- Posts: 42521
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 31 times
- Been thanked: 76 times
- Contact:
Re: ToolTip con Imagen
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:
-
Le he quitado todas las caracteristicas al tooltip: balloon, title, etc... y sigue sin sacar la imagen.
Asi ha quedado:
Code: Select all | Expand
...
hWnd = CreateToolTip( Self:hWnd, cToolTip, .F.)
SetAddTool(hWnd)
#define STM_SETIMAGE 0x0172
hBitmap := ReadBitmap( 0, "\video.bmp")
SendMessage( hWnd, STM_SETIMAGE, 0, hBitmap )
- Antonio Linares
- Site Admin
- Posts: 42521
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 31 times
- Been thanked: 76 times
- Contact:
Re: ToolTip con Imagen
Paco,
Comprueba que el hBitmap sea correcto:
hBitmap := ReadBitmap( 0, "\video.bmp")
MsgInfo( hBitmap )
SendMessage( hWnd, STM_SETIMAGE, 0, hBitmap )
Comprueba que el hBitmap sea correcto:
hBitmap := ReadBitmap( 0, "\video.bmp")
MsgInfo( hBitmap )
SendMessage( hWnd, STM_SETIMAGE, 0, hBitmap )
Re: ToolTip con Imagen
Lo comprobe antes. Me dio un numero negativo muy grande. Asumi que era correcto.
Ahora uno de los numeros que me da es 369446019
Ahora uno de los numeros que me da es 369446019
Re: ToolTip con Imagen
¿ Necesitaré modificare el manifest ?
He hecho una prueba.
n1 y n3 devuelven 0. En cambio n2 devuelve 120. No sé si puede ser una pista.
He hecho una prueba.
Code: Select all | Expand
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.
- Antonio Linares
- Site Admin
- Posts: 42521
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 31 times
- Been thanked: 76 times
- Contact:
Re: ToolTip con Imagen
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()
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()
Re: ToolTip con Imagen
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:
Mis pruebas han sido:
Code: Select all | Expand
#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
- Antonio Linares
- Site Admin
- Posts: 42521
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 31 times
- Been thanked: 76 times
- Contact:
Re: ToolTip con Imagen
Paco,
Y como tenemos el hWnd del tooltip, has probado a dibujar un bitmap directamente en él ?
Y como tenemos el hWnd del tooltip, has probado a dibujar un bitmap directamente en él ?
Re: ToolTip con Imagen
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
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...![Sad :(](./images/smilies/icon_sad.gif)
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
![Embarassed :oops:](./images/smilies/icon_redface.gif)
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...
![Sad :(](./images/smilies/icon_sad.gif)
Re: ToolTip con Imagen
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
// 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](http://s4.postimg.org/yakbj8j9p/Title187.png)
![Image](http://s12.postimg.org/tzzh7an31/Title188.png)
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
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