首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

"cann't convert 'const char*' to 'const TCHAR'"解决方案

2012-10-28 
cannt convert const char* to const TCHAR小弟刚学TCHAR,使用这个修改了一下函数,但是编译出错,显

"cann't convert 'const char*' to 'const TCHAR'"
小弟刚学TCHAR,使用这个修改了一下函数,但是编译出错,显示的是"cann't convert 'const char*' to 'const TCHAR'",这是什么原因?
AUX_RGBImageRec *Texture::LoadBMP(const TCHAR* Filename)// Loads A Bitmap Image
{
  FILE *File=NULL;// File Handle

  if (!Filename)// Make Sure A Filename Was Given
  {
  return NULL;// If Not Return NULL
  }
char* filename=(char*)Filename;
  File=fopen(filename,"r");// Check To See If The File Exists

  if (File)// Does The File Exist?
  {
  fclose(File);// Close The Handle
  return auxDIBImageLoad(Filename);// Load The Bitmap And Return A Pointer
  }

  return NULL;// If Load Failed Return NULL
}



int Texture::LoadTextures()// Load Bitmaps And Convert To Textures
{
  int Status=FALSE;// Status Indicator

  AUX_RGBImageRec *TextureImage[1];// Create Storage Space For The Texture

  memset(TextureImage,0,sizeof(void *)*1); // Set The Pointer To NULL

  const TCHAR* map[4]={_T("Sky.bmp"),_T("Floor.bmp"),_T("Puf.bmp"),_T("Boom.bmp")};//出错位置
  // Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
  if (TextureImage[0]=LoadBMP(map[0]))
  {
  Status=TRUE;// Set The Status To TRUE

  glGenTextures(1, &texture[0]);// Create Three Textures

  // Create MipMapped Texture
  glBindTexture(GL_TEXTURE_2D, texture[0]);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
  gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
  }
  if (TextureImage[0]=LoadBMP(map[1]))
  {
  Status=TRUE;// Set The Status To TRUE

  glGenTextures(1, &texture[1]);// Create Three Textures

  // Create MipMapped Texture
  glBindTexture(GL_TEXTURE_2D, texture[1]);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
  gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
  }
  if (TextureImage[0]=LoadBMP(map[2]))
  {
  Status=TRUE;// Set The Status To TRUE

  glGenTextures(1, &texture[2]);// Create Three Textures

  // Create MipMapped Texture
  glBindTexture(GL_TEXTURE_2D, texture[2]);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
  gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
  }
  if (TextureImage[0]=LoadBMP(map[3]))
  {
  Status=TRUE;// Set The Status To TRUE

  glGenTextures(1, &texture[3]);// Create Three Textures



  // Create MipMapped Texture
  glBindTexture(GL_TEXTURE_2D, texture[3]);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
  gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
  }



  if (TextureImage[0])// If Texture Exists
  {
  if (TextureImage[0]->data)// If Texture Image Exists
  {
  free(TextureImage[0]->data);// Free The Texture Image Memory
  }

  free(TextureImage[0]);// Free The Image Structure
  }

  return Status;// Return The Status
}


[解决办法]
再或者把工程改成Unicode。

探讨

楼主应该用的不是Unicode的工程。
换个类型把TCHAR换成,char

[解决办法]
楼主定义的时候可以把char全部定义为TCHAR,然后字符串外面全部使用宏_T来表示。
比如:TCHAR buff[]=_T("afefsf");

热点排行