获取ON_NOTIFY_RANGE以使用CSliderCtrl

时间:2014-07-22 01:02:16

标签: events visual-c++ mfc windows-controls

我的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);

一分钱给你的想法。

1 个答案:

答案 0 :(得分:1)

您需要处理WM_HSCROLL消息。 TB_THUMBTRACK和其他TB通知不是消息,它们被传递到nSBCode参数中的WM_HSCROLL消息处理程序。