Quote: "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.
Quote: "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.