Bir iletişim kutusu atl projenize eklemek için iki yol vardır: atl nesne Sihirbazı'nı kullanarak veya el ile ekleme.
Atl nesne Sihirbazı (Ekle menüsü, Yeni atl nesne komutu), sol bölmede çeşitli Kategori vurgulayın, sonra bir iletişim kutusu atl projenize eklemek için sağ bölmede iletişim nesneyi çift tıklatın. atl nesne Sihirbazı özellikleri iletişim kutusunda uygun şekilde doldurun ve Tamam' ı tıklatın. atl nesne sihirbaz, projenize CAxDialogImpl türetilmiş bir sınıf ekler ve kaynak Düzenleyici iletişim kutusunda şablonunuz ile açılır.
&Notnbsp; İletişim kutusunu CAxDialogImpl türetilmiştir hem Windows, hem de ActiveX denetimlerini barındırabilir. İletişim kutusunda sınıf ActiveX denetimi desteği yükünü istemiyorsanız, CSimpleDialog ya da CDialogImpl kullanın.
İleti ve olay işleyicileri iletişim sınıfınızın bir mfc sınıfı aynı şekilde ClassView eklenebilir. ClassView, sınıfı sağ tıklatın ve Yeni Windows iletisi ve olay işleyicileri iletişim kutusunu açmak için Windows ileti işleyicisi ekle seçin. Daha fazla bilgi için bkz: ileti işleyicisi ekleme.
İletişim kutusu şablondan Yeni Windows iletisi ve olay işleyicileri iletişim kutusunu açmak için iletişim kutusu şablonunda bir denetimi sağ tıklatın ve kısayol menüsünden olayları komutunu seçin. atl projesinde, iletişim kutusunda sınıf sınıf veya nesne işlemek için kutusunda vurgulanır; Oysa bir mfc projesi için denetimin vurgulanır,.
Uygulama bir iletişim kutusu, bir pencere uygulanması için benzer. CAxDialogImpl, CDialogImplveya CSimpleDialog bir sınıf türetmek ve iletileri işlemek için bir ileti göster bildirmek. Ancak, türetilmiş bir sınıf içinde de bir iletişim şablon kaynak kodu belirtmeniz gerekir. Sınıf olarak adlandırılan veri üyesi olmalıdır IDD Bu değeri tutmak için.
&Notnbsp; atl nesne Sihirbazı'nı kullanarak bir iletişim kutusu oluşturduğunuzda, sihirbaz otomatik olarak ekler IDD üye olarak enum türü.
CDialogImpl bir kalıcı veya Windows denetimleri barındıran bir kalıcı olmayan bir iletişim kutusu sağlar. CAxDialogImpl bir kalıcı veya hem Windows, hem de ActiveX denetimleri barındıran bir kalıcı olmayan bir iletişim kutusu sağlar.
Kalıcı bir iletişim kutusu oluşturmak için CDialogImplörneği oluşturma-türetilmiş (ya da CAxDialogImpl-türetilmiş) sınıf ve DoModal yöntemini çağırın. Bir kalıcı iletişim kutusunu kapatmak için bir iletiyi işleyicisinden EndDialog yöntemini çağırın. Kalıcı olmayan bir iletişim kutusu oluşturmak için DoModalyerine Create yöntemini çağırın. Kalıcı olmayan bir iletişim kutusu yok etmek için DestroyWindow çağrı.
İletişim kutusu nesnesi ActiveX denetimleri içerir ve bu denetimlerin olayları işleme, tavsiye ve tüm ActiveX denetim arabirimleri unadvise gerekecektir. Bu kod aşağıdaki satırı ekleyerek yapılabilir, InitDialog fonksiyonu:
AtlAdviseSinkMap (pMyDlg, true)
Tüm ActiveX denetimleri unadvise için kod aşağıdaki satırı ekleyin, EndDialog işlevi (ya da iletişim kutusunda nesne sonlandırıldığında Çağrılan işlev):
AtlAdviseSinkMap (pMyDlg, false)
İşleyicileri bir CWindowImplgibi iletişim kutusunun ileti işleyicileri uygulamak-türetilmiş sınıf. Message özel dönüş değeri varsa, o kadar geri bir LRESULT . Döndürülen LRESULT değerleri Windows iletişim yöneticisi tarafından uygun işleme atl tarafından eşleştirilir. Ayrıntılar için kaynak kodu CDialogImplBaseT::DialogProc için atlwin.h bakın.
Örnek
Bir iletişim kutusu aşağıdaki sınıfı uygular:
cMyDialog sınıfı: Genel CDialogImpllt;CMyDialog >,...
{
public:
Enum {IDD IDD_MYDIALOG =};
BEGIN_MSG_MAP(CMyDialog)
message_handler (WM_INITDIALOG, OnInitDialog)
END_MSG_MAP()
lresult OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
/ / Do bazı başlatma kodu
return 1;
}
}