INFO: Crear un cuadro de diálogo no modal con bibliotecas MFC

Seleccione idioma Seleccione idioma
Id. de artículo: 103788 - Ver los productos a los que se aplica este artículo
En este artículo se muestra cómo crear un cuadro de diálogo no modal mediante recurso de plantilla de cuadro de adialog mediante MFC.

Para crear un cuadro de diálogo de CModeless, los pasos siguientes deben befollowed:

  1. Cree una clase de cuadro de diálogo derivada de CDialog y reemplazar la función miembro Create() de CDialog. Por ejemplo, podría tener código similar al siguiente:
          class CModeless: public CDialog
               {
                 .
                 .
                 .
                 public:
                     CModeless(){ }
                     BOOL Create(UINT nID, CWnd * pWnd)
                          { return CDialog::Create(nID,pWnd);}
                 .
                 .
                 .
               };
    				
    Nota: Puede permitir ClassWizard genere la clase de cuadro de diálogo y, a continuación, simplemente agregar la función Create().
  2. Escribir código para construir un objeto de la clase de diálogo y crear la ventana del cuadro de diálogo. Por ejemplo, si tiene un elemento de menú que debe mostrar el cuadro de diálogo, puede tener código similar al siguiente:
          void CMainFrame::OnModeless()
            {
                pdlg = new CModeless;
                pdlg->Create(IDD_DIALOG1,this);
            }
    				
    donde CMainFrame::pdlg se define como:
    CModeless * pdlg;
    Nota: Es importante asignar el objeto en el montón en lugar de la pila si desea impedir que el cuadro de diálogo no modal se destruye cuando se sale de la función.
  3. Debe llamar a CWnd::DestroyWindow() en OnCancel o cada vez que necesita ser destruido el cuadro de diálogo no modal.
          void CModeless::OnCancel()
          {
              DestroyWindow();
          }
    				
  4. Reemplace CWnd::PostNcDestroy() en la clase de diálogo para eliminar el objeto de cuadro de diálogo:
       virtual void CModeless::PostNcDestroy() {delete this;}
    				
    PostNcDestroy() es una función miembro virtual de la clase CWnd que llama a la función OnNcDestroy().
Una clase de cuadro de diálogo no modal generalmente reemplazarán las funciones de miembro de andOnCancel() de OnOK() para llamar a DestroyWindow() y debe Llamarme la clase base CDialog::OnOK() y CDialog::OnCancel() funciones.El callEndDialog() de las funciones CDialog::OnOK() y CDialog::OnCancel(). EndDialog() debe invocarse únicamente cuando se usan dialogboxes modal.

Si se utiliza el intercambio de datos de cuadro de diálogo (DDX) y la Validation(DDV) de datos de cuadro de diálogo, está OnOK() controlador para la clase de diálogo puede ser similar a los siguientes:
   void CModeless::OnOK()
   {
           if (!UpdateData(TRUE))
             {
               TRACE0("UpdateData failed during dialog termination\n");
               // The UpdateData routine will set focus to correct item
               return;
             }
           DestroyWindow();
   }
		
Expandir todo | Contraer todo

Propiedades

Id. de artículo: 103788 - Última revisión: domingo, 15 de diciembre de 2013 - Versión: 4.0
La información de este artículo se refiere a:
  • Microsoft Foundation Class Library 4.2 sobre las siguientes plataformas
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 4.0 Standard Edition
Palabras clave: 
kbdlg kbinfo kbuidesign kbmt KB103788 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 103788
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com