Programación General > Visual C++
Aplicacion Basica, funciona en Codeblocks no en VS2005
(1/1)
エリック:
Obtuve un problema al crear una aplicación básica, que busca generar una ventana.
En VS2005, creo un win32 Console Application vacio.
En CodeBlocks simplemente un archivo de códgigo en c++; luego añadi en ambos el siguiente código:
--- Código: C++ --- // PrimerPrograma.cpp : Defines the entry point for the console application.// #include <windows.h>//#include "stdafx.h" const char g_szClassName[]="myWindowClass"; LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam){ switch(msg) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,msg,wParam,lParam); } return 0;}int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ WNDCLASSEX wc; HWND hwnd; MSG msg; wc.cbSize=sizeof(WNDCLASSEX); wc.style=0; wc.lpfnWndProc=WndProc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInstance; wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName=NULL; wc.lpszClassName=g_szClassName; wc.hIconSm=LoadIcon(NULL,IDI_APPLICATION); if(!RegisterClassEx(&wc)) { MessageBox(NULL,"Registracion de Windows Fallo!","Horror!",MB_ICONEXCLAMATION|MB_OK); return 0; } hwnd=CreateWindowEx(WS_EX_CLIENTEDGE,g_szClassName,"Titulo",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,240,120,NULL,NULL,hInstance,NULL); if(hwnd==NULL) { MessageBox(NULL,"Fallo la creacion de la ventana!","Error!",MB_ICONEXCLAMATION|MB_OK); return 0; } ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0)>0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;} El cuál en Codeblocks me genera una ventana, y todo va normal.
Pero cuando compilo en VS2005 me generan 4 errores:
*.cpp(39) : error C2440: '=' : cannot convert from 'const char [14]' to 'LPCWSTR' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
*.cpp(43) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [31]' to 'LPCWSTR' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
*.cpp(46) : error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [14]' to 'LPCWSTR' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
*.cpp(49) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [33]' to 'LPCWSTR' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
*.cpp(59) : warning C4244: 'return' : conversion from 'WPARAM' to 'int', possible loss of data
En VS2005, tiene problemas de tipo a la hora de convertir los literales, pero en Codeblocks no. :hitcomp: :lol: :unsure:
Que puede estar mal, es mi primera incursión programando "visualmente".
Gracias.
Radger:
Bueno eso ocurre por que tendras configurado el proyecto como Unicode.
Puedes ponerlo en multibyte en las propiedades del proyecto>General, tambien puedes hacer un cast a LPCWSTR.
Saludos
エリック:
--- Cita de: "Radger" ---Bueno eso ocurre por que tendras configurado el proyecto como Unicode.
Puedes ponerlo en multibyte en las propiedades del proyecto>General, tambien puedes hacer un cast a LPCWSTR.
Saludos
--- Fin de la cita ---
Use windows Japones, virtualizado sobre Ubuntu, desde allí cree el programa ... entonces ¿Todo lo que cree allí aparecera por defecto como "Caracter Set: Unicode"?; cambie en Proyecto>Propiedades de la Aplicación>Propiedades de la Configuración - Usar multi-byte.
Pero aún así no se corrigió el problema y me vota estos "nuevos" errores(Hice la construcción en un Windows en Español, espero que no importe):
1>------ Operación Generar iniciada: proyecto: aplicacion, configuración: Debug Win32 ------
1>Compiling...
1>main.cpp
1>c:...aplicacionaplicacionmain.cpp(59) : warning C4244: 'return' : conversion from 'WPARAM' to 'int', possible loss of data
1>Compiling manifest to resources...
1>Linking...
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>C:...aplicacionDebugaplicacion.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:...aplicacionaplicacionDebugBuildLog.htm"
1>aplicacion - 2 error(s), 1 warning(s)
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
Se supone que VS2005, debería prestarse a ser adecuado para la programación Visual.
Gracias por las respuestas, muy agradecido.
Navegación
Ir a la versión completa