Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2006, 17:17
nostromo_
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 20 años, 1 mes
Puntos: 0
Fallo de Programa en WinAPI C++

Holas;

Estoy realizando un programa con Dev-C++ 4.9.9.0, Sistema Operativo XP Profesional.

Hasta el día de ayer no presentaba problema de ejecución, ahora me el siguiente error, y no se, a que se debe:

Código:
AppName: aserrio.exe   AppVer: 0.0.0.0   ModName: ntdll.dll
ModVer: 5.1.2600.0   Offset: 000036f9
Tengo una entrada de datos y por radio button se escoje la salida del resultado, el hecho es que el si apreto 5 ó 6 veces en diferentes radioo button el programa deja de responder, a esto en el Administrador de Tareas parte el programa con Uso de Memoria de 1636 KB, cuando selecciono los diferentes Radiobutton sube a unos 1716 KB, pero cuando llega al quinto selección el Uso de Memoria sube repentinamente a unos 2416 KB en este momento deja de funcionar.

Necesito saber que esta pasando, tengo que cambiar el compilador, si quieren ver el listado de argumentos que utilizo no hay problema.

En los radio button tengo procedimientos de ventana, los cuales consisten en fijar el cursor, en los eventos WM_LBUTTONDOWN cambio el cursor a una que simula que aprieta el radiobutton:

Código:
LRESULT CALLBACK Radio1Proc(HWND rmc,UINT msj, WPARAM wp,LPARAM lp)
{
    switch(msj)
    {
        case WM_SETCURSOR: SetCursor(lcr); return TRUE;
        case WM_LBUTTONDOWN:
            SetCursor(lcra);
            sf(Rad1);//-->function SetFocus()
            marca(Rad1,Rad2,Rad3,Rad4,Rad5);
            ew(VerVol,TRUE);//->function EnableWindow()
            return TRUE;
        case WM_KEYDOWN:
            if(wp == VK_TAB || wp == 40) sf(Rad2);
            if(wp == 38) sf(Cantidad);
            if(wp == 13) { marca(Rad1,Rad2,Rad3,Rad4,Rad5); ew(VerVol,TRUE); }
            break;
    }
    return CallWindowProc(NRad1Proc,rmc,msj,wp,lp);
}
En WM_CREATE en el WinProc :

Código:
Rad1 = CreateWindowEx(0,ctl[3]," m3",str_rad,20,197,45,15,hwnd,(HMENU)0,inst,NULL);
Rad2 = CreateWindowEx(0,ctl[3]," p3",str_rad,20,220,41,15,hwnd,(HMENU)0,inst,NULL);
Rad3 = CreateWindowEx(0,ctl[3]," pp",str_rad,20,245,40,15,hwnd,(HMENU)0,inst,NULL);
Rad4 = CreateWindowEx(0,ctl[3]," P'm",str_rad,20,270,50,15,hwnd,(HMENU)0,inst,NULL);
Rad5 = CreateWindowEx(0,ctl[3]," P''m",str_rad,20,295,52,15,hwnd,(HMENU)0,inst,NULL);

NRad1Proc = (WNDPROC)SetWindowLong(Rad1,GWL_WNDPROC,(LONG)Radio1Proc);
ProcRadio1 = (FARPROC)GetWindowLong(Rad1,GWL_WNDPROC);
Si necesitan más datos pidan...

Nos vemos.