Bir kanca işlemi, özel bir şablon ya da her ikisini de sağlayarak bir Explorer tarzı Aç veya farklı Kaydet iletişim kutusunda özelleştirebilirsiniz. Bir Explorer Stili iletişim kutusunda bir kanca işlemi sağlarsanız, sistem varsayılan iletişim kutusu alt bir iletişim kutusu oluşturur. Çocuk iletişim kutusu iletişim yordamı kanca işlemi görür. Hiçbiri yoksa bu çocuk iletişim kutusunu özel bir şablon veya varsayılan şablonu temel alır. Daha fazla bilgi için bkz: Explorer tarzı özel şablonları.
Bir kanca işlemi bir Explorer tarzı Aç veya farklı Kaydet iletişim kutusunu etkinleştirmek için iletişim kutusunu oluşturduğunuzda OPENDOSYAADI yapısını kullanır. Bayrakları üye ofn_enablehook ve ofn_explorer bayrakları ayarlamak ve lpfnHook üye OFNHookProc kanca işlemi adresini belirtin. Bir kanca işlemi sağlar ve ofn_explorer bayrağını kullanmazsanız, bir OFNHookProcOldStyle kancası yordamı kullanmalısınız ve sen-ecek almak eski stil kullanıcı arabirimi. Daha fazla bilgi için bkz: Özelleştirme eski stil iletişim kutuları.
İletişim kutusu açıkken bir Explorer tarzı kanca işlemi çeşitli iletileri alır. Bunlar aşağıdakileri içerir:
Ayrıca, orada bir Explorer tarzı iletişim kutusuna bilgi almak veya iletişim kutusunun görünümünü ve davranışını denetlemek için gönderebilirsiniz iletileri kümesi.
Bir Explorer Stili iletişim kutusunda bir kanca işlemi sağlarsanız, varsayılan iletişim yordamı, WM_INITDIALOG ileti işleme bir çocuk iletişim kutusu varsayılan iletişim kutusunu yordamı oluşturur. Çocuk iletişim kutusu iletişim yordamı kanca işlemi görür. Şu anda, kanca işlemi ile iletişim kutusu başlatmak için kullanılan OPENDOSYAADI yapısını adresine ayarlanmış lParam parametresinin kendi WM_INITDIALOG iletisini alır. Çocuk iletişim kendi WM_INITDIALOG ileti işlemeyi tamamladıktan sonra gerekirse, herhangi bir ek denetimler çocuk iletişim kutusunu açmak varsayılan iletişim yordamı standart denetimleri taşır. Varsayılan iletişim prosedürü sonra kancası yordamı CDN_INITDONE bildirim iletisi gönderir.
Kanca işlemi alır WM_NOTIFY bildirim iletileri gösteren iletişim kutusu kullanıcı tarafından gerçekleştirilen eylem. Bu iletilerden bazıları iletişim kutusunun davranışını denetlemek için kullanabilirsiniz. Örneğin, kullanıcı bir dosya adı seçer ve Tamam düğmesini tıklattığında kancası yordamı CDN_FILEOK iletisini alır. Bu iletiye yanıt olarak, seçilen adı reddetmek ve iletişim kutusunu aç kalmaya zorlamak için SetWindowLong işlevini kancası yordamı kullanabilirsiniz.
Eylemi tanımlayan bir OFNOTIFY yapısı için işaretçi her WM_NOTIFY iletisinin lParam parametresidir. OFNOTIFY yapısı başlığındaki kod üye aşağıdaki bildirim kodları içerir.
CDN_FILEOK | Kullanıcı Tamam düğmesi tıklandığında; iletişim kutusu hakkında kapatmak etmektir. |
CDN_FOLDERCHANGE | Kullanıcı a yeni ağıl ya da müdür açıldı. |
CDN_HELP | Kullanıcı Yardım düğmesini. |
CDN_INITDONE | Sistem iletişim kutusu başlatılıyor tamamladı ve iletişim kutusu WM_INITDIALOG ileti işlemeyi tamamladı. Ayrıca, sistem düzenleme denetimleri çocuk iletişim kutusunun (varsa) açmak için ortak iletişim kutusu denetimleri tamamlandı. |
CDN_SELCHANGE | Kullanıcı yeni bir dosya veya klasör dosya listesinden seçilen. |
CDN_SHAREVIOLATION | Ortak iletişim kutusunu hakkında iade edilecek dosya paylaşım ihlali ile karşılaştı. |
CDN_TYPECHANGE | Kullanıcı yeni bir dosya türü dosya türleri listesinden seçilen. |
Bu WM_NOTIFY iletileri FILEOKSTRINGyerini, LBSELCHSTRING, SHAREVISTRINGve HELPMSGSTRING , Aç ve farklı Kaydet iletişim kutularını önceki sürümleri tarafından kullanılan iletileri kayıtlı. WM_NOTIFY işleme SetWindowLong dwl_msgresult de?er ayarlamak için kullanmaz ancak kancası yordamı da değiştirilen iletisi sonra WM_NOTIFY mesaj alır.
İletişim kutusunun durumu hakkında bilgi almak için ya da davranış ve iletişim kutusunun görünümünü denetlemek için iletişim kutusuna kancası yordamı aşağıdaki iletiler gönderebilirsiniz.
CDM_GETFILEPATH | Seçili dosyanın dosya adı ve yolunu alır. |
CDM_GETFOLDERIDLIST | İletişim kutusu açık olduğundan geçerli klasöre karşılık gelen madde tanımlayıcısı listesini alır. Madde tanımlayıcısı listeleri hakkında daha fazla bilgi için bkz: Madde tanımlayıcıları ve tanımlayıcı listeler. |
CDM_GETFOLDERPATH | Geçerli klasör veya dizin iletişim kutusu yolunu alır. |
CDM_GETSPEC | (Yol dahil değil) dosya adı iletişim kutusunda seçili dosya alır. |
CDM_HIDECONTROL | Belirtilen denetim gizler. |
CDM_SETCONTROLTEXT | Ayarlar içinde belirtilen denetim metni. |
CDM_SETDEFEXT | Ayarlar iletişim kutusu için varsayılan dosya adı uzantısı. |