Uygulama iletişim kutusu
atl projenizde bir iletişim kutusu eklemenin iki yolu vardır: atl iletişim Sihirbazı'nı kullanın veya el ile ekleyebilirsiniz.
atl iletişim Sihirbazı'nı içeren bir iletişim kutusu ekleme
İçinde iletişim kutusunda Add Class, atl iletişim nesnesi atl projenizde bir iletişim kutusu eklemek için seçin. atl iletişim Sihirbazı uygun şekilde doldurun ve'ı Son. Sihirbaz türetilen bir sınıfı ekler CAxDialogImpl projenize. Kaynak görünümünden açın View menü, kendi iletişim bulun ve Kaynak Düzenleyicisi'nde açmak için çift tıklatın.
Not
İletişim kutusu türetilir, CAxDialogImpl, hem de ActiveX barındırabilir ve Windows denetler.İletişim kutusu sınıfınızda ActiveX denetimi desteği yükünü istemiyorsanız kullanın CSimpleDialog veya CDialogImpl onun yerine.
İleti ve olay işleyicileri iletişim sınıfınızın sınıf görünümünden eklenebilir. Daha fazla bilgi için bkz. Bir ATL İleti İşleyicisi Ekleme.
Bir iletişim kutusu el ile ekleme
Uygulama bir iletişim kutusu, bir pencere gerçekleştirmek için benzer. Ya da bir sınıf türetmek CAxDialogImpl, CDialogImpl, ya da CSimpleDialog ve bildirdiğiniz bir ileti eşleme iletileri işlemek için. Ancak, türetilmiş bir sınıf içerisinde de iletişim şablon kaynak kodu belirtmeniz gerekir. Sınıfınızın adlı bir veri üyesi olmalıdır IDD bu değeri tutmak için.
Not
atl iletişim Sihirbazı'nı kullanarak bir iletişim kutusu oluşturduğunuzda, sihirbaz otomatik olarak ekler IDD üye olarak bir enum türü.
CDialogImplbir kalıcı veya Windows denetimleri barındıran bir kalıcı olmayan bir iletişim kutusu sağlar. CAxDialogImplhem Windows, hem de ActiveX denetimleri barındıran bir kalıcı olmayan bir iletişim kutusu ya da bir kalıcı çözümü sağlar.
Kalıcı bir iletişim kutusu oluşturmak için bir kopyasını oluşturmak sizin CDialogImpl-türetilmiş (ya da CAxDialogImpl-türetilmiş) sınıf ve sonra call DoModal yöntemi. Modal iletişim kutusunu kapatmak için çağrı EndDialog bir ileti işleyicisi yönteminin. Kalıcı olmayan bir iletişim kutusu oluşturma çağrısı Create yöntemi yerine DoModal. Kalıcı olmayan bir iletişim kutusu yıkmak için çağrı DestroyWindow.
Olayları sinking otomatik olarak yapılır CAxDialogImpl. İşleyicileri gibi iletişim kutusunun ileti işleyicileri uygulayan bir CWindowImpl-türetilmiş sınıf. İleti özgü dönüş değeri ise olarak dönmek bir LRESULT. Döndürülen LRESULT değerler Windows iletişim Yöneticisi tarafından düzgün işleme için atl tarafından eşleştirilir. Ayrıntılı bilgi için bkz: kaynak kodu CDialogImplBaseT::DialogProc atlwin.h de.
Örnek
Bir iletişim kutusu aşağıdaki sınıf uygular:
class CMyDialog : public CDialogImpl<CMyDialog>
{
public:
enum { IDD = IDD_MYDLG };
BEGIN_MSG_MAP(CMyDialog)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnBnClickedCancel)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
// Do some initialization code
return 1;
}
public:
LRESULT OnBnClickedCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
};