Windows 7 редактирования контроля, вертикальная прокрутка не работает - PullRequest
1 голос
/ 24 августа 2011

У меня есть приложение, которое компилирует ok (mingw) и работает нормально, однако созданный элемент управления редактирования имеет полосы прокрутки, но вертикальная полоса прокрутки ничего не делает.Тот же исполняемый файл прекрасно работает на WinXP.Кроме того, элемент управления редактирования имеет как вертикальную, так и горизонтальную полосы прокрутки, горизонтальная работает просто отлично, а вертикальная - нет.Вертикальная полоса прокрутки видима и активна, но ничего не происходит ...

При создании элемента управления для редактирования используется следующий код:

HWND hwndEdit = CreateWindow(TEXT("EDIT"), TEXT("Edit control"),
    WS_OVERLAPPED | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_LEFT | ES_MULTILINE |
    ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_READONLY | WS_SIZEBOX,
    1000, 480, 400, 500, NULL, 0, GetModuleHandle(NULL), NULL);
SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM) TEXT("")); 
SendMessage(hwndEdit, EM_LIMITTEXT, 0, 0);

Следующий код используется несколько раз для добавления текста для редактированияуправление:

char test[] = "test";
SendMessage(hWndDbg, EM_SETSEL, 0x7FFFFFFF, 0x7FFFFFFF); // Undo any selection and move to end.
SendMessage(hWndDbg, EM_REPLACESEL, 0, (LPARAM) temp);

Ответы [ 3 ]

0 голосов
/ 01 августа 2012

Обратите внимание, что вертикальные полосы прокрутки имеют смысл даже в однострочных элементах редактирования. В этом случае WM_VSCROLL должен быть установлен, а ES_AUTOVSCROLL - нет. (EM_AUTOVSCROLL означает EM_AutoHIDEVScroll.) Альтернативный элемент управления UpDown делает программирование более простым, чем захват сообщений VM_VSROLL, а затем изменение (обычно числового) значения внутри элемента управления редактирования.

К сожалению, встроенный редактор ресурсов MS Visual Studio не позволит вам добавить WM_VSROLL в однострочные правки! Вы должны сделать это, добавив этот бит, отредактировав файл .RC в текстовом режиме. Аналогично тому, что этот редактор ресурсов не позволит вам добавить текст по умолчанию для элемента управления, который все еще поддерживается загрузчиком ресурсов.

0 голосов
/ 24 сентября 2012

Используйте GetDesktopWindow () в качестве параметра hWndParent.Работает на Win7.

0 голосов
/ 19 сентября 2011

Наконец-то нашел исправление.Похоже, в WinXP элементу управления редактирования не нужно определять родительское окно, в Win7 требуется, чтобы вертикальная полоса прокрутки работала, горизонтальная полоса прокрутки работает в Win7 даже без определения родительского окна.

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