Problemas con Visual c++ 2008

Iniciado por Mr.Blue, 19 Noviembre 2010, 19:45 PM

0 Miembros y 1 Visitante están viendo este tema.

Mr.Blue

Hola gente!
Les comenento que instale recientemente Visual c++ 2008, pero no se porq no me compila, algunas cosas.

Por ej:

#include <stdio.h>

int main (){
int i;
for (i=0;i<5;i++)
printf ("Hola\n");
getchar ();
return 0;
}


Esto compila

#include <windows.h>
#include <stdio.h>



int main()
{ char pro[40];
HANDLE proceso;

printf ("Ingrese proceso a buscar: ");
gets (pro);
printf ("cadena a buscar: %s\n", pro);
HWND encontre = FindWindow(NULL, pro); // FindWindows Buesca un proceso del sistema por el nombre de la pantalla sintaxis a=FindWindow(Null, Arg1);
                                       //  RETORNO tiene valor de retorno del tipo HWND; NULL nulo, arg1 argumento 1 nombre a buscar ej Windows Live Messenjer
if (encontre == 0)
printf ("Ventana cerrada\n\a");
//MessageBox(NULL, "No se esta ejecutando Pinball", "Error", MB_OK | MB_ICONERROR);
//return -1;
else {
printf ("Ventana abierta\n\a");
DWORD pid; //DWORD pid; //se declara variable del tipo DWORD (variable de 32bit)
GetWindowThreadProcessId(encontre,&pid); //toma processo que se encontro en FindWindow y delvuelve el proceso PID sintaxis
                                                                                                //GetWindowThreadProcessId(encontre,&pid); // (_HWND Arg1, _DWORD Arg2);
MessageBox (NULL,"Encontrado", "Encontrado", MB_OK | MB_ICONINFORMATION);

printf ("PID:%d\n",pid);
proceso =OpenProcess(PROCESS_ALL_ACCESS,0,pid); // Abrir processo con todos los accesos tiene valor de retorno del tipo HANDLE
CloseHandle(proceso);} //cierro variable tipo Handle del valor proceso
getchar();
return 0;
}


Esto no lo compila.
Errores que me da.

Citar1>Compilando...
1>codigo.cpp
1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(12) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(279) : vea la declaración de 'gets'
1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(14) : error C2664: 'FindWindowW' : no se puede convertir el parámetro 2 de 'char [40]' a 'LPCWSTR'
1>        Los tipos señalados no están relacionados; la conversión requiere reinterpret_cast, conversión de estilo de C o conversión de estilo de función
1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(25) : error C2664: 'MessageBoxW' : no se puede convertir el parámetro 2 de 'const char [11]' a 'LPCWSTR'
1>        Los tipos señalados no están relacionados; la conversión requiere reinterpret_cast, conversión de estilo de C o conversión de estilo de función
1>El registro de compilación se guardó en el "file://c:\Users\juanca\Documents\Visual Studio 2008\Projects\captura\captura\Debug\BuildLog.htm"
1>captura - 2 errores, 1 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========


Lo raro es que compilando con cualquier otro compilador no tengo problemas.

Littlehorse

#1
Citar
1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(12) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(279) : vea la declaración de 'gets'


gets esta marcada como deprecated. Por esa razón te aparece un warning, puedes deshabilitar ese warning mediante pragma o utilizar una funciona segura como fgets.

Citar1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(14) : error C2664: 'FindWindowW' : no se puede convertir el parámetro 2 de 'char [40]' a 'LPCWSTR'

Tu proyecto esta configurado para que trabaje con UNICODE, por esa razón llamas a las funciones respectivas (***W) y por ende los parametros no son los correctos.
MessageBox

Código (cpp) [Seleccionar]
MessageBox (NULL,L"Encontrado", L"Encontrado", MB_OK | MB_ICONINFORMATION);

Para el resto de los errores aplica el mismo criterio. Ten en cuenta que LPCWSTR significa:

Código (cpp) [Seleccionar]
typedef const wchar_t* LPCWSTR;


Busca en el foro que hay bastantes explicaciones sobre este tipo de errores y el manejo de UNICODE.

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Mr.Blue

ah.. pense q era porblema de la sdk o algo de eso,  :-\ gracias!!