CodeForge.comFree Open Source Codes Forge and Sharing |
#include "stdafx.h"
#include <io.h>
#include <fcntl.h>
#include "../public/imgrwl.h"
#include "../public/resdyn.h"
#include "ani.h"
//#define __TEST
int FindInFile(int fd,DWORD tag)
{
DWORD dw;int l;
do{
l=read(fd,&dw,4);
lseek(fd,-3,SEEK_CUR);
}while(dw!=tag && l==4);
lseek(fd,-1,SEEK_CUR);
return l==4;
}
HANDLE LoadAni(LPCTSTR fn)
{
#ifdef __TEST
CFile tf;
#endif
int fd;HANDLE hResDyn=0;
ANIFILEHEADER anih;
ACONHEAD aconh;
ICOCURPAGEINFO pagei;
DWORD tag,i;
int data_size;/*静态光标文件页数椐大小*/
int len;
if ((fd=open(fn,O_RDONLY)==-1)) return 0;
read(fd,&anih,sizeof(ANIFILEHEADER));
if (anih.AniTag!=*(DWORD*)"RIFF") goto fail;
do{ //找出"anih"部分
tag=*(DWORD*)"anih"; //tag 为 "anih"
FindInFile(fd,tag);
read(fd,&aconh,sizeof(ACONHEAD));
}while (aconh.Size!=0x24||aconh.Size!=0x24);
////////////////////////////////////////////////////////////////
// len=anih.AniContentSize;
//注释去以下程序块以空间换时间
//计算内部数据块大小
len=sizeof(RESDYNDATAHEADER)
+sizeof(DISPLAYFRAMEINFO)*aconh.DisplayFrameQuantity
+sizeof(STOREFRAMEINFO)*aconh.StoreFrameQuantity;
do{
tag=*(DWORD*)"fram";
FindInFile(fd,tag);
lseek(fd,4,SEEK_CUR);
read(fd,&tag,4);
lseek(fd,-7,SEEK_CUR);
}while (tag!=*(DWORD*)"icon"); //找出"framicon"位置
for (i=0;i<aconh.StoreFrameQuantity;i++)
{
tag=*(DWORD*)"icon";
FindInFile(fd,tag);
lseek(fd,14,SEEK_CUR);//跳过cur文件头
read(fd,&pagei,sizeof(ICOCURPAGEINFO)); //读页头
//计算页数据大小,调色板大小+数据大小
data_size=pagei.PageSize-sizeof(ICOCURPAGEHEADER);
len+=data_size;
}
//////////////////////////////////////////////////////////////////
//分配全局内存块
hResDyn=GlobalAlloc(GHND,len);
if (!hResDyn) goto fail;
//向内存块填入数据
LPBYTE lpResDyn,lpData;
LPRESDYNDATAHEADER lpDataHead;
LPDISPLAYFRAMEINFO lpDispInfos;
LPSTOREFRAMEINFO lpStoreInfos;
lpResDyn=(BYTE*)G
...
...
... to be continued.
This is a preview. To get the complete source file,
please click here to download the whole source code package.
| Name | Size | Date |
| 48.00 kB | 08-12-01 16:23 | |
| 24.00 kB | 28-11-01 19:29 | |
| 24.00 kB | 02-12-01 19:46 | |
| 36.00 kB | 28-11-01 19:30 | |
| 24.00 kB | 03-12-01 11:52 | |
| 24.00 kB | 08-12-01 16:23 | |
| 32.00 kB | 08-12-01 16:22 | |
| 0.00 B | 08-12-01 16:56 | |
| 0.00 B | 08-03-05 21:34 | |
| 1.67 kB | 05-12-01 19:25 | |
| 1.48 kB | 06-12-01 17:46 | |
| 322.00 B | 05-12-01 19:25 | |
| 2.50 kB | 05-12-01 19:25 | |
| 1.71 kB | 05-12-01 19:25 | |
| 1.22 kB | 05-12-01 19:25 | |
| 200.00 B | 05-12-01 19:29 | |
| 1.41 kB | 05-12-01 19:25 | |
| 208.00 B | 05-12-01 19:25 | |
| 378.00 B | 05-12-01 19:25 | |
| 2.99 kB | 05-12-01 19:25 | |
| 4.35 kB | 07-12-01 22:52 | |
| 5.65 kB | 07-12-01 19:33 | |
| 17.51 kB | 07-12-01 20:56 | |
| 1.21 kB | 08-12-01 16:22 | |
| 13.25 kB | 05-12-01 20:59 | |
| 1.64 kB | 17-10-00 12:43 | |
| 4.13 kB | 06-12-01 15:41 | |
| 4.06 kB | 08-12-01 16:21 | |
| 398.00 B | 05-12-01 19:25 | |
| 0.00 B | 08-12-01 19:31 | |
| 0.00 B | 20-03-05 22:05 | |
| 0.00 B | 08-12-01 19:31 | |
| 2.24 kB | 03-12-01 11:58 | |
| 1.19 kB | 03-12-01 11:30 | |
| 751.00 B | 24-11-01 20:22 | |
| 1.48 kB | 08-12-01 16:14 | |
| 0.00 B | 08-12-01 19:32 | |
| 340.00 B | 30-11-01 20:14 | |
| 2.54 kB | 30-11-01 20:14 | |
| 541.00 B | 30-11-01 20:14 | |
| 1.74 kB | 30-11-01 20:14 | |
| 1.26 kB | 30-11-01 20:14 | |
| 209.00 B | 30-11-01 21:31 | |
| 1.41 kB | 30-11-01 20:14 | |
| 211.00 B | 30-11-01 20:14 | |
| 381.00 B | 30-11-01 20:14 | |
| 3.01 kB | 30-11-01 20:14 | |
| 33.00 kB | 30-11-01 20:15 | |
| 4.28 kB | 30-11-01 21:49 | |
| 17.55 kB | 30-11-01 20:14 | |
| 47.50 kB | 30-11-01 20:15 | |
| 1.64 kB | 03-12-01 11:52 | |
| 1.08 kB | 05-12-01 21:48 | |
| 401.00 B | 30-11-01 20:14 | |
| 0.00 B | 08-12-01 19:32 | |
| 0.00 B | 08-12-01 19:32 | |
| 328.00 B | 24-11-01 10:58 | |
| 2.52 kB | 24-11-01 10:58 | |
| 1.76 kB | 26-11-01 19:10 | |
| 1.23 kB | 24-11-01 10:58 | |
| 205.00 B | 26-11-01 19:04 | |
| 1.41 kB | 24-11-01 10:58 | |
| 209.00 B | 24-11-01 10:58 | |
| 379.00 B | 24-11-01 10:58 | |
| 3.00 kB | 24-11-01 10:58 | |
| 4.30 kB | 26-11-01 22:41 | |
| 1.84 kB | 02-12-01 19:43 | |
| 157.00 B | 24-11-01 20:19 | |
| 1.85 kB | 02-12-01 19:46 | |
| 17.52 kB | 26-11-01 20:46 | |
| 399.00 B | 24-11-01 10:58 | |
| 0.00 B | 08-12-01 19:32 | |
| 0.00 B | 08-12-01 19:32 | |
| 2.99 kB | 08-12-01 16:22 | |
| 4.14 kB | 26-11-01 16:08 | |
| 529.00 B | 26-11-01 16:08 | |
| 1.36 kB | 26-11-01 20:46 | |
| 4.37 kB | 26-11-01 20:56 | |
| 1.03 kB | 26-11-01 16:08 | |
| 205.00 B | 26-11-01 16:08 | |
| 1.64 kB | 02-12-01 11:57 | |
| 4.15 kB | 06-12-01 11:41 | |
| 1.78 kB | 04-12-01 12:43 | |
| 4.62 kB | 04-12-01 12:43 | |
| 2.70 kB | 08-12-01 13:09 | |
| 7.55 kB | 08-12-01 13:15 | |
| 1.39 kB | 08-12-01 13:08 | |
| 9.87 kB | 08-12-01 13:08 | |
| 89.00 kB | 08-12-01 16:54 | |
| 5.37 kB | 04-12-01 19:07 | |
| 1.07 kB | 08-12-01 16:23 | |
| 47.50 kB | 08-12-01 16:54 | |
| 1.10 kB | 04-12-01 19:25 | |
| 2.06 kB | 04-12-01 19:30 | |
| 44.34 kB | 08-12-01 13:08 | |
| 2.41 kB | 29-11-01 16:42 | |
| 214.00 B | 29-11-01 13:29 | |
| 1.78 kB | 08-12-01 13:12 | |
| 10.61 kB | 08-12-01 16:19 | |
| 1.20 kB | 04-12-01 20:03 | |
| 2.22 kB | 04-12-01 20:05 | |
| 395.00 B | 26-11-01 16:08 | |
| 1.05 kB | 26-11-01 16:08 | |
| 1.99 kB | 08-12-01 13:08 | |
| 326.00 B | 27-11-01 22:45 | |
| 326.00 B | 28-11-01 12:57 | |
| 326.00 B | 28-11-01 20:15 | |
| 2.49 kB | 27-11-01 22:29 | |
| 0.00 B | 08-12-01 19:32 | |
| 0.00 B | 08-12-01 19:32 | |
| 322.00 B | 03-12-01 13:02 | |
| 2.50 kB | 03-12-01 13:02 | |
| 1.71 kB | 03-12-01 13:02 | |
| 1.22 kB | 03-12-01 13:02 | |
| 200.00 B | 03-12-01 13:08 | |
| 1.41 kB | 03-12-01 13:02 | |
| 208.00 B | 03-12-01 13:02 | |
| 378.00 B | 03-12-01 13:02 | |
| 2.99 kB | 03-12-01 13:02 | |
| 4.28 kB | 04-12-01 16:46 | |
| 5.64 kB | 08-12-01 16:16 | |
| 1.58 kB | 03-12-01 21:11 | |
| 1.37 kB | 08-12-01 16:23 | |
| 17.51 kB | 04-12-01 12:37 | |
| 4.85 kB | 04-12-01 16:40 | |
| 398.00 B | 03-12-01 13:02 | |
| 0.00 B | 08-12-01 19:32 | |
| 0.00 B | 08-12-01 19:32 | |
| 0.00 B | 08-03-05 21:34 | |
| 181.00 B | 08-03-05 21:35 | |
| 0.00 B | 0% 08-03-05 |