• Martes 21 de Mayo de 2024, 05:28

Autor Tema:  Fallo Al Crear Ventana  (Leído 1779 veces)

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Fallo Al Crear Ventana
« en: Miércoles 23 de Agosto de 2006, 15:18 »
0
Buenas:

Pues eso, no entiendo que hago mal en este segmento de codigo.
La verdad es que esta cortapegado de otra aplicacion en la que si funciona, asi que mas que cual es el fallo en el codigo , la pregunta seria ¿que puede provocar que CreateWindowEx provoque excepcion asi?

El debug me da "Damage After Normal Block", supongo que es un puntero desviado?


appWINDOW::appWINDOW()   
{
   HINSTANCE hInstance   = GetModuleHandle(NULL);         // Grab An Instance For Our Window

  //Step 1: Registering the Window Class
    wc.cbSize        = sizeof(WNDCLASSEX);   //siempre es sizeof(wndclassex);
    wc.style         = 0;               
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = NULL;
    wc.hCursor       = NULL;
    wc.hbrBackground = NULL;
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = "Prueba";
    wc.hIconSm       = NULL;

   RegisterClassEx(&wc);

   hWnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        "Prueba",  //es el lpszClassName de la ClassEx registrada para que sepa como es el master
        "Prueba de dialogos",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 600, 600,
        NULL, NULL, hInstance, NULL); <------------------- Excepcion aqui
...
}

gracias de antemano.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Fallo Al Crear Ventana
« Respuesta #1 en: Miércoles 23 de Agosto de 2006, 15:24 »
0
He probado a cambiar todo el codigo por otro codigo verificado y sigue fallando.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Fallo Al Crear Ventana
« Respuesta #2 en: Miércoles 23 de Agosto de 2006, 16:02 »
0
¿Da una excepcion? ¿Lo estas depurando? ¿Seguro que es en esa funcion? ¿Dentro de la funcion de Windows? ¿Justo antes? ¿Justo despues? Parece mas bien un mensaje relacionado con que pasaste los limites de algun array ... ¿Que hay en el desensamblador?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Fallo Al Crear Ventana
« Respuesta #3 en: Sábado 26 de Agosto de 2006, 18:17 »
0
Disculpa no haber respondido antes, el fallo era mio
el wc era WNDCLASS y lo estaba usando como WNDCLASSEX

gracias igualmente

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Fallo Al Crear Ventana
« Respuesta #4 en: Sábado 26 de Agosto de 2006, 19:25 »
0
vaya, pues es un fallo raro:

el codigo, colocado en el main funciona correctamente, en una funcion tambien , pero falla si lo coloco en un metodo de una clase.

el Fallo es : Unhandled Exception in w.exe: 0xC0000005 Access Violation
y me manda  a un punto sin codigo ensamblador con las tipicas "???" en la direccion 0 o sea que me manda a NULL , lo malo es que ese codigo funciona fuera del metodo y siempre que miro en Internet esta hecho igual.

 :blink: me esta volviendo loco, acaso no se pueden crear ventanas en un metodo? no le encuentro el sentido.

ya siento la molestia, pero estoy desconcertado, por ahora lo metere en el main pero pretendia encapsularlo.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Fallo Al Crear Ventana
« Respuesta #5 en: Sábado 26 de Agosto de 2006, 19:41 »
0
Comproba, dos veces al menos, que cuando llamas a CreateWindowEx el campo lpfnWndProc de wc no es nulo.

Segui la ejecucion instruccion a instrucciones, habra un call a 0 probablemente, trata de ver desde donde se hace (tambien podes ver la pila para saberlo).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Fallo Al Crear Ventana
« Respuesta #6 en: Domingo 27 de Agosto de 2006, 05:03 »
0
Muchas gracias, has dado en el clavo otra vez.

El wndproc se ponia en null, pasandole el DefWindowProc se ha arreglado , asi pues ya tengo por donde ir para arreglarlo.

Al hacerse el CreateWindowEx el mensaje de NC_CREATE que se manda caia en un puntero nulo del procedimiento y plaf, Access Violation.

He estado leyendo en internet que pasar punteros de WNDPROC entre methods es delicado (por eso fuera de la clase el codigo funcionaba) ya informare cuando lo resuelva.

Muchas gracias de nuevo, un saludo.