<html><div style='background-color:'><DIV class=RTE>
<P>Muchas gracias por la info, ...es muy complicado! Pensé que tendría un numerito ASCII la combinación Ctrl+C y bastaba comparar y poco más pero usar mensajes y todo...en fin haré lo que pueda, gracias!</P>
<P>Un saludo.</P>
<P>Cris<BR><BR></P></DIV>
<DIV></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #a0c6e5 2px solid; MARGIN-RIGHT: 0px"><FONT style="FONT-SIZE: 11px; FONT-FAMILY: tahoma,sans-serif">
<HR color=#a0c6e5 SIZE=1>

<DIV></DIV>From:  <I>Steven Davidson <steven@conclase.net></I><BR>Reply-To:  <I>Lista de correo sobre C y C++ <cconclase@listas.conclase.net></I><BR>To:  <I>cconclase@listas.conclase.net</I><BR>Subject:  <I>Re: [C con Clase] primer mensaje</I><BR>Date:  <I>Mon, 28 May 2007 15:06:31 -0500</I><BR>>Hola Cristina,<BR>><BR>>El pasado 2007-05-28 18:05:53, Cristina escribió:<BR>><BR>>C> Es la primera vez que me apunto a algo así, así que es probable qu me equivoque con la finalidad de esta lista, me ha parecido que es en plan foro de preguntas, y yo tengo una pregunta, pero si no es así y me he equivocado pido mil perdones.<BR>><BR>>No. No te has equivocado. Pregunta cuanto desees acerca de C/C++, los cursos que presentamos en nuestra página, y en general sobre la programación e 
informática.<BR>><BR>>C> Por si acaso yo pregunto:<BR>>C> Cómo se captura programando en C con el API de windows(compilado con Visual Studio .NET, que es lo que tienen en la facultad) el presionado de las teclas control y "c" a la vez? en Unix es un SIGINT pero en Windows no sé que puedo hacer, ya que tampoco me vale una captura y comprobacion del CTRL y luego de la "C" por que no son dos pulsaciones.<BR>><BR>>Bajo una aplicación de MS-Windows, tenemos varias formas de averiguar esta y cualesquier combinaciones de teclas. Te presento algunas implementaciones:<BR>><BR>>1. Puedes procesar el mensaje WM_KEYDOWN, cuando se pulse una tecla. Como estamos manejando teclas, y no caracteres, usamos las teclas virtuales de MS-Windows. Por ejemplo,<BR>><BR>>   case WM_KEYDOWN:<BR>>     if( 'C' == wParam && 
GetKeyState(VK_CONTROL) >> 8 )<BR>>     {<BR>>       TCHAR szMsg[] = TEXT("CTRL+C");<BR>>       HDC hdc = GetDC( hwnd );<BR>>         TextOut( hdc, 10,10, szMsg, sizeof szMsg / sizeof(TCHAR) - 1 );<BR>>       ReleaseDC( hwnd, hdc );<BR>>     }<BR>>   break;<BR>>   ...<BR>>return DefWindowProc( hwnd, message, wParam, lParam );<BR>><BR>>Como puedes ver, tenemos que pasar 'wParam' invariable a 'TranslateMessage()'. Esto es porque esta función traducirá los mensajes asociados al teclado a caracteres enviando el mensaje 'WM_CHAR'.<BR>><BR>>También puedes observar que el código virtual de la tecla C equivale al carácter ASCII de 'C'.<BR>><BR>>Como el 
usuario puede haber pulsado la tecla C por sí sola, tenemos que comprobar si también hubo una pulsación de la tecla CTRL. Para esto, comprobamos el estado de tal tecla con 'GetKeyState()'. En general, podemos usar 'GetAsyncKeyState()'.<BR>><BR>>2. Registramos un "hot key" (no pienso traducir estas dos palabras en español). Esto se hace con la función 'RegisterHotKey()', pero tenemos que recordar cancelar el registro al final de nuestra aplicación, a más tardar, con la función 'UnregisterHotKey()'. Después de la registración, procesamos el mensaje 'WM_HOTKEY' si el usuario pulsa la combinación de teclas que registramos. Por ejemplo,<BR>><BR>>case WM_CREATE:<BR>>   RegisterHotKey( hwnd, 1, MOD_CONTROL, 'C' );<BR>>   ...<BR>><BR>>case WM_DESTROY:<BR>>   UnregisterHotKey( hwnd, 1 );<BR>>   ...<BR>><BR>>case 
WM_HOTKEY:<BR>>   if( 1 == wParam )<BR>>   {<BR>>     TCHAR szMsg[] = TEXT("CTRL+C");<BR>>     HDC hdc = GetDC( hwnd );<BR>>       TextOut( hdc, 10,120, szMsg, sizeof szMsg / sizeof(TCHAR) - 1 );<BR>>     ReleaseDC( hwnd, hdc );<BR>>     return 0;<BR>>   }<BR>>break;<BR>><BR>>El valor de 1 indica un número de identificación asociado al "hotkey" que registramos previamente.<BR>><BR>><BR>>Espero que esto te sirva.<BR>><BR>>Steven<BR>>_______________________________________________<BR>>Lista de correo Cconclase Cconclase@listas.conclase.net<BR>>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net<BR>>Bajas: 
http://listas.conclase.net/index.php?gid=2&mnu=FAQ<BR></FONT></BLOCKQUOTE></div><br clear=all><hr>Charla con tus amigos en línea mediante MSN Messenger: <a href="http://g.msn.com/8HMBES/2728??PS=47575" target="_top">Haz clic aquí</a> </html>