При изменении DPI монитора (WM_DPICHANGED
сообщение) встроенные полосы прокрутки таких элементов управления, как представление списка, представление дерева, расширенное редактирование, окно списка, не масштабируются (как и ожидалось).
Их нужно масштабировать программно.
Хотя я не нашел API (ни в Win32, ни только в WinForms) для установки размера полосы прокрутки.
Какой API можно использовать для установки размера (ширины) полосы прокрутки?
Или, по крайней мере, как мне достать ручку полосы прокрутки? (Я предполагаю, что внутри полосы прокрутки являются отдельными дочерними элементами управления). Как только я получу дескриптор, я предполагаю, что могу использовать _ 2_, чтобы изменить его размер (Изменить: мое предположение было неверным, как показывает ответ @Anders)
Для справки см. Разработка настольных приложений с высоким разрешением для Windows.
Есть пара, казалось бы, повторяющихся вопросов, но на самом деле ни один из них не имеет отношения к делу:
- Winforms - отрегулируйте ширину вертикальной полосы прокрутки в CheckedListBox
- Изменить ширину полос прокрутки
Ответы там либо изменяют общесистемные настройки, либо работают только для DataGrid
(в интерфейсе которых доступны отдельные дочерние элементы управления полосой прокрутки).
WM_DPICHANGED
дочерним окнам? Что произойдет, если вы вызоветеSetWindowPos(SWP_FRAMECHANGED)
в дочерних окнах? Я не знаю, правильный ли один из этих ответов, но это было бы первое, что я бы попробовал ... (мне нужно перечитать страницы MSDN по осведомленности о DPI.) - person andlabs   schedule 08.03.2017