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

[0] Índice de Mensajes

Ir a la versión completa