Ayuda con clase derivada de CStatic
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.
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.
