2011. április 24., vasárnap

char* -> const WCHAR*

Megosztom veletek azt a kis nehézséget, amin már szinte a hajamat téptem, de másfél-két óra guglizással végül nagy nehezen sikerült megtalálnom a megoldást.

Visual Studio 2010, C++, DirectX 3D-ben kell egy menürendszert írnom, ami a menüpontok textúráinak fájlneveit egy szöveges állományból olvassa be.

A textúrabetöltésért felelős függvény, a D3DXCreateTextureFromFile() a második paraméterbe várja a fájlnevet, de LPWCSTR, azaz const WCHAR* típussal. A fájlból viszont én persze char*-ba olvasok be, és a konverzió nem igazán működött. Próbálkoztam cast-olással, de kivételt dobott a program.

A megoldás: ATL conversion macros.

  1. #include <atlbase.h>
  2. a függvénytörzs (amin belül használni akarom a makrókat) első sorába: USES_CONVERSION;
  3. és a sok makró közül az A2CW() volt a megfelelő nekem. (A=ansi, C=const, W=unicode)

Nagy öröm, amikor fél napnyi izzadás után sikerül rátalálni a megoldásra! Túl vagyok a nehezén, innentől már nincs sok és kész leszek. :-)