Bu üç işlevlerin her biri için bir işlev çağrısının basit ileti döngüsü oluşur: GetMessage, TranslateMessageve DispatchMessage.
Msg msg;
(GetMess&age (amp; msg, null, 0, 0))
{
TranslateMessage (ve msg);
DispatchMessage (ve msg);
}
GetMessage işlevi ileti sırasından alır ve bir yapı türü msgkopyalar. WM_QUIT ileti içinde döner yanlış durumda bulduğu sürece sıfır dışında bir değer verir ve döngü sona erer. Tek iş parçacıklı bir uygulamada ileti döngüsü bitiş genellikle uygulamayı kapatmadan ilk adımıdır. Uygulama genellikle uygulamanın ana penceresinin pencere yordamı wm_destroy iletiye yanıt PostQuitMessage işlevini kullanarak kendi döngüsü sona.
GetMessageikinci parametre olarak bir pencere tanıtıcısı belirlerseniz, yalnızca belirtilen pencere iletilerini kuyruğundan alınır. GetMessage yalnızca belirtilen aralıkta iletileri alınıyor sıradaki iletilerin de filtre uygulayabilirsiniz. Filtreleme iletileri hakkında daha fazla bilgi için bkz: İleti filtreleme.
Bir iş parçacığının ileti döngüsü, iplik klavyeden karakter giriş almak için ise TranslateMessage eklemeniz gerekir. Sistem, kullanıcının bir tuşa bastığı her zaman için anahtar sanal iletiler (wm_keydown ve wm_keyup) oluşturur. Sanal-anahtar iletisi, hangi tuşa basılı değil onun karakter değeri tanımlayan bir anahtar sanal kod içerir. Bu değeri almak için ileti döngüsü TranslateMessagehangi karakter iletiye (wm_char) sanal-anahtar iletisi çevirir ve uygulama ileti kuyruğuna yerleştirir, içermelidir. Karakter ileti sonra ileti döngünün bir sonraki yineleme kaldırıldı ve bir pencere yordam gönderilir.
DispatchMessage işlevi msg yapısında belirtilen pencere tanıtıcısı ile ilişkili pencere yordamı bir ileti gönderir. Pencere tanıtıcısı hwnd_topmost ise, DispatchMessage sistemdeki tüm üst düzey pencere pencere işlemleri için iletiyi gönderir. Pencere işleyicisi null ise, DispatchMessage mesaj ile hiçbir şey yok.
Bir uygulamanın ana iş parçacığı sonra uygulama başlatılıyor ve en az bir pencere oluşturma, ileti döngüsü başlar. Başladıktan sonra ileti döngüsü parçacığının ileti sırasından iletileri almak ve bunları uygun windows sevk ediyor. GetMessage işlevi WM_QUIT iletiyi ileti sırasından kaldırır ileti döngüsü sona erer.
Birçok windows uygulama içerse bile tek bir ileti döngüsü bir ileti sırası için gereklidir. DispatchMessage her zaman uygun pencereyi mesajı gönderir; Çünkü her iletiye ait olduğu mesajı pencere tutamacı içeren bir msg yapısı.
Bir ileti döngüsü içinde çeşitli şekillerde değiştirebilirsiniz. Örneğin, sıradan bir pencereye onları gönderme olmadan iletileri alabilir. Bu pencere belirtme değil mesaj uygulamalar için kullanışlıdır. Ayrıca diğer iletileri sıraya bırakarak doğrudan GetMessage belirli iletilerde arama seçebilirsiniz. Bu geçici olarak ileti sırası her zamanki FIFO sırasını atlamak gerekir yararlıdır.
Kısayol tuşları kullanan bir uygulama klavye iletilerini komut iletilere çevirmek mümkün olmalıdır. Bunu yapmak için uygulamanın ileti döngüsü TranslateAccelerator işlevine bir çağrı eklemelisiniz. Kısayol tuşları hakkında daha fazla bilgi için bkz: Klavye hızlandırıcıları.
Bir iş parçacığı bir kalıcı olmayan bir iletişim kutusu kullanıyorsa, iletişim kutusu klavye girişi alabilmesi ileti döngüsü IsDialogMessage işlevinin içermelidir.