我的 Windows 窗体中有一组 CSliderCtrl,我需要从中接收通知。我正在使用 ON_NOTIFY_RANGE 声明将滑块更新映射到适当的处理程序。我的问题是唯一给我通知的事件是 NM_RELEASEDCAPTURE 事件。所以我的代码如下所示:
BEGIN_MESSAGE_MAP(CTheThingDlg, CDialogEx)
ON_NOTIFY_RANGE(NM_RELEASEDCAPTURE, start_id, end_id, handler)
END_MESSAGE_MAP()
void MyClass::handler(UINT p_id, NMHDR* p_notify_msg_ptr, LRESULT* p_result_ptr)
{
//Do Stuff
}
我曾尝试使用 WM_H/VSCROLL、TB_THUMBTRACK、TB_LINEUP/DOWN 和其他事件,但无论我使用鼠标还是键盘滚动,都没有通知我。它们只是使用以下代码创建的简单水平滚动条:
slider_ctrl.Create(WS_CHILD | WS_VISIBLE | TBS_HORZ | TBS_BOTTOM | TBS_FIXEDLENGTH,
CRect(x1, y1, x2, y2),
this,
id);
一分钱你的想法。