Сколько сообщений хранится в очереди стандартного окна? Что происходит при переполнении очереди?
В документации для GetMessage и родственников об этом ничего не говорится, а PeekMessage дает вам только да / нет для определенных классов сообщений, но не счетчик сообщений.
Эта страница говорит, что очереди реализованы с использованием файлов с отображением памяти и что нет ограничения на количество сообщений, но эта страница посвящена WinCE. Применимо ли это и к настольной Win32?





По умолчанию 10000, но его можно настроить через реестр.
Если очередь переполняется, PostMessage завершается ошибкой.
Документация здесь:
Функция PostMessage в MSDN
Я только что посмотрел на раздел реестра, указанный в этой статье, на машине Vista Business SP1, и он установлен на 10000. Я не знаю, является ли это единственным фактором при определении длины очереди в Vista.
Я не ЗНАТЬ, но вряд ли будет иначе. Vista не такая уж революционная, я не думаю ...
И еще кое-что - если вы думаете об использовании очереди сообщений как, ммм, очереди, которая загружается другим потоком, я думаю, вы будете разочарованы результатами. В итоге вы получите неотвечающий графический интерфейс. Наша компания имеет большой опыт работы именно с этой неудачно разработанной техникой.
Привет, Кори, спасибо за ответ. Указанный лимит и ключ реестра (который можно изменить) работают и для Windows 8.
Как указано в статье MSDN, если вам нужно беспокоиться о размере очереди сообщений, вам может быть лучше переделать свое приложение.
В этом случае мы на другой стороне очереди; наш драйвер устройства отправляет сообщения, и через несколько минут игрушечное Flash-приложение зависло.
Это касается 2000 / XP - есть идеи о Vista?