当前位置: 代码迷 >> Delphi >> UpdateResource换个图标,如何多出个“语言中性,中文(中国)”来
  详细解决方案

UpdateResource换个图标,如何多出个“语言中性,中文(中国)”来

热度:149   发布时间:2016-05-10 04:44:55.0
UpdateResource换个图标,怎么多出个“语言中性,中文(中国)”来?
用eXeScope打开看原来的是:
资源
  图标
  MAINICON
  1: 32*32,16色 对应DELPHI默认图标

换完后变成:
资源
  图标
  MAINICON
  1: 32*32,16色 显示语言中性 中文(中国)
  语言中性 对应换了后的图标
  中文(中国) 对应DELPHI默认图标
   
真是见了鬼了。但是确实是换了,可以显示新图标。代码如下:
因为DELPHI的TICON类有问题,同样的代码老是着色失真,所以用VC写的换图标的程序(DELPHI版的换了也是上面的情况,只是图标着色失真)
int TestC(char SFileName[],char DFileName[])  
{  

HINSTANCE hInstance=LoadLibrary(SFileName);//载入图标源文件 

 DWORD maxSize=0;
  HRSRC hRsrc =NULL;
 DWORD resourcelen=0;
 int idx=1;
 int maxidx=1;




  LPVOID lpRes =0;
 HANDLE hUpdateRes =0;


 while(true)
 {//讀取最大的圖片
  hRsrc=FindResource(hInstance,(LPCSTR)idx,(LPCSTR)RT_ICON); //查找源文件中的图标文件
  resourcelen=SizeofResource(hInstance,hRsrc);
  if(resourcelen<=0)
  {
  break;
  }
  if(resourcelen>maxSize)
  {
  maxSize=resourcelen;
  maxidx=idx;
  }
  idx++;
 }
 hRsrc=FindResource(hInstance,(LPCSTR)maxidx,(LPCSTR)RT_ICON); //查找源文件中的图标文件
 resourcelen=SizeofResource(hInstance,hRsrc);
 lpRes =LockResource(LoadResource(hInstance,hRsrc)); //锁定资源
 if (!lpRes)
 {
  return 0;
 }
 
  hUpdateRes = BeginUpdateResource(DFileName, FALSE); //更新dd2文件图标为dd的 
if(!hUpdateRes)
  {
return 0;
}
  //更新图标资源
if(!UpdateResource(hUpdateRes,(LPCSTR)RT_ICON, (LPCSTR)1,0,lpRes,resourcelen))
  {
return 0;
}
  //结束更新资源
  if(!EndUpdateResource(hUpdateRes,FALSE))
  {
return 0;
}

   
  FreeResource(hRsrc); //关闭句柄
  FreeResource(hUpdateRes);//关闭句柄
  //释放载入的源文件
  if(!FreeLibrary(hInstance))
  {
return 0;
}
return 1;
   
  }  


------解决方案--------------------
不懂
回复内容 回复内容太短了!
  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!
 
  • 最近登录:Thu Apr 27 07:25:56 CST 2017
  • 最近登录:Thu Apr 27 07:25:56 CST 2017
  • 最近登录:Thu Apr 27 07:25:56 CST 2017
  • 最近登录:Thu Apr 27 07:25:56 CST 2017
  • 最近登录:Thu Apr 27 07:25:56 CST 2017