CCSprite::setTexture() has a bug with Texture rect

I have a Sprite and I want to change Texture.
old Texture is small
new Texture is big

When I change to new Texture, new Texture has the small Texture Rect…
Why?

so I try out setTextureRect() but it was failed….

this~~>setTexture;
CCRect rect;
switch
{
case 0:
rect = CCRectMake;
break;
case 1:
rect = CCRectMake;
break;
case 2:
rect = CCRectMake;
break;
case 3:
rect = CCRectMake;
break;
default:
break;
}
this~~>setTextureRect(rect);

It is not work why?
please help me…