导致这个问题可能会有不同的原因,本文讲的是我遇到的一种情况,所以如果你遇到的问题跟我是同一个原因,用这个方法能解决;如果不是,那就要再找别的原因了。
原因:duilib的滚动条拖动使用了WM_TIMER。所以如果处理了WM_TIMER的消息,并且拦截了所有TimerId的WM_TIMER消息,就会导致滚动套不能拖动。
解决办法:在自己的WM_TIMER出来函数中,判断是否是自己注册的TimerId,如果是,就把bHandled设置为TRUE,不再调用m_pm.MessageHandler或者CWindowWnd::HandleMessage;反之,就把bHandled设置为FALSE,以便WM_TIMER消息通过m_pm.MessageHandler或者CWindowWnd::HandleMessage继续处理。
本文介绍了一种Duilib滚动条无法拖动的问题及其解决方案。原因是滚动条使用了WM_TIMER消息,若拦截了所有WM_TIMER消息则会导致该问题。解决方法是在WM_TIMER处理函数中判断是否为自身注册的TimerId,从而决定是否进一步处理消息。
943

被折叠的 条评论
为什么被折叠?



