Ver Mensaje Individual
  #5  
Antiguo 07-04-2006
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Reputación: 19
JuanErasmo Va por buen camino
Gracias Neftali...

Gracias otra vez...pero se pueden registrar varias hotkeys?
es decir que mi programa responda a A, B,C, D,E,F todas las que se tecleen...
En el ejemplo anterior solo responde a Ctrl+O, y he intentado registrar por ejemplo la O tambien y no funciona....es decir que responda a cada tecla.....
porque no funciona?
lo hago asi:
Cita:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnMessage = AppMessage;
//
// 79 es el código ASCII de la letra "O". No he conseguido encontrar la función
// correspondiente a "Ord" (en Delphi) aquí en C++ Builder. He probado con
// Integer("O") y con Cardinal("0"), pero, no funciona, así que al cabo he optado
// por pasar como tercer parámetro de "RegisterHotKey" el número 79, que ya sabes
// lo que quiere significar.
//
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey"), MOD_CONTROL, 79);
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey2"), 0 , 79);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
if (Msg.message == WM_HOTKEY)
{
if ( (LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 79) )
ShowMessage("Pulsaste las teclas CTRL + O");
}
else if ((HIWORD(Msg.lParam) == 79) )
ShowMessage("pulsaste O");
}
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey"));
}
Como ves, registro Ctrl+O y tambien O solo, pero en el parámetro MODE = MOD_CONTROL.....no se como decirle que es una tecla normal sin CTRL ni SHIFT es sola.....no se como decirle esto...puede ser que por esta razon no funcione....
Gracias si puedes ayedarme...
Responder Con Cita