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!
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


0