Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Sergio en 01 de Enero de 1970, 01:00:00 AM

Título: En Visual C++ .net...
Publicado por: Sergio en 01 de Enero de 1970, 01:00:00 AM
                                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!!                                
Título: En Visual C++ .net...
Publicado por: Degiik en 01 de Enero de 1970, 01:00:00 AM
                                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 ?.

                               
Título: En Visual C++ .net...
Publicado por: CordayUK en 01 de Enero de 1970, 01:00:00 AM
                                no te dice en vez de "no definido", "no inicializado"????                                
Título: En Visual C++ .net...
Publicado por: Sergio en 01 de Enero de 1970, 01:00:00 AM
                               
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 ]                                
Título: En Visual C++ .net...
Publicado por: Daventry en 01 de Enero de 1970, 01:00:00 AM
                                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

                               
Título: En Visual C++ .net...
Publicado por: Sergio en 01 de Enero de 1970, 01:00:00 AM
                                gracias:)
una cosa menos que solucionar.

saludos!!                                
Título: En Visual C++ .net...
Publicado por: CordayUK en 01 de Enero de 1970, 01:00:00 AM
                                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));


                               
Título: En Visual C++ .net...
Publicado por: CordayUK en 01 de Enero de 1970, 01:00:00 AM
                                ups, es un puntero a la estructura.... corrigo:



memset (&msg, 0, sizeof (MSG));
                               
Título: En Visual C++ .net...
Publicado por: Sergio en 01 de Enero de 1970, 01:00:00 AM
                                Funciona perfectamente. Tambien he probado a usar "do...while" y tambien funciona. Muchas gracias por la ayuda.

Un saludo!!                                
Título: En Visual C++ .net...
Publicado por: CordayUK en 01 de Enero de 1970, 01:00:00 AM
                                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