Compartilhar via


Recebendo notificação de controles comuns

Controles comuns são janelas filhas que enviam mensagens de notificação para a janela pai quando ocorrem eventos, sistema autônomo entrada do usuário, no controle.

O aplicativo utiliza essas mensagens de notificação para determinar a ação que o usuário quê-la tenha.Controles mais comuns enviar mensagens de notificação sistema autônomo WM_NOTIFY mensagens.Controles do Windows enviar a maioria das mensagens de notificação sistema autônomo WM_COMMAND mensagens.CWnd::OnNotify é o manipulador para o WM_NOTIFY mensagem.sistema autônomo ocorre com CWnd::OnCommand, a implementação de OnNotify envia a mensagem de notificação OnCmdMsg para tratamento em mapas de mensagem. A entrada de MAP da mensagem para manipular notificações é ON_NOTIFY. Para obter mais informações, consulte Observação técnica 61: Mensagens de WM_NOTIFY e ON_NOTIFY.

Como alternativa, uma classe derivada pode lidar com suas próprias mensagens de notificação usando a "mensagem de reflexão." Para obter mais informações, consulte Observação técnica 62: Mensagem de reflexão para controles Windows.

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

Ocasionalmente, ele é útil determinar a posição corrente do cursor quando determinadas mensagens de notificação são recebidas por um controle comum.Por exemplo, seria útil determinar o local do cursor corrente quando um controle comum recebe um NM_RCLICK mensagem de notificação.

Há uma maneira simples para realizar isso chamando CWnd::GetCurrentMessage. No entanto, esse método somente recupera a posição do cursor no momento em que a mensagem foi enviada.Porque o cursor pode ter sido movido, pois a mensagem foi enviada, você deve telefonar CWnd::GetCursorPos para obter a posição do cursor corrente.

Observação:

CWnd::GetCurrentMessage só deve ser chamado dentro de um manipulador de mensagens.

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

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

Neste ponto, o local de cursor do mouse está armazenado no cursorPos objeto.

Consulte também

Conceitos

Controles (MFC)

Referência

Fazer e usar controles