void CD3DImageRendering::ChangeTexturue(HBITMAP hBitmap)
{ BITMAP bmp;
GetObject(hBitmap, sizeof(BITMAP), &bmp); DWORD  uFHSize = sizeof(BITMAPFILEHEADER);   // 文件头的字节
DWORD  uIHSize = sizeof(BITMAPINFOHEADER);   // 文件信息字节
DWORD  uBmpSize = uFHSize + uIHSize + (bmp.bmWidthBytes) * (bmp.bmHeight);// 整个BMP文件字节 // 文件信息
BITMAPINFOHEADER bi;
ZeroMemory(&bi,sizeof(BITMAPINFOHEADER));
bi.biSize                    =  uIHSize;  
bi.biWidth                   =  bmp.bmWidth;  
bi.biHeight                  =  bmp.bmHeight;  
bi.biPlanes                  =  1;  
bi.biBitCount                =  bmp.bmBitsPixel;  
bi.biCompression             =  BI_RGB;  
bi.biSizeImage               =  0;  
bi.biXPelsPerMeter           =  0;  
bi.biYPelsPerMeter           =  0;  
bi.biClrImportant            =  0;  
bi.biClrUsed                 =  0;  // 文件头
BITMAPFILEHEADER bmfHdr;
ZeroMemory(&bmfHdr,sizeof(BITMAPFILEHEADER));
bmfHdr.bfType  =  0x4D42;  //  "BM"    
bmfHdr.bfSize  =  uBmpSize;    
bmfHdr.bfReserved1  =  0;    
bmfHdr.bfReserved2  =  0;    
bmfHdr.bfOffBits  = uFHSize  +  uIHSize;  BYTE *buffer = new BYTE[uBmpSize];
memcpy( buffer, &bmfHdr, uFHSize);
memcpy( &buffer[uFHSize], &bi, uIHSize);
memcpy( &buffer[uFHSize + uIHSize],bmp.bmBits, (uBmpSize - uFHSize - uIHSize));         // 这里创建是正确的
         //LPDIRECT3DTEXTURE9  pTexture = NULL;
         //D3DXCreateTextureFromFileInMemory(g_pd3dDevice, buffer, uBmpSize, &pTexture);         
         ///  下面动态改变纹理数据 ,不正确,请问是什么原因?
D3DSURFACE_DESC Desc;
         m_pTextrue->GetLevelDesc(0, &Desc); D3DLOCKED_RECT lockedRect;
if(SUCCEEDED(m_pTextrue->LockRect(0, &lockedRect, NULL, D3DLOCK_DISCARD )))
{
DWORD*   imageData   =   (DWORD*)lockedRect.pBits;  
for(int i=0;i<Desc.Height;i++)
{
for (int j=0;j<Desc.Width;j++)
{                              int  index   =   i *  (lockedRect.Pitch /4) +  j;
                              imageData[index]   =   buffer[index]; }
}      m_pTextrue->UnlockRect(0);
}}