C/Visual C - Compatibilidad VEstudio.net vStudio 2005

 
Vista:

Compatibilidad VEstudio.net vStudio 2005

Publicado por Jano (1 intervención) el 24/06/2007 21:57:17
Hola, seguramente este no sea el mejor foro para preguntar esto... pero es que ando bastante desesperado :S

Quería aprender Directx, y me compré un libro para aprender y eso. Resulta que está pensado para trabajar con Visual Studio NT y yo tengo el 2005... pènsé que no habría problemas pero ya en el primer ejemplo me daba errores. :S

Abrí un nuevo proyecto como me dicen en el libro del tipo que dicen y todo eso, perfecto (aplicación win32) pero al ejecutar me da error. Abrí directamente el proyecto que te viene en el cd del libro y te dice que es un proyecto del VS NT y que ha de adaptarlo al 2005, si continuas se ejecuta perfectamente. Al mirar si había cambios... el código era el mismo que el del libro, así que no puedo saber qué es lo que tengo que hacer para escribir aplicaciones válidas para el VS2005 :S

Los errores que me salen son:

c:\archivos de programa\microsoft visual studio 8\projects\mas pruebas\mas pruebas\winmain.cpp(19) : error C2731: 'WinMain' : no se puede sobrecargar la función
c:\archivos de programa\microsoft visual studio 8\projects\mas pruebas\mas pruebas\winmain.cpp(16) : vea la declaración de 'WinMain'
c:\archivos de programa\microsoft visual studio 8\projects\mas pruebas\mas pruebas\winmain.cpp(52) : error C2440: '=' : no se puede realizar la conversión de 'const char [15]' a 'LPCWSTR'
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
c:\archivos de programa\microsoft visual studio 8\projects\mas pruebas\mas pruebas\winmain.cpp(67) : error C2664: 'CreateWindowExW' : no se puede convertir el parámetro 2 de 'const char [15]' a 'LPCWSTR'
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


El código es un poco largo, pero se lo añado por si sirve de ayuda, que supongo que sí:

/****************************************************************
* example1
* this application shows how to setup a standard windows
* application
****************************************************************/
#include <windows.h>

// global variables
HINSTANCE hInst;
HWND wndHandle;

// forward declarations
bool initWindow(HINSTANCE hInstance);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
if (!initWindow(hInstance))
return false;

// Main message loop:
MSG msg;
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}

return (int) msg.wParam;
}

bool initWindow(HINSTANCE hInstance)
{
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = 0;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = "DirectXExample";
wcex.hIconSm = 0;
RegisterClassEx(&wcex);

// create the window
wndHandle = CreateWindow("DirectXExample",
"DirectXExample",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
640,
480,
NULL,
NULL,
hInstance,
NULL);
if (!wndHandle)
return false;

ShowWindow(wndHandle, SW_SHOW);
UpdateWindow(wndHandle);

return true;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}


¿alguna solución? :S, ¡gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Compatibilidad VEstudio.net vStudio 2005

Publicado por fernando.gomez (1603 intervenciones) el 25/06/2007 17:19:45
1. Visual Studio NT no existe, supongo que te refieres a Visual Studio 6.0.

2. Visual Studio es un conjunto de compiladores y herramientas de diferentes lenguajes de programación. Visual C++ es uno de éstos, así que supongo que te refieres a éste.

3. Debido a que Visual C++ es un compilador (et al) para trabajar con C++, el código que escribes es compatible en cualquier versión (más o menos).

4. Finalmente, el problema que tienes es en la falta de información sobre el IDE y compilador, así como falta de información en programación para WIndows con C.

A este respecto, el problema que tienes es el siguiente. Tu código pretende trabajar sin Unicode. Visual C++ 6.0 tenía desactivada la bandera de Unicode por default, mientras que Visual C++ 8.0 la tiene activada por defecto. ¿Solución? Ve a las propiedades del proyecto y desactiva la bandera de Unicode... o emplea la forma estándar de Windows para trabajar con Unicode y ASCII mezclados (por ejemplo, el macro _T("...") para texto).

Ahora, a guisa de consejo personal. DirectX es una tecnología que se basa en COM. Necesitas pués aprender Win32, COM y posiblemente ATL. Es recomendable que sepas esto antes de internarte ene l mundo de DirectX. O bien, siempre puedes aprender OpenGL, en este sentido es más sencillo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar