Привет всем!
всюду пишут что курсоры не отличаются от иконок. я не спорю, но не могу понять почему же не работает код, который исправно сохраняет на диске иконки. в msdn указывается что нужно поменять поле на двойку и всё....что то вот не работает...

подскажите пожалуйста.
HANDLE hFile;
HRSRC hRsrc;
HGLOBAL hGlobal;
ICONDIR iconDir;
ICONDIRENTRY iconDirEntry;
LPGRPICONDIR lpGrpIconDir;
LPGRPICONDIRENTRY lpGrpIconDirEntry;
LPICONIMAGE lpIconImage;
int nId, iCountChar, iTemp;
DWORD dwWrittenBytes, dwCountResource, dwTemp=0;
wchar_t wcDirTemp[256];
wchar_t wcFileName[50];
//resourceId глобальная структура, в ней храню описатели и идендификаторы пиктограмм
nId=resourceId[dwIndexResource].iResourceID;
//hLib это описатель модуля shell32.dll, пробовал другие экзешники - таже фигня
hRsrc = FindResource( hLib, MAKEINTRESOURCE( nId ), iResourceType );
hGlobal = LoadResource( hLib, hRsrc );
lpGrpIconDir = (LPGRPICONDIR) LockResource( hGlobal );
lpGrpIconDirEntry=(LPGRPICONDIRENTRY)(lpGrpIconDir+1);//&lpGrpIconDir->idEntries;
//задание структуры ICONDIR
iconDir.idReserved=0;
iconDir.idType=2; //это то что написано в мсдн
iconDir.idCount=1;
dwCountResource=lpGrpIconDir->idCount;
iCountChar=wsprintf(wcDirTemp,
L"C:\\Documents and Settings\\******(уть ещё чего:)))\\Рабочий стол\\OutputFiles\\int_%d.cur",
resourceId[dwIndexResource].iResourceID);
nId=lpGrpIconDirEntry->nID;
hRsrc = FindResource( hLib, MAKEINTRESOURCE(nId), RT_CURSOR);//iResourceType-11 );
hGlobal = LoadResource( hLib, hRsrc);
lpIconImage =(LPICONIMAGE)LockResource(hGlobal);
hFile=CreateFile(wcDirTemp, GENERIC_READ|GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(INVALID_HANDLE_VALUE==hFile) return FALSE;
//подготовка данных и задание структуры ICONDIRENTRY
iconDirEntry.bHeight=lpGrpIconDirEntry->bHeight;
iconDirEntry.bWidth=lpGrpIconDirEntry->bWidth;
iconDirEntry.bColorCount=lpGrpIconDirEntry->bColorCount;
iconDirEntry.bReserved=0;
iconDirEntry.wPlanes=lpGrpIconDirEntry->wPlanes;
iconDirEntry.wBitCount=lpGrpIconDirEntry->wBitCount;
iconDirEntry.dwBytesInRes=lpGrpIconDirEntry->dwBytesInRes;
iconDirEntry.dwImageOffset=sizeof(ICONDIR)+sizeof(ICONDIRENTRY);
//запись данных в файл
WriteFile(hFile, &iconDir, sizeof(ICONDIR), &dwWrittenBytes, FALSE);
WriteFile(hFile, &iconDirEntry, sizeof(ICONDIRENTRY), &dwWrittenBytes, FALSE);
WriteFile(hFile, lpIconImage, iconDirEntry.dwBytesInRes, &dwWrittenBytes, FALSE);
CloseHandle(hFile);
///////////////////////////////////////////////////////////////////////
//другой листинг, где собраны объявления структур
typedef struct
{
WORD idReserved; // Reserved (must be 0)
WORD idType; // Resource Type (1 for icons)
WORD idCount; // How many images?
//ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em)
} ICONDIR, *LPICONDIR;
typedef struct
{
BYTE bWidth; // Width, in pixels, of the image
BYTE bHeight; // Height, in pixels, of the image
BYTE bColorCount; // Number of colors in image (0 if >=8bpp)
BYTE bReserved; // Reserved ( must be 0)
WORD wPlanes; // Color Planes
WORD wBitCount; // Bits per pixel
DWORD dwBytesInRes; // How many bytes in this resource?
DWORD dwImageOffset; // Where in the file is this image?
} ICONDIRENTRY, *LPICONDIRENTRY;
typedef struct
{
BITMAPINFOHEADER icHeader; // DIB header
RGBQUAD icColors[1]; // Color table
BYTE icXOR[1]; // DIB bits for XOR mask
BYTE icAND[1]; // DIB bits for AND mask
} ICONIMAGE, *LPICONIMAGE;
#pragma pack( push )
#pragma pack( 2 )
typedef struct
{
BYTE bWidth; // Width, in pixels, of the image
BYTE bHeight; // Height, in pixels, of the image
BYTE bColorCount; // Number of colors in image (0 if >=8bpp)
BYTE bReserved; // Reserved
WORD wPlanes; // Color Planes
WORD wBitCount; // Bits per pixel
DWORD dwBytesInRes; // how many bytes in this resource?
WORD nID; // the ID
} GRPICONDIRENTRY, *LPGRPICONDIRENTRY;
#pragma pack( pop )
#pragma pack( push )
#pragma pack( 2 )
typedef struct
{
WORD idReserved; // Reserved (must be 0)
WORD idType; // Resource type (1 for icons)
WORD idCount; // How many images?
//GRPICONDIRENTRY idEntries[1]; // The entries for each image
} GRPICONDIR, *LPGRPICONDIR;
#pragma pack( pop )
ребята вы меня удивляете!!!

)
файл то сохраняется, но вот выходит не курсор а непонятно что. как пиктограмма не открывается.
...пробовал скомпоновать полученный курсор с другим проектом, компилятор говорит о старом формате DIB.