tipos ejemplo dialogo caracteristicas mfc dialog

ejemplo - MFC> Conectar un diálogo a una clase de diálogo



dialogo ejemplo (3)

He definido un nuevo diálogo y sus controles en un archivo de recursos ya existente. También creé un nuevo archivo que manejará los eventos que se generan desde este diálogo. Pero no estoy seguro de cómo conectar estos dos.

Es la declaración enum { IDD=IDD_NEW_DIALOG }; todo lo que se requiere para conectar los dos? ¿O deberíamos agregar alguna otra declaración?


Use el asistente de clase para crear una clase para el diálogo recién creado. ctrl + w es la tecla de método abreviado de la vista de recursos de la interfaz de usuario.


Eso es todo lo que se necesita cuando se crea el diálogo a través de la clase de diálogo ( DoModal() , o Create para un diálogo no modal), que es el camino normal a seguir.

Por supuesto, debe heredar de CDialog y agregar un mapa de mensajes para enrutar los mensajes a sus funciones de controlador ewvent.


La forma en que esto se hace generalmente en MFC es definir una plantilla de diálogo en el editor de recursos (como lo has hecho), luego en C ++ derivar una clase de CDialog y asociarla a la plantilla de diálogo (que parece que has hecho - no está del todo claro).

Lo que realmente asocia los dos es el constructor para su código CDialog. Si observa el código relacionado con el diálogo autogenerado por el asistente de clase MFC, verá en la implementación del constructor algo como esto:

CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyDlg::IDD, pParent)

donde CMyDlg :: IDD se define como una enumeración con un valor del identificador de su nueva plantilla de diálogo. Es esto lo que hace que todo suceda, no la declaración de la enumeración. Puedes modificarlo a

CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_NEW_DIALOG, pParent)

y seguirá funcionando (suponiendo que IDD_NEW_DIALOG es la identificación de plantilla de su diálogo en los recursos), ya que todo lo que sucede es que la identificación del diálogo se pasa al constructor.

En general, siempre vale la pena recordar que, a pesar de las apariencias iniciales, MFC no se une a Windows mediante bits de magia del compilador; todo se hace con C ++ y algunas macros.

EDITAR: DIALOGEX y DIALOG declaran formatos de recursos de diálogo de diferencia leve que Windows entiende: el primero es más nuevo que el último. Sin embargo, ambos han existido desde al menos Windows 95, por lo que no es una distinción muy significativa.