winuser.h


SetFocus

La función SetFocus asigna el foco del teclado a la ventana especificada. Todas las entradas desde el teclado a partir de ese momento se dirigen a esa ventana. La ventana que tenía el foco del teclado previamente, si es que había alguna, lo pierde.

Sintaxis

HWND SetFocus(
   HWND hwnd  // manipulador a la ventana que recibirá el foco
);

Parámetros:

hwnd: identifica la ventana que recibirá el foco del teclado. Si este parámetro es NULL, las pulsaciones del teclado se ignoran.

Valor de retorno

Si la función tiene éxito, el valor de retorno es el manipulador de la ventana que tenía previamente el foco del teclado. Si no existe tal ventana, o el parámetro hwnd es inválido, el valor de retorno es NULL.

Observaciones

Si la ventana identificada por el parámetro hwnd fue creada por el proceso que llama, el estado del foco del teclado del proceso que llama se pone a hwnd.

La función SetFocus envía un mensaje WM_KILLFOCUS a la ventana que pierde el foco del teclado un mensaje WM_SETFOCUS a la ventana que lo recibe. También activa la ventana que recibe el foco o la ventana padre de la ventana que recibe el foco.

Si una ventana está activa pero no tiene el foco del teclado (es decir, ninguna ventana tiene el foco), cualquier tecla pulsada producirá un mensaje WM_SYSCHAR, WM_SYSKEYDOWN o WM_SYSKEYUP. Si la tecla VK_MENU está pulsada también, el parámetro lParam del mensaje tendrá el bit 30 activado. En otro caso, los mensaje producidos no tendrán este bit activo.

Si una aplicación no está en primer plano, y se quiere que lo esté, debe llamarse a la función SetForegroundWindow.