Sıraya alınan iletileri

Sistem windows herhangi bir sayıda bir seferde görüntüleyebilirsiniz. Fare ve klavye uygun pencere yönlendirmek için sistem ileti kuyrukları kullanır.

sistem, bir tek sistem ileti sırası ve herhangi bir sayıda iş parçacığı ileti sıraları, her GUI iş parçacığı için bir tutar. GUI iş parçacıkları için ileti sırası oluşturma yükünü önlemek için bütün konuları başlangıçta bir ileti sırası oluşturulur. İş parçacığı Win32 kullanıcı veya GDI işlevleri, ilk çağrı yaptığında sistem bir iş parçacığının ileti sırası oluşturur.

Her kullanıcı fare hareket, fare düğmelerini tıkladığında veya klavye, fare aygıtı sürücüsü türleri veya klavye girişi iletilerine dönüştürür ve bunları sistem ileti sırasına yerleştirir. Sistem iletileri, teker teker, sistem ileti sırasından kaldırır, onları hedef penceresi belirlemek için inceler ve bunları hedef pencere oluşturulan iş parçacığı ileti kuyruğuna deftere nakleder. Bir iş parçacığının ileti sırası Windows iş parçacığı tarafından oluşturulan tüm fare ve klavye iletilerini alır. İş parçacığı mesajlar onun sıradan kaldırır ve onlara uygun pencere yordamı için işleme göndermek üzere sistemi yöneltir.

Dışında WM_PAINT iletisi, sistem her zaman mesaj iletileri bir ileti sırasının sonunda. Bu pencere doğru ilk giren kümesinde (FIFO) sırada girdi iletileri almasını sağlar. WM_PAINT mesajı ancak kuyrukta saklanır ve yalnızca sıranın diğer iletileri içeren pencereyi yordama iletilir. Aynı pencerede birden çok WM_PAINT iletileri istemci alanının tüm geçersiz parçaları tek bir alan birleştirme tek bir WM_PAINT ileti birleştirilir. WM_PAINT iletileri birleştiren bir pencere onun istemci alanının içeriğini yeniden çizmek gerekir kaç kez azaltır.

Sistem bir msg yapısı doldurarak ve sonra ileti sırasına kopyalama bir iş parçacığının ileti sıraya ileti postalar. msg bilgileri içerir: tanıtıcı mesaj olduğu amaçlanan, ileti tanımlayıcısı, iki ileti parametrelerinin, iletiyi gönderen zaman pencere ve fare imleci konum. İş parçacığı PostMessage ya da PostThreadMessage işlevini kullanarak, kendi ileti sırasına ya da başka bir iş parçacığının sıraya ileti gönderebilir.

Bir uygulama bir ileti, onun sıradan GetMessage işlevini kullanarak kaldırabilirsiniz. Onun sıradan kaldırmadan iletiyi incelemek için bir uygulama PeekMessage işlevini kullanabilirsiniz. Bu işlev, ileti hakkında bilgi msg doldurur.

Onun sıradan bir ileti kaldırıldıktan sonra uygulama, sistemin işleme için bir pencere yordamı mesaj göndermek için DispatchMessage işlevini kullanabilirsiniz. DispatchMessage bir önceki çağrı GetMessage veya PeekMessage işlevi tarafından doldurulmuş msg bir işaretçi alır. DispatchMessage pencere tanıtıcısı, ileti tanımlayıcısı ve iki ileti parametrelerinin penceresinin yordam geçirir ama olmadığından ileti gönderilme zaman geçirmek veya fare imleci konum. Bir uygulama bir ileti işlenirken GetMessageTime ve GetMessagePos işlevleri çağırarak bu bilgi alabilirsiniz.

Bir iş parçacığı, kendi ileti sırasına ileti olduğunda diğer konuları denetime vermeye WaitMessage işlevini kullanabilirsiniz. İşlevi iş parçacığı askıya alır ve yeni ileti parçacığının ileti sırasına yerleştirilir kadar dönmez.

32 Bitlik bir değer geçerli iş parçacığının ileti sırası ile ilişkilendirmek için SetMessageExtraInfo işlevini çağırabilirsiniz. Son ileti GetMessage veya PeekMessage işlevi tarafından adresinden alındı ilişkili değeri almak için GetMessageExtraInfo işlev çağrısı.

Index