Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Controles comuns são janelas subordinadas que enviam mensagens de notificação para a janela-mãe quando eventos, como a entrada do utilizador, ocorrem no controlo.
O aplicativo depende dessas mensagens de notificação para determinar qual ação o usuário deseja que ele execute. Os controlos mais comuns enviam mensagens de notificação como mensagens WM_NOTIFY. Os controlos do Windows enviam a maioria das mensagens de notificação, como mensagens WM_COMMAND.
CWnd::OnNotify é o manipulador da mensagem WM_NOTIFY. Tal como acontece com CWnd::OnCommand, a implementação de OnNotify envia a mensagem de notificação para OnCmdMsg para manipulação em mapas de mensagens. A entrada do mapa de mensagens para lidar com notificações é ON_NOTIFY. Para obter mais informações, consulte a Nota Técnica 61: mensagens ON_NOTIFY e WM_NOTIFY.
Como alternativa, uma classe derivada pode lidar com suas 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.
Recuperando a posição do cursor em uma mensagem de notificação
Ocasionalmente, é útil determinar a posição atual do cursor quando certas mensagens de notificação são recebidas por um controle comum. Por exemplo, seria útil determinar o local atual do cursor quando um controle comum recebe uma mensagem de notificação NM_RCLICK.
Há uma maneira simples de conseguir isso chamando CWnd::GetCurrentMessage. No entanto, esse método recupera apenas a posição do cursor no momento em que a mensagem foi enviada. Como o cursor pode ter sido movido desde que a mensagem foi enviada, você deve ligar CWnd::GetCursorPos para obter a posição atual do cursor.
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 (neste exemplo, NM_RCLICK):
CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;
Neste ponto, a localização do cursor do cursorPos mouse é armazenada no objeto.