Compartir a través de


Recibir notificaciones de los controles comunes

Los controles comunes son ventanas secundarias que envían mensajes de notificación a la ventana primaria a eventos, como entrada del usuario, aparecen en el control.

La aplicación se basa en estos mensajes de notificación para determinar qué acciones las desea el usuario tome. La mayoría de los controles comunes envían mensajes de notificación como mensajes de WM_NOTIFY . Los controles de Windows envían la mayoría de los mensajes de notificación como mensajes de WM_COMMAND . CWnd::OnNotify es el controlador del mensaje de WM_NOTIFY . Como con CWnd::OnCommand, la implementación de OnNotify envía el mensaje de notificación a OnCmdMsg para administrar en mapas de mensajes. La entrada de mensaje- mapa para administrar notificaciones es ON_NOTIFY. Para obtener más información, vea Nota técnica 61: Mensajes de ON_NOTIFY y de WM_NOTIFY.

Como alternativa, una clase derivada puede controlar sus propios mensajes de notificación usando “reflexión de mensaje”. Para obtener más información, vea Nota técnica 62: Mensaje Reflexión para Controles de Windows.

Recuperar la posición del cursor en un mensaje de notificación

En ocasiones, resulta útil determinar la posición actual del cursor a algunos mensajes de notificación son recibidos por un control común. Por ejemplo, sería útil determinar la ubicación del cursor actual cuando un control común recibe un mensaje de notificación de NM_RCLICK .

Hay una manera sencilla de lograrlo llamando a CWnd::GetCurrentMessage. Sin embargo, este método recupera solo la posición del cursor cuando se envió el mensaje. Dado que el cursor puede haberse movido puesto que el mensaje se envió debe llamar a CWnd::GetCursorPos para obtener la posición actual del cursor.

NotaNota

CWnd::GetCurrentMessage únicamente debe llamarse dentro de un controlador de mensajes.

Agregue el código siguiente al cuerpo del controlador de mensaje de notificación (en este ejemplo, NM_RCLICK):

CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;

En este punto, la ubicación del cursor del mouse se almacena en el objeto de cursorPos .

Vea también

Referencia

Crear y usar controles

Conceptos

Controles (MFC)