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.