Kalıcı iletişim kutusu

Kalıcı bir iletişim kutusu açılır pencere sahip bir sistem menüsü, başlık çubuğu ve kalın bir kenarlığı olmalıdır; Yani, iletişim kutusunda şablon ws_popup, ws_sysmenu, WS_CAPTION ve ds_modalframe stilleri belirtmeniz gerekir. Uygulama WS_VISIBLE stili atayabilirsiniz, ancak sistemin her zaman olup WS_VISIBLE stil iletişim kutusunda şablonu belirler bakılmaksızın kalıcı bir iletişim kutusu görüntüler. Bir uygulama, WS_CHILD stilini sahip bir kalıcı iletişim kutusu oluşturmamalıdır. Devre dışı bu tarzı ile kalıcı bir iletişim kutusu kendisi herhangi bir sonraki giriş uygulama ulaşmasını engelleyen bırakır.

Uygulama iletişim kutusu ya da DialogBoxIndirect işlevini kullanarak kalıcı bir iletişim kutusu oluşturur. İletişim kutusu adını veya bir iletişim kutusunda şablonu içeren kaynak tanımlayıcısı gerektirir; DialogBoxIndirect iletişim kutusunda şablon içeren bir bellek nesnesi tanıtıcı gerektirir. DialogBoxParam ve DialogBoxIndirectParam fonksiyonları da kalıcı iletişim kutularını oluşturma; yukarıda belirtilen işlevleri aynıdır ancak iletişim kutusu oluşturulduğunda belirtilen parametre iletişim kutusu prosedürü geçmektedir.

Kalıcı iletişim kutusu oluştururken, sistemin etkin pencereyi kolaylaştırır. İletişim kutusu iletişim kutusu yordamı EndDialog işlevini çağırır ya da başka bir uygulama bir pencere sistemi etkinleştirir kadar etkin kalır. Kalıcı iletişim kutusu yok kadar kullanıcı ya da uygulama sahibi penceresini etkin hale getirebilirsiniz.

Sahibi penceresi zaten değil bırakıldığında, sistem, pencere ve kalıcı iletişim kutusu oluşturduğunda, kendisine ait olan herhangi bir alt pencereleri otomatik olarak kapatır. Sahibi pencere, iletişim kutusu yok kadar devre dışı kalır. İletişim kutusu yordam sahibi Yener kalıcı iletişim kutusu amacı etkinleştirme sahibi pencerenin herhangi bir zamanda, potansiyel olabiliyor ve değil ancak önerilir. İletişim kutusu yordamı yok olduğunda, yalnızca kalıcı iletişim kutusu sahibi devre dışı bırakılmasına sebep ama sistem sahibi penceresi yeniden sağlar.

Kalıcı iletişim kutusu sistemin oluşturduğu gibi wm_cancelmode ileti penceresine (varsa) gönderdiği anda fare girişi yakalama. Kullanıcı fareyi kalıcı iletişim kutusu içinde hareket etmelerini sağlayacak şekilde bu iletiyi alır bir uygulama fare yakalama serbest. Sistem sahibi penceresini kapatır çünkü tüm fare girişi sahibi bu haber alınması üzerine fareyi bırakın başaramazsa kaybolur.

Kalıcı iletişim kutusu iletilerini işlemek için sistem geçici Denetim tüm uygulama ileti sırasının alarak kendi ileti döngüsü başlar. Sistem değil açıkça iletişim kutusunda bulunan bir ileti aldığında, iletinin uygun penceresine gönderir. WM_QUIT iletiyi alır, böylece uygulamanın ana ileti döngüsü sonunda iletiyi alabilir o sırt-e doğru uygulama ileti sıraya ileti mesaj.

Uygulama ileti sırası boş olduğunda sistem sahibi pencereye WM_ENTERIDLE iletisi gönderir. Uygulama bu ileti iletişim kutusu ekranda kalır bir arka plan görevi yürütmek için kullanabilirsiniz. Bu yolla, uygulamanın iletiyi sık verim gerekir bir uygulama kullanır (örneğin PeekMessage işlevini kullanarak) yani, kontrol kalıcı iletişim kutusu herhangi bir kullanıcı girdisine alabilirsiniz. Kalıcı iletişim kutusu WM_ENTERIDLE mesaj göndermesini engellemek için uygulama DS_NOIDLEMSG Stili iletişim kutusu oluşturulurken belirtebilirsiniz.

Bir uygulama, EndDialog işlevini kullanarak kalıcı bir iletişim kutusu yok eder. Kullanıcı iletişim kutusunun System menüsünde Kapat komutunu seçer veya iletişim kutusunda Tamam'ı veya iptal düğmesini seçer genellikle, EndDialog iletişim kutusu yordamı çağırır. İletişim kutusu, EndDialog işlevi çağrılırken bir değer belirterek bir değer üzerinden iletişim kutusu işlevi (ya da diğer oluşturma işlevleri) dönebilirsiniz. Sistem, iletişim kutusu yok sonra bu değeri döndürür. Çoğu uygulama, iletişim kutusunu, görev başarıyla tamamlandı veya kullanıcı tarafından iptal edildi belirlemek için bu dönüş değeri kullanın. Sistem denetim iletişim kutusu iletişim kutusu yordamı EndDialog işlevini çağırdı kadar oluşturan işlev dönmez.

Index