   Anyone has simple samplecode for a directX cursor available?
  Hi, i'm quite new to directX, could anyone post a sample program here that just displays a directX cursor loaded from for example a bitmap or so? Thanks in advance   
  If this helps any, here is the source on how to load a directx cursor from a HCURSOR, straight from the DXUT source://--------------------------------------------------------------------------------------// Gives the D3D device a cursor with image and hotspot from hCursor.//--------------------------------------------------------------------------------------HRESULT DXUTSetDeviceCursor( IDirect3DDevice9* pd3dDevice, HCURSOR hCursor, bool bAddWatermark ){    HRESULT hr = E_FAIL;    ICONINFO iconinfo;    bool bBWCursor;    LPDIRECT3DSURFACE9 pCursorSurface = NULL;    HDC hdcColor = NULL;    HDC hdcMask = NULL;    HDC hdcScreen = NULL;    BITMAP bm;    DWORD dwWidth;    DWORD dwHeightSrc;    DWORD dwHeightDest;    COLORREF crColor;    COLORREF crMask;    UINT x;    UINT y;    BITMAPINFO bmi;    COLORREF* pcrArrayColor = NULL;    COLORREF* pcrArrayMask = NULL;    DWORD* pBitmap;    HGDIOBJ hgdiobjOld;    ZeroMemory( &iconinfo, sizeof(iconinfo) );    if( !GetIconInfo( hCursor, &iconinfo ) )   goto End;    if (0 == GetObject((HGDIOBJ)iconinfo.hbmMask, sizeof(BITMAP), (LPVOID)&bm))   goto End;    dwWidth = bm.bmWidth;    dwHeightSrc = bm.bmHeight;    if( iconinfo.hbmColor == NULL )    {   bBWCursor = TRUE;   dwHeightDest = dwHeightSrc / 2;    }    else{   bBWCursor = FALSE;   dwHeightDest = dwHeightSrc;    }    // Create a surface for the fullscreen cursor    if( FAILED( hr = pd3dDevice->CreateOffscreenPlainSurface( dwWidth, dwHeightDest,    D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &pCursorSurface, NULL ) ) )    {   goto End;    }    pcrArrayMask = new DWORD[dwWidth * dwHeightSrc];    ZeroMemory(&bmi, sizeof(bmi));    bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);    bmi.bmiHeader.biWidth = dwWidth;    bmi.bmiHeader.biHeight = dwHeightSrc;    bmi.bmiHeader.biPlanes = 1;    bmi.bmiHeader.biBitCount = 32;    bmi.bmiHeader.biCompression = BI_RGB;    hdcScreen = GetDC( NULL );    hdcMask = CreateCompatibleDC( hdcScreen );    if( hdcMask == NULL )    {   hr = E_FAIL;   goto End;    }    hgdiobjOld = SelectObject(hdcMask, iconinfo.hbmMask);    GetDIBits(hdcMask, iconinfo.hbmMask, 0, dwHeightSrc,    pcrArrayMask, &bmi, DIB_RGB_COLORS);    SelectObject(hdcMask, hgdiobjOld);    if (!bBWCursor)    {   pcrArrayColor = new DWORD[dwWidth * dwHeightDest];   hdcColor = CreateCompatibleDC( hdcScreen );   if( hdcColor == NULL )   {  hr = E_FAIL;  goto End;   }   SelectObject(hdcColor, iconinfo.hbmColor);   GetDIBits(hdcColor, iconinfo.hbmColor, 0, dwHeightDest,   pcrArrayColor, &bmi, DIB_RGB_COLORS);    }    // Transfer cursor image into the surface    D3DLOCKED_RECT lr;    pCursorSurface->LockRect( &lr, NULL, 0 );    pBitmap = (DWORD*)lr.pBits;    for( y = 0; y < dwHeightDest; y++ )    {   for( x = 0; x < dwWidth; x++ )   {  if (bBWCursor)  { crColor = pcrArrayMask[dwWidth*(dwHeightDest-1-y) + x]; crMask = pcrArrayMask[dwWidth*(dwHeightSrc-1-y) + x];  }  else  { crColor = pcrArrayColor[dwWidth*(dwHeightDest-1-y) + x]; crMask = pcrArrayMask[dwWidth*(dwHeightDest-1-y) + x];  }  if (crMask == 0) pBitmap[dwWidth*y + x] = 0xff000000 | crColor;  else pBitmap[dwWidth*y + x] = 0x00000000;  // It may be helpful to make the D3D cursor look slightly   // different from the Windows cursor so you can distinguish   // between the two when developing/testing code.  When  // bAddWatermark is TRUE, the following code adds some  // small grey "D3D" characters to the upper-left corner of  // the D3D cursor image.  if( bAddWatermark && x < 12 && y < 5 )  { // 11.. 11.. 11.. .... CCC0 // 1.1. ..1. 1.1. .... A2A0 // 1.1. .1.. 1.1. .... A4A0 // 1.1. ..1. 1.1. .... A2A0 // 11.. 11.. 11.. .... CCC0 const WORD wMask[5] = { 0xccc0, 0xa2a0, 0xa4a0, 0xa2a0, 0xccc0 }; if( wMask[y] & (1 << (15 - x)) ) {pBitmap[dwWidth*y + x] |= 0xff808080; }  }   }    }    pCursorSurface->UnlockRect();    // Set the device cursor    if( FAILED( hr = pd3dDevice->SetCursorProperties( iconinfo.xHotspot,    iconinfo.yHotspot, pCursorSurface ) ) )    {   goto End;    }    hr = S_OK;End:    if( iconinfo.hbmMask != NULL )   DeleteObject( iconinfo.hbmMask );    if( iconinfo.hbmColor != NULL )   DeleteObject( iconinfo.hbmColor );    if( hdcScreen != NULL )   ReleaseDC( NULL, hdcScreen );    if( hdcColor != NULL )   DeleteDC( hdcColor );    if( hdcMask != NULL )   DeleteDC( hdcMask );    SAFE_DELETE_ARRAY( pcrArrayColor );    SAFE_DELETE_ARRAY( pcrArrayMask );    SAFE_RELEASE( pCursorSurface );    return hr;}Hope this helps,exorcist_bob   ;  you can do this:1.load bitmap as texture (your cursor) and hide windows cursor at startShowCursor(false);2. in WM_MOUSEMOVE handle mouse movement and set two global variables for mouse cordinates (ex: POINT g_Mouse;...case WM_MOUSEMOVE:g_Mouse.x = LOWORD (lParam);g_Mouse.y = HIWORD (lParam);break;...3. Use sprite to show your DX cursor.D3DXVECTOR3 vPosition(0,0,0);vPosition.x = (float)g_Mouse.x;vPosition.y = (float)g_Mouse.y;pSprite->Begin(D3DXSPRITE_ALPHABLEND );pSprite->Draw( g_pCursor, 0, 0,&vPosition, 0xffffffff);pSprite->End();