我根据书上,做一个自制风格的List框,其中用到defalt_session,
出现错误:
E:\wangqian\vc\mList\NewListCtrl.cpp(102) : error C2065: 'defalt_session' : undeclared identifier
已经检查过了,是安书上做的。
defalt_session是什么意思?有什么用处啊

解决方案 »

  1.   

    具体代码如下:
    POSITION pos;
    BOOL bSelected=FALSE; if(m_bEditing==TRUE)
    goto defalt_session;
    pos=GetFirstSelectedItemPosition();
    if(pos)
    {
    LVHITTESTINFO testinfo;
    testinfo.pt.x=point.x;
    testinfo.pt.y=point.y;
    testinfo.flags=LVHT_ONITEMLABEL;
    if(SubItemHitTest(&testinfo)<0)
    goto defalt_session;
    m_nItem=testinfo.iItem;
    m_nSubItem=testinfo.iSubItem;
    while(pos)
    if(m_nItem==GetNextSelectedItem(pos))
    {
    bSelected=true;
    break;
    }
    if(bSelected==FALSE)
    goto defalt_session;
    m_bEditing=MyBeginEdit();
    return;
    }
    defalt_session;
    CListCtrl::OnLButtonDown(nFlags, point);
    }BOOL CNewListCtrl::MyBeginEdit()
    {
    CRect rect;
    if(GetSubItemRect(m_nItem,m_nSubItem,LVIR_LABEL,rect)==FALSE)
    return FALSE;
    int style=WS_CHILD|WS_CLIPSIBLINGS|WS_EX_TOOLWINDOW|WS_BORDER;
    if(m_edit.Create(style,rect,this,ID_MYEDIT)==FALSE)
    return FALSE;
    CString txtItem=GetItemText(m_nItem,m_nSubItem);
    m_edit.SetWindowText(txtItem);
    m_edit.SetFocus();
    m_edit.SetSel(0,-1);
    m_edit.ShowWindow(SW_SHOW);
    return true;}void CNewListCtrl::MyEndEdit(BOOL bValidate)
    {
    if(bValidate)
    {
    CString txtItem;
    m_edit.GetWindowText(txtItem);
    SetItemText(m_nItem,m_nSubItem,txtItem);
    } m_edit.DestroyWindow();
    m_bEditing=FALSE;
    }int CMyEdit::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CEdit::OnCreate(lpCreateStruct) == -1)
    return -1;

    LOGFONT logfont;
    logfont.lfHeight=-12;
    logfont.lfWidth=0;
    logfont.lfEscapement=0;
    logfont.lfOrientation=0;
    logfont.lfWeight=400;
    logfont.lfItalic=0;
    logfont.lfUnderline=0;
    logfont.lfStrikeOut=0;
    logfont.lfCharSet=134;
    logfont.lfOutPrecision=0;
    logfont.lfClipPrecision=0;
    logfont.lfQuality=0;
    logfont.lfPitchAndFamily=2;
    strcpy(logfont.lfFaceName,"宋体");
    m_font.DeleteObject();
    if(m_font.CreateFontIndirect(&logfont))
    SetFont(&m_font); return 0;
    }void CMyEdit::OnKillFocus(CWnd* pNewWnd) 
    { CNewListCtrl *parent=(CNewListCtrl*)GetParent();;
    if(parent)
    parent->MyEndEdit(m_bInputValid);;
    m_bInputValid=TRUE;
    CEdit::OnKillFocus(pNewWnd);


    }BOOL CMyEdit::PreTranslateMessage(MSG* pMsg) 
    { if(pMsg->message==WM_KEYDOWN)
    {
    if(pMsg->wParam==13)
    pMsg->message=WM_KILLFOCUS;
    else if(pMsg->wParam==27)
    {
    m_bInputValid=false;
    pMsg->message=WM_KILLFOCUS;
    }
    }
    return CEdit::PreTranslateMessage(pMsg);
    }错误为:
    \\彩色激光\e\wangqian\vc\mList\NewListCtrl.cpp(104) : error C2065: 'defalt_session' : undeclared identifier请指点
      

  2.   

    因为你使用的是goto语句,所以'defalt_session' 应该是表示为你要执行到的某个
    位置,GOTO语句的执行是这样的
    语句A;
    goto defalt_session;
    语句B;
    defalt_session: 语句C
    即程序跳过B直接执行语句C.
      

  3.   

    但是,说没定义是什么意思呢?
    goto defalt_session 有应该失跳转到那呢?
    代码,根据资料所写,不无错误。