Visual C++ .NET - Tooltips en Treview MFC

 
Vista:

Tooltips en Treview MFC

Publicado por ismasps (1 intervención) el 16/01/2013 16:17:56
Hola a todos,

llevo poco tiempo con visual c++ 2005 y tengo un problema con los tooltips de los treeviews. He conseguido asignar a los items el tooltip que quiero que aparezca cuando el ratón se posicione encima, pero cuando abro alguna rama del treeview y los items se desplazan hacia abajo, los tooltips siguen apareciendo en la posición que tenían anteriormente y por tanto en otro item distinto.
Supongo que lo que estoy haciendo es asignar el tooltip a una posición de la pantalla no al item en sí.

Os pego un trozo del código que estoy usando:

CToolTipCtrl *p_tTCtrl;
p_tTCtrl= new CToolTipCtrl();
p_tTCtrl->Create(this);

Por cada item con tooltip:
m_tree.SelectItem(hFD);
// Obtiene los tooltips del treeview
// Obtiene las coordenadas del item
RECT itemRect;
BOOL b = m_tree.GetItemRect(hFD, &itemRect, 0);
//Enlace el item con su tooltip
b = p_tTCtrl->AddTool(&m_tree, pTlv->ttq , &itemRect, i);


He leido en alguna documentación que he encontrado que tengo que añadir al create del treeview TVS_INFOTIP e implementar el procedimiento ON_NOTIFY_REFLECT(TVN_GETINFOTIP, OnMyTreeGetInfoTip). Esto lo he hecho pero no me captura el evento.

A alguien se le ocurre algo? Alguno ha hecho algo similar?
Gracias.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problema con tooltips en TreeView

Publicado por Alejandro (265 intervenciones) el 13/02/2024 17:46:33
¡Hola Ismasps!

Tu problema puede estar relacionado con el hecho de que los tooltips están vinculados a las coordenadas de la pantalla en lugar de las coordenadas locales del ítem en el TreeView. Para solucionar esto, puedes ajustar las coordenadas del rectángulo del ítem al sistema de coordenadas del control TreeView.

Asegúrate de que al agregar el tooltip, las coordenadas del rectángulo estén en relación con el control TreeView. Puedes hacerlo restando las coordenadas del control TreeView a las coordenadas del rectángulo del Ítem. Aquí hay una modificación en tu código que podría ayudar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CToolTipCtrl* p_tTCtrl;
p_tTCtrl = new CToolTipCtrl();
p_tTCtrl->Create(this);
 
// ...
 
// Obtén las coordenadas del ítem en relación con el control TreeView
CRect treeItemRect;
m_tree.GetItemRect(hFD, &treeItemRect, FALSE);
 
// Convierte las coordenadas del ítem a coordenadas de pantalla
m_tree.ClientToScreen(&treeItemRect);
 
// Enlaza el ítem con su tooltip
p_tTCtrl->AddTool(&m_tree, pTlv->ttq, &treeItemRect, i);

Asegúrate de que estas modificaciones se realicen al agregar el tooltip para cada ítem. Esto debería ayudar a que los tooltips aparezcan correctamente incluso cuando los ítems se desplazan dentro del TreeView.

¡Espero que esto resuelva tu problema! ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar