Я пытаюсь сделать простое управление вращением и поле редактирования в WTL &/ winapi. и это не работает должным образом, потому что я вижу только 0 в качестве начального значения, а стрелки не работают, код здесь:
HWND spin = GetDlgItem(IDC_SPIN1);
HWND edit = GetDlgItem(IDC_RANDOM_EDIT);
::SendMessage(spin, UDM_SETBUDDY, (WPARAM)edit, 0); //set buddy
::SendMessage(spin, UDM_SETRANGE, MAKELPARAM(0,100), 0); //interval
::SendMessage(spin, UDM_SETBASE, 10, 0); //initial position
У вас есть ваш wparam и lparam поменялись местами. У вас также есть низкие и высокие слова поменялись местами.
::SendMessage(spin, UDM_SETRANGE, 0, MAKELPARAM(100,0)); //interval
Смотрите определения UDM_SETRANGE
а также MAKELPARAM
.
В WTL у вас есть класс-обёртка CUpDownCtrl
для контроля вверх-вниз. Так что все так просто:
CUpDownCtrl Control = ... // e.g. GetDlgItem(IDC_MYCONTROL);
INT nMinValue = 0, nMaxValue = 100;
Control.SetRange(nMinValue, nMaxValue);