调色板编程见到这样两个结构:
typedef struct tagPALETTEENTRY { // pe
BYTE peRed;
BYTE peGreen;
BYTE peBlue;
BYTE peFlags;
} PALETTEENTRY;
typedef struct tagLOGPALETTE { // lgpl
WORD palVersion;
WORD palNumEntries;
PALETTEENTRY palPalEntry[1]; //???????????
} LOGPALETTE;
有一段代码是这样写的:
LOGPALETTE *pLogPal=(LOGPALETTE*)new char[sizeof(LOGPALETTE)+N*sizeof(PALETTEENTRY)];
if(pLogPal != NULL)
{
pLogPal->palVersion=0x300;
pLogPal->palNumEntries=N; for(int i=0; i <N; i++)
{
pLogPal->palPalEntry[i].peRed=Red;
...
}
} 定义数组PALETTEENTRY palPalEntry[1];,为什么不是palPalEntry[palNumEntries]。
当i不等于1。则palPalEntry[i]没有定义,后面是如何给palPalEntry[i]赋值的呢?
typedef struct tagPALETTEENTRY { // pe
BYTE peRed;
BYTE peGreen;
BYTE peBlue;
BYTE peFlags;
} PALETTEENTRY;
typedef struct tagLOGPALETTE { // lgpl
WORD palVersion;
WORD palNumEntries;
PALETTEENTRY palPalEntry[1]; //???????????
} LOGPALETTE;
有一段代码是这样写的:
LOGPALETTE *pLogPal=(LOGPALETTE*)new char[sizeof(LOGPALETTE)+N*sizeof(PALETTEENTRY)];
if(pLogPal != NULL)
{
pLogPal->palVersion=0x300;
pLogPal->palNumEntries=N; for(int i=0; i <N; i++)
{
pLogPal->palPalEntry[i].peRed=Red;
...
}
} 定义数组PALETTEENTRY palPalEntry[1];,为什么不是palPalEntry[palNumEntries]。
当i不等于1。则palPalEntry[i]没有定义,后面是如何给palPalEntry[i]赋值的呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货