Partilhar via


Recebendo notificação de controles comuns

Controles comuns são janelas filho que enviam mensagens de notificação à janela pai quando eventos, como entrada do usuário, ocorrem no controle.

O aplicativo depende dessas mensagens de notificação para determinar qual ação o usuário quer que execute. Os controles mais comuns enviam as mensagens de notificação como mensagens WM_NOTIFY. Os controles do Windows enviam a maioria das mensagens de notificação como mensagens WM_COMMAND. CWnd::OnNotify é o manipulador para a mensagem WM_NOTIFY. Assim como CWnd::OnCommand, a implementação de OnNotify despacha a mensagem de notificação para OnCmdMsg para manipulação em mapas de mensagens. A entrada do mapa de mensagens para manipulação de notificações é ON_NOTIFY. Para obter mais informações, consulte Nota técnica 61: mensagens ON_NOTIFY e WM_NOTIFY.

Como alternativa, uma classe derivada poderá manipular as próprias mensagens de notificação usando "reflexão de mensagem". Para obter mais informações, consulte Nota técnica 62: reflexão de mensagem para controles do Windows.

Recuperar a posição do cursor em uma mensagem de notificação

Às vezes, é útil determinar a posição atual do cursor quando certas mensagens de notificação são recebidas por um controle comum. Por exemplo, é útil determinar a localização atual do cursor quando um controle comum receber uma mensagem de notificação NM_RCLICK.

Há uma maneira simples de fazer isso chamando CWnd::GetCurrentMessage. No entanto, esse método apenas recupera a posição do cursor no momento em que a mensagem foi enviada. Como o cursor poderá ser removido após o envio da mensagem, será necessário chamar CWnd::GetCursorPos para obter a posição atual do cursor.

Observação

CWnd::GetCurrentMessage somente deverá ser chamado dentro de um manipulador de mensagens.

Adicione o seguinte código ao corpo do manipulador de mensagens de notificação (nesse exemplo, NM_RCLICK):

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

Nesse ponto, a localização do cursor do mouse é armazenada no objeto cursorPos.

Confira também

Criando e usando controles
Controles