Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/10/2011, 21:25
Avatar de shujidan
shujidan
 
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años, 8 meses
Puntos: 5
Crash en la funcion showWindow

Pues el problema es que tengo una clase donde creo una ventana con :

Código C++:
Ver original
  1. RegisterClassEx(&wincl)
  2. hwnd = CreateWindowEx(...

esta ventana la quiero mostrar desde otra clase con

Código C++:
Ver original
  1. int App::agregar(Ventana *ventana) {
  2.     this->hwnd = ventana->hwnd;
  3. }
  4.  
  5. ShowWindow(hwnd, SW_SHOWDEFAULT);

La ventana se muestra pero es la ultima instruccion que se ejecuta antes de crashear
esta clase es la que procesa los mensajes

el problema es que cuando ejecuto el programa este crashea y no sé porqué, no hay errores en la compilación.
Se me ocurre que cuando creo la ventana esta no encuentra al WindowProcedure asociado a la hora de crear la estructura WNDCLASSEX, pero no estoy seguro.
Si alguien puede ayudarme se lo agradezco mucho.



EDIT: El error venía de un mensaje en

Código C++:
Ver original
  1. case WM_SIZE:
  2.     height = HIWORD(lParam);
  3.     width = LOWORD(lParam);
  4.     break;

Por alguna razón me tira el error en tiempo de ejecución, ya lo había hecho antes pero hoy me dió problemas por alguna razón.
el error es al intentar acceder a cualquier dato definido en la clase desde mi windowprocedure ..., para encontrar este error se me ocurrió que ShowWindow buscaba algun mensaje antes de mostrarse, como por ejemplo WM_CREATE, así que comenté todo el código de los mensajes y el programa se ejecutó sin problemas con el inconveniente de que no me permite usar más las variables de la clase , están definidas como public, ni siquiera puedo acceder al manejador de la ventana sin pasarselo por parámetro porque me tira el error.

Esto es comprensible si quiero acceder a las variables por el WindowsProcedure estático, pero este llama a otra función donde manejo los mensajes para poder acceder a la información de la clase, bueno, esto desde que me lanza el error en tiempo de ejecución.

Última edición por shujidan; 22/10/2011 a las 08:57