typedef struct tagLOGPALETTE { 
  WORD         palVersion; 
  WORD         palNumEntries; 
  PALETTEENTRY palPalEntry[1]; 
} LOGPALETTE; 上面是调色板结构,第一个参数说是版本号,第二个是图像中使用的颜色数,第三个是每种颜色的定义.我的疑问就在第三个参数,它应该是一个数组,我理解大小是palNumEntries个,也就是图像中有多少颜色就要有多少个定义,可是这里却把数组元素定义为1,我百思不得其解,希望高人指教.
拜谢!

解决方案 »

  1.   

    自己结题!使用调色板我们首先要声名一个CPalette对象,并且调用CreatePalette成员函数创建一个调色板,这个成员函数的参数是一个LOGPALETTE结构,这个结构的形式如下:
    typedef struct tagLOGPALETTE { 
      WORD         palVersion;                 //使用0x300
      WORD         palNumEntries;            //调色板颜色数目
      PALETTEENTRY palPalEntry[1];       //调色板的每个颜色信息
    } LOGPALETTE; 可以看到在这个结构中只包含了一个配置调色板颜色的信息,这是因为MFC并不知道需要多少种颜色,但是我们必须自己扩展这个结构以容纳所有的颜色,方法如下:
    struct
     {
      LOGPALETTE lp;
      PALETTEENTRY pe[2];
     }lpl;
     LOGPALETTE *plp = (LOGPALETTE *) &lpl;
    这样就能够容纳3种颜色的信息了