我的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);
一分钱给你的想法。
答案 0 :(得分:1)
您需要处理WM_HSCROLL消息。 TB_THUMBTRACK和其他TB通知不是消息,它们被传递到nSBCode参数中的WM_HSCROLL消息处理程序。