0

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

一分钱你的想法。

4

1 回答 1

1

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

于 2014-07-22T02:47:39.717 回答