Jak głęboka jest kolejka komunikatów Win32?


13

Ile wiadomości zawiera kolejka dla standardowego okna? Co się stanie, gdy kolejka się przepełni?

Dokumentacja dla GetMessage i krewnych nic o tym nie mówi, a PeekMessage daje tylko tak/nie dla pewnych klas wiadomości, a nie liczby wiadomości.

This page mówi, że kolejki są zaimplementowane przy użyciu plików mapowanych w pamięci i że nie ma limitu liczby komunikatów, ale ta strona dotyczy programu WinCE. Czy dotyczy to również Win32?

13

Domyślnie 10000, ale można to skorygować za pomocą rejestru.

Jeśli przepełnienie kolejki, komunikat PostMessage kończy się niepowodzeniem.

Dokumentacja tutaj:

PostMessage function on MSDN

  0

Który obejmuje 2000/XP - jakieś pojęcie o Visty? 23 wrz. 082008-09-23 19:52:35

  0

Właśnie spojrzałem na klucz rejestru wymieniony w tym artykule na maszynie Vista Business SP1, i jest ustawiony na 10000. Nie wiem jednak, czy jest to jedyny czynnik określający długość kolejki w systemie Vista. 23 wrz. 082008-09-23 19:55:52

  0

Nie wiem * WIEM *, ale raczej nie byłoby inaczej. Vista nie jest rewolucyjna, nie sądzę ... 23 wrz. 082008-09-23 19:59:05

+1

Jeszcze jedno - jeśli myślisz o używaniu kolejki wiadomości jako o kolejce, która jest zasilana przez inny wątek, myślę, że będziesz rozczarowany wyniki. W rezultacie otrzymasz nieodpowiadający interfejs graficzny. Nasza firma ma duże doświadczenie z tą właśnie nieudaną techniką. 23 wrz. 082008-09-23 20:00:44

  0

Witaj Corey, dziękuję za odpowiedź. Wspomniany limit i klucz rejestru (który można dostosować) również działają w systemie Windows 8. 22 sie. 132013-08-22 12:06:15


3

Jak stwierdzono w artykule MSDN, jeśli trzeba się martwić o wielkości kolejki komunikatów, to może być lepiej przeprojektowanie aplikacji.

  0

W tym przypadku jesteśmy po drugiej stronie kolejki; nasz sterownik urządzenia publikuje wiadomości, a aplikacja do zabawy z zabawkami po kilku minutach grzęźnie. 24 wrz. 082008-09-24 13:17:11