最近 写了 一个 IconLoadDraw 函数,可以读取 ico 文件 ,并 绘制在对话框上。
如果 ico 里 有 png 的 icon 可以 另存为 png 文件。
BOOL CIconReadDlg::IconLoadDraw(LPCTSTR pszFileName)
{
HANDLE hFile = CreateFile(pszFileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (!hFile) return NULL;
DWORD dwBytesRead;
ICONDIR* pIconDir = (ICONDIR*)malloc(sizeof(ICONDIR));
if (!ReadFile(hFile,pIconDir,sizeof(WORD)*3,&dwBytesRead,NULL)|| dwBytesRead != sizeof(WORD)*3)
{
free(pIconDir);
CloseHandle(hFile);
return FALSE;
}
pIconDir = (ICONDIR*)realloc(pIconDir,(sizeof(WORD)*3) +
(sizeof(ICONDIRENTRY) * pIconDir->idCount));
if (!ReadFile( hFile,pIconDir->idEntries,pIconDir->idCount * sizeof(ICONDIRENTRY),&dwBytesRead,NULL)
|| dwBytesRead != pIconDir->idCount * sizeof(ICONDIRENTRY))
{
free(pIconDir);
CloseHandle(hFile);
return FALSE;
}
//
int xPos=10;
&nb