我想在窗口模式下,在主表面上关联调色板,我在网上查到CreatePalette的第一个参数dwFlags有这样一个值DDPCAPS_PRIMARYSURFACE:这个调色板将被关联到主表面上。但我的MSDN里却没有这个值,而且我在程序里这样写:
m_lpDD->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE, 
pPaletteEntry, &lpDDPal, NULL);
就会创建失败,返回值是DDERR_INVALIDPARAMS,去掉就可以创建成功,但关联不到主表面上

解决方案 »

  1.   

    lpDDPal是输出的,这个函数执行成功,lpDDPal就创建成功了
      

  2.   

    在窗口模式下,你的ddraw使用的颜色位数跟操作系统正在使用的颜色位数一致并且不可更改,除非你使用全屏模式
      

  3.   

    但是32位占的内存大,难道DIRECTX在窗口模式下,主表面就不能使用调色板?
      

  4.   

    额,发现问题写错了
    m_lpDD-> CreatePalette(DDPCAPS_8BIT   ¦   DDPCAPS_ALLOW256   ¦   DDPCAPS_INITIALIZE,   
    pPaletteEntry,   &lpDDPal,   NULL); 
    这样可以创建成功,加上这个参数DDPCAPS_PRIMARYSURFACE就出错了
    m_lpDD-> CreatePalette(
    DDPCAPS_8BIT ¦ DDPCAPS_ALLOW256 ¦ DDPCAPS_INITIALIZE | DDPCAPS_PRIMARYSURFACE,   
    pPaletteEntry,   &lpDDPal,   NULL);
    这样就会创建失败
      

  5.   

    DDPCAPS_PRIMARYSURFACE//改变调色板后立即影响显示,不是所有的显卡都支持的