获取旋转控制的更新值

Getting the updated value of Spin Control

提问人:Daniel Bauer 提问时间:5/22/2019 更新时间:5/22/2019 访问量:211

问:

我使用旋转按钮并想读取它的位置。 我已经覆盖了,但随后我必须评估 .如果我设置 ,它将为我进行计算,但我的值滞后。OnDeltaposSpin(...)NMHDR*pResult=0

void CClass::OnDeltaposSpin(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
    *pResult = 0;
    UpdateData(TRUE);
    // I want to use the data here
}

因此,如果 Spin 最初是 0,则第一次单击不会对我的数据执行任何操作,第二次单击会将其变为 1,依此类推。

有没有其他消息我可以处理,之后触发器会像其他控件一样工作?或者我可以告诉旋转控件使用 在里面进行计算吗?UDN_DELTAPOSEN_CHANGE*pResultOnDeltaposSpin

MFC系列

评论


答:

2赞 jwismar 5/22/2019 #1

看起来UDN_DELTAPOS用于覆盖仓位变化量或防止变化,但实际变化发生在WM_VSCROLL(或WM_HSCROLL)消息中。我怀疑这些可能是您需要处理的消息才能获得结果......

(我基于这个文档。

评论

1赞 Daniel Bauer 5/22/2019
这确实是我正在寻找的。它只是比我想象的要复杂......为什么所有可能的滚动条(包括旋转控件)都有此消息,而这可能只是每个单独的 scollbar/spinctrl 的单独消息?