Я знаю, что это очень старая вещь, но я ломаю над ней голову. Кто-нибудь знает, почему это происходит?
Скажем, когда уведомление о щелчке мыши на полосе прокрутки распространяется через WM_NCHITTEST
-> WM_NCLBUTTONDOWN
-> WM_SYSCOMMAND
-> WM_HSCROLL
или WM_VSCROLL
, все параметры в этой цепочке, кажется, следуют документации, кроме SC_HSCROLL
и SC_VSCROLL
для WM_SYSCOMMAND
. Итак, если я сделаю:
//From within WndProc
if(message == WM_SYSCOMMAND)
{
UINT uiCmd = wParam & 0xFFF0;
if(uiCmd == SC_HSCROLL)
{
TRACE(L"Horiz scroll\n");
}
else if(uiCmd == SC_VSCROLL)
{
TRACE(L"Vertical scroll\n");
}
}
Кажется, я получаю вертикальное уведомление для горизонтального и наоборот.
Вот доказательство от Spy++. Если я нажму эту стрелку вниз:
это уведомления, которые получает окно:
Все правильно, кроме SC_HSCROLL
. ВТФ?
richedit
- person c00000fd   schedule 05.04.2019