块语句里定义的问题,error C2360l错误

void CDBDlg::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{

LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
CString str;
switch(lplvcd->nmcd.dwDrawStage)
{

        int iRow;  
        case CDDS_PREPAINT:
        *pResult = CDRF_NOTIFYITEMDRAW;
        break;
    case CDDS_ITEMPREPAINT:
        *pResult = CDRF_DODEFAULT;
        iRow= lplvcd->nmcd.dwItemSpec;
        str=m_Grid.GetItemText( iRow, 0 );
        if(str=="TT")
        {
           // lplvcd->clrTextBk = RGB(255, 255, 255);
            lplvcd->clrText = RGB(255, 0, 0);
            *pResult = CDRF_NEWFONT;
        }
        break;
    default:
        *pResult = CDRF_DODEFAULT;
}

}

以上代码是没有问题的,但是我把CString str;这个定义放在switch语句大括号里面就会报error C2360: initialization of 'str' is skipped by 'case' label错误,但是为什么int iRow在switch大括号定义里却不会被块语句封杀?

CString str;
->
CString str="";

大侠,能说的更详细一点吗?