GetScrollInfo работает только когда визуальные стили активированы - PullRequest
1 голос
/ 15 ноября 2010

в моем текущем проекте на WinForms с .net3.5 я импортировал некоторые функции User32.dll для программной прокрутки.Я расширил TableLayoutPanel - который нужно прокручивать.

После небольшой работы все работало нормально, но теперь я обнаружил, что функция

GetScrollInfo(this.Handle, SB_VERT, ref _si);

всегда возвращает false когда визуальные стили в Windows XP отключены.Если визуальные стили активированы (все, кроме «Классика», в порядке), вышеупомянутая функция возвращает true и правильные значения.

Как этого избежать или как получить правильныеScrollValues ​​без активации визуальных стилей?

PS: _si - это структура с именем SCROLLINFO, описанная в MSDN (мне не разрешено ссылаться на более чем одну страницу, извините), а GetScrollInfo описана здесь . this.Handle - дескриптор базовой панели TableLayoutPanel.

1 Ответ

2 голосов
/ 15 ноября 2010

Немного поигравшись со структурой SCROLLINFO, я выяснил это самостоятельно.

Для всех, у кого была такая же проблема, мне пришлось установить cbSize структуры SCROLLINFO на sizeOf (SCROLLINFO).

Что-то вроде

    public ScrollableExampleConstructor()
    {
        _si = new SCROLLINFO();
        _si.fMask = (uint) ScrollInfoMask.SIF_ALL;
        _si.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(_si);
    }

сделал работу за меня.

Спасибо всем, кто задумался над моей проблемой!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...