Hola y gracias anticipadas;
tengo una clase derivada de CStatic que muestra el texto del control de manera que parezca un hiperlink (en azul y subrayado), pero cómo la clase base es CStatic sólo responde a los "clics" del ratón mediante el mensaje BN_CLICKED.
Yo lo que quiero es que, además de eso, sea capaz de abrir el diálogo al que hace referencia el hiperlink cuando el control tenga el foco y se pulse ENTER.
Para ello he usado este código, pero aunque compila y captura las pulsaciones de ENTER, no envía correctamente el mensaje (he mirado la ayuda de OnLButtonDown() y por lo que se ve el sistema se "calza" el CPoint que se le pasa como argumento y pone el actual del ratón o algo por el estilo):
---------------------------------------------------------------------------
BOOL CHiperlink::PreTranslateMessage(MSG* pMsg)
{
switch (pMsg -> message)
{
case WM_KEYDOWN:
if((pMsg -> wParam == VK_RETURN) & (TieneFoco == TRUE))
{
CRect Rect;
CPoint Point;
GetClientRect(Rect);
ClientToScreen(Rect);
Point = Rect.TopLeft();
Point.Offset(1,0);
OnLButtonDown(MK_LBUTTON, Point);
return TRUE;
}
break;
}
return CStatic::PreTranslateMessage(pMsg);
}
---------------------------------------------------------------------------
Si alguien sabe otra forma de hacer lo mismo, otro planteamiento distinto, qué hago mal,... le agradecería que me lo comentase.
Saludos.