• Lunes 29 de Abril de 2024, 04:23

Autor Tema:  Ayuda! Error Sin Sentido!!!  (Leído 1051 veces)

Davinia

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Ayuda! Error Sin Sentido!!!
« en: Sábado 6 de Marzo de 2004, 12:43 »
0
Hola,
tengo una aplicacion en la que cuando pulso un boton de un dialogo, se muestra una ventana (y el dialogo desaparece automaticamente).
El PROBLEMA surge cuando le pongo un CDialogBar porque al ejecutar la aplicacion me daba errores en la linea 229 de winhand.cpp sobre todo.

Probe a crear la clase para el DialogBar en XP (hasta ahora lo estaba haciendo en Windows 98) y todo funcionaba correctamente, incluso cuando lo compilaba y ejecutaba en el 98.

Ahora estoy poniendole imagenes a los botones de la DialogBar con CBitmapButton y me da el mismo error tanto si lo hago en W98 como en WXP.

No se si tendra que ver con el dialogo desde el cual llamo a la nueva ventana, ¿tengo que poner codigo para destruirlo? ¿como? (El cuadro de dialogo es modal)

Para crear la nueva ventana hacia:

//extern MiVentana* m_pmiventana; en MiVentana.h
//y hago m_pmiventana=NULL en el constructor de MainFrame.cpp

//En OnOk del dialogo:
if (m_pmiventana == NULL)
{
   m_pmiventana = new MiVentana;
   m_pmiventana->Create(NULL, "Mi ventana\0");
   CDialog::OnOk();   //codigo generado por VC++
}

//MiVentana.cpp (y no la destruyo ni pongo a NULL en cualquier otro sitio)
//¿es lo correcto?????????
MiVentana::~MiVentana()
{
   m_pMiVentana->DestroyWindow();
   m_pMiVentana = NULL;
}

En MiVentana.cpp he añadido con classwizard OnCreate como respuesta a WM_CREATE.
int MiVentana::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

   if (!m_dlgbar.Create(this,IDD_REPRODBAR,CBRS_BOTTOM, IDD_REPRODBAR))
    {
          TRACE0("Failed to create toolbar\n");
           return -1;      // fail to create
    }
    return 0;
}

//En Miventana.h:
protected:
    Cmydialogbar m_dlgbar;   //mydialogbar es la clase creada para
                                        //CDialogBar

//En Cmydialogbar.cpp
mydlgbar::mydlgbar()
{
    if (!stopp.LoadBitmaps(IDB_STOP, IDB_STOPD, IDB_STOP) ||
        !play.LoadBitmaps(IDB_PLAY, IDB_PLAYD, IDB_PLAY))
     {
          TRACE0("Failed to load bitmaps for buttons\n");
           AfxThrowResourceException();
      }
}