A ver, acabo de pillar el Visual Studio .net y compilando un programa que funciona sin problemas en la version 6.0 del compilador me da un "warning". El codigo es este:
void CompruebaMensajes(void)
{
MSG msg;
while(msg.message != WM_QUIT)
{
//Si pulsa ESC manda un mensaje WM_QUIT
if(KeyDown(VK_ESCAPE) != NULL)
PostQuitMessage(0);
//Si hay algun mensaje lo traduce y lo despacha...
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{ //...si no hay ninguno renderiza.
Render();
}
}
}
Se para en la linea que dice:
while(msg.message != WM_QUIT)
y me dice que 'msg' no ha sido definido, puedo continuar, pero es muy molesto tener que darle a 'continue' cada vez que compilas por una tonteria.
Alguien sabe porque es??
un saludo!!
no definido? si no esta definido no deberia dar un warnig, daria un error, al menos en el VC++6.0. Además en el windows.h ya te define los mensages... ..?¿?¿ puedes copiar litaralemnte el error ?.
no te dice en vez de "no definido", "no inicializado"????
Citar
El 2002-09-22 14:40, Degiik escribió:
no definido? si no esta definido no deberia dar un warnig, daria un error, al menos en el VC++6.0. Además en el windows.h ya te define los mensages... ..?¿?¿ puedes copiar litaralemnte el error ?.
Que el error lo deberia dar si no esta DECLARADO en vez de definido, no??
Porque como se DEFINE una variable??
Bueno, el error es:
"Run-Time Check Failure #3 - The variable 'msg' is being used without being defined."
Por cierto, en WindowsXP hay alguna manera de evitar que te pregunte el usuario con el que te deseas identificar cada vez que se inicia el SO??
un saludo!
[ Este Mensaje fue editado por: Sergio el 2002-09-22 15:38 ]
Lo de que el XP no te pida el usuario se soluciona así: dale a Inicio->Ejecutar y pon control userpasswords2. Ahora desmarca la casilla esa q dice "Los usuarios deben escribir su nombre y contraseña para usar el equipo". Cuando pulses Aceptar te pedirá que metas el nombre del usuario que abrirá la sesión por defecto y su contraseña.
Bye
gracias:)
una cosa menos que solucionar.
saludos!!
la primera vez que te metes en el bucle, cuanto vale msg??? pues puede ser cualquier cosa... :sonriendo: msg no esta inicializada, no tiene ningun valor hasta que te has metido en el bucle. si fuera un do {} while en vez de un while {} seria perfecto, pero en c solo se puede hacer un while.
pon esto ANTES del bucle y no deberia darte el warning...
memset (msg, 0, sizeof (MSG));
ups, es un puntero a la estructura.... corrigo:
memset (&msg, 0, sizeof (MSG));
Funciona perfectamente. Tambien he probado a usar "do...while" y tambien funciona. Muchas gracias por la ayuda.
Un saludo!!
ok. me alegro !
he metido la gamba... en C claro que se puede hacer do.. while. O:)
solo que yo solo lo usaba con pascal y no pensaba que en c no habia, de hecho nunca he visto a la gente usar do..while en c.
solo eso. salu2