I use the .draw function myself. is it the reason that .SetDepth don't make any effect?
I don't know. I'm not familiar with the cSprite members. What you could try is programming it using the normal commands and then translating it to the cSprite members.
If I don't use .draw by myself . which function should I use to show the sprite?
When using the normal commands the sprites are automatically visible and so there isn't a command you need to call each loop to draw the sprites. If you create a sprite but don't use the .draw command is it still drawn each loop? Maybe you only need to call it once?
Actually I think the best thing to do would be to write a working demo using the normal commands and then try to replicate that using the cSprite class. You then atleast have something to compare it to. Sorry I can't be of more help.