I found how to use custom cursor.
Documentation for DarkGDK very poor and there are no full information about dbChangeMouse(). But if we look into function, we found next code:
004CCCB0 mov eax,dword ptr [esp+4]
004CCCB4 test eax,eax
004CCCB6 jne ChangeMouse+14h (4CCCC4h)
004CCCB8 mov ecx,dword ptr [g_hUseArrow (60D800h)]
004CCCBE mov dword ptr [g_ActiveCursor (60D808h)],ecx
004CCCC4 cmp eax,1
004CCCC7 jne ChangeMouse+25h (4CCCD5h)
004CCCC9 mov ecx,dword ptr [g_hUseHourglass (60D804h)]
004CCCCF mov dword ptr [g_ActiveCursor (60D808h)],ecx
004CCCD5 lea ecx,[eax-2]
004CCCD8 cmp ecx,1Dh
004CCCDB ja ChangeMouse+39h (4CCCE9h)
004CCCDD mov eax,dword ptr g_Glob+398h (60D730h)[eax*4]
004CCCE4 mov dword ptr [g_ActiveCursor (60D808h)],eax
004CCCE9 push dword ptr [g_ActiveCursor (60D808h)]
004CCCEF call dword ptr [__imp__SetCursor@4 (0BFFC360h)]
I have no idea what is g_Glob+398h. But address 60D808h should be static and next code allow to use custom cursor.
HCURSOR hCur = LoadCursorFromFile("MyCur.ANI");
int *active_cursor = (int *)0x0060D808;
*active_cursor = (int)hCur;
SetCursor(hCur);
At least it's works for me