接收来自公共控件的通知
公共控件。发送通知消息到父窗口的子窗口,当事件,如来自用户的输入,在控件时发生。
应用程序依赖于这些通知消息确定操作用户希望它采用。 最常见的控件发送通知信息作为 WM_NOTIFY 消息。 windows 控件发送大多数通知信息作为 WM_COMMAND 消息。 CWnd::OnNotify 是 WM_NOTIFY 消息的处理程序。 与 CWnd::OnCommand, OnNotify 的实现计划通知消息处理的 OnCmdMsg 在消息映射。 处理的通知消息映射项是 ON_NOTIFY。 有关更多信息,请参见 技术说明 61:ON_NOTIFY 和 WM_NOTIFY 消息。
或者,派生类可以处理自己的通知消息使用 “消息反映”。有关更多信息,请参见 技术说明 62:windows 控件的消息反映。
检索在通知消息的光标位置
有时,那么,当某些通知消息由公共控件时,将获得光标的当前位置很有用。 例如,那么,当公共控件接收 NM_RCLICK 通知消息时,确定当前的光标位置很有用。
有一种简单的方法通过调用 CWnd::GetCurrentMessage完成此操作。 但是,在中,在传输后,此方法仅检索光标位置信息。 由于光标可以滚动,因为发送的信息您必须调用 CWnd::GetCursorPos 获取当前光标位置。
备注
应在消息处理程序中只调用CWnd::GetCurrentMessage 。
将以下代码添加到通知消息处理程序的主体 (在此示例中, NM_RCLICK):
CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;
此时,鼠标光标位置在 cursorPos 对象存储。