Как я могу обновить форму при изменении размера в 64-битном окне? - PullRequest
3 голосов
/ 24 октября 2011

У меня проблема с содержимым формы, которая не обновляется корректно при запуске в 64-разрядном окне, например Windows Server 2003 или 2008. Есть короткое видео, иллюстрирующее это на screencast .

При изменении размера главного окна содержимое не перерисовывается. Но если я поменяю небольшой сплиттер, то он перекрашивается. И все отлично работает на 32-битной Windows. Я не сделал никаких событий OnResize для этого.

Есть идеи?

РЕДАКТИРОВАТЬ: Да, исполняемый файл является 32-разрядным. Только 64-битная ОС Windows.

1 Ответ

8 голосов
/ 24 октября 2011

Это вызвано наличием множества вложенных элементов управления / окон.Размер стека 64-битной Windows меньше, чем на 32-битной.Это становится еще меньше, если есть глобальные WH_CALLWNDPROC хуки.Обработка событий сообщения WM_SIZE приводит к переполнению стека, которое съедает ядро ​​Windows.Смотрите здесь и исправление здесь .Также см. здесь для той же проблемы.

PS: WinForms также страдают от той же проблемы .

...