void CViewDIBView::OnChangepal() 
{
         CViewDIBDoc* pDoc=GetDocument();
         BITMAPINFO* bmi=(BITMAPINFO*)GlobalLock(pDoc->m_pDib->m_hDib);
if(bmi==NULL) AfxMessageBox("bmi is null");
for(int i=0;i<256;i++)
{
bmi->bmiColors[i].rgbRed=0;
bmi->bmiColors[i].rgbGreen=0;
bmi->bmiColors[i].rgbBlue=0;
bmi->bmiColors[i].rgbReserved=PC_RESERVED;
}
GlobalUnlock(pDoc->m_pDib->m_hDib);
CPalette* palette=pDoc->m_pDib->GetPalette();
CClientDC pDC(this);
CPalette* oldpalette=pDC.SelectPalette(palette,true);
GetDocument()->UpdateAllViews(NULL);
pDC.SelectPalette(oldpalette,true);
}
程序想实现改变调色板从而改变图像显示,CViewDIBDoc中有public的cdib类指针m_pDib,cdib类有m_hDib句柄,指向图像,我把调色板都写成黑,图像也应显示黑,可是运行结果仍然是原来的图片,请高人指点。