Ayuda con clase derivada de CStatic

GuZMan
04 de Junio del 2004
Hola y gracias anticipadas;

tengo una clase derivada de CStatic que muestra el texto asociado al 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, o que hago mal,... le agradecería que me lo comentase.

Saludos.