Я работаю над простым проектом с DirectX9. У меня есть небольшая проблема с некоторыми преобразованиями типов данных, и я провел некоторые исследования, но не нашел ничего особенно полезного. Давайте начнем с кодом:LPCWSTR to char * и наоборот
LPDIRECT3DSURFACE9 LoadSurface(char *fileName, D3DCOLOR transColor)
{
LPDIRECT3DSURFACE9 image = NULL;
D3DXIMAGE_INFO info;
HRESULT result;
result = D3DXGetImageInfoFromFile(fileName, &info);
if (result != D3D_OK) return NULL;
result = d3ddev->CreateOffscreenPlainSurface(
info.Width, //width of the surface
info.Height, //height of the surface
D3DFMT_X8R8G8B8, //surface format
D3DPOOL_DEFAULT, //memory pool use
&image, //reference to image
NULL); //reserved - ALWAYS NULL
//make sure file loaded properly
if (result != D3D_OK) return NULL;
return image;
}
В строке 6, я получаю сообщение об ошибке в переменной FileName:
IntelliSense: аргумент типа «символ *» несовместим с параметром типа «LPCWSTR»
Я также получить точно такое же сообщение об ошибке на втором и третьем параметрах при попытке использовать MessageBox-х:
if (d3ddev == NULL)
{
MessageBox(hWnd, "Error Creating Direct3D Device", "Error", MB_ICONERROR);
return 0;
}
Я использовал код в точности как этот БЭФ руды и проблем не было. Не знаю, что происходит - особенно потому, что LPCWSTR и char * - это, по сути, одно и то же ...
Любая помощь приветствуется! Спасибо
LPCSTR и char * я могу согласиться, LPCWSTR хотя? нет. – Borgleader
* Не знаю, что происходит - особенно потому, что LPCWSTR и char * - это, по сути, одно и то же. * - ** Нет, они не являются ** – PaulMcKenzie
[Этот вопрос/вопрос] (http://stackoverflow.com/questions/3924926/can not-convert-parameter-1-from-char-to-lpcwstr? Rq = 1) может ответить на ваш вопрос. (Посмотрите на второй ответ, измените конфигурацию проекта, чтобы API не ожидали unicode). – alain