Я пишу пример приложения, похожего на блокнот, используя функции C & Win32.Как только пользователь нажимает любую клавишу на клавиатуре, она отображается на выходе как «Key Pressed:», а затем переходит на следующую строку.Когда пользователь продолжит нажимать клавишу, он дойдет до конца страницы, но он испытывает трудности с динамической прокруткой вертикальной полосы.Я даже пытался установить диапазон полосы прокрутки динамически, используя SetScrollInfo в WM_CHAR, но все равно он не работает.Пожалуйста, предложите мне способ сделать это.Пример кода для вашей справки.
case WM_CHAR:
//////////////////////////////////////////////////////////////////////////
hdc = GetDC( hwnd );
//////////////////////////////////////////////////////////////////////////
GetTextMetrics( hdc, &tm );
cyChar = tm.tmHeight + tm.tmExternalLeading;
//////////////////////////////////////////////////////////////////////////
si.cbSize = sizeof( si );
si.fMask = SIF_RANGE | SIF_PAGE;
si.nMin = 0;
si.nMax = iMaxLines;
si.nPage = cyClient / cyChar;
SetScrollInfo( hwnd, SB_VERT, &si, TRUE );
//////////////////////////////////////////////////////////////////////////
wsprintf( szBuffer, TEXT("Key pressed %c, Pos: %d"), wParam, iMaxLines );
TextOut( hdc, 0, cyChar * iMaxLines++, szBuffer, lstrlen( szBuffer ) );
//////////////////////////////////////////////////////////////////////////
ReleaseDC( hwnd, hdc );
//////////////////////////////////////////////////////////////////////////
break;