我用GetCurSel()取组合框当前选项的索引,编译没错,为什么运行出错?俺是初学的,大虾别笑,请指教,谢谢!

解决方案 »

  1.   

    把你的代码贴出来,应该不会有这种错误的。一下是msdn上面的:
    CComboBox::GetCurSel
    int GetCurSel( ) const;Return ValueThe zero-based index of the currently selected item in the list box of a combo box, or CB_ERR if no item is selected.ResCall this member function to determine which item in the combo box is selected. GetCurSel returns an index into the list.Example// The pointer to my combo box.
    extern CComboBox* pmyComboBox;// Select the next item of the currently selected item 
    // in the combo box.
    int nIndex = pmyComboBox->GetCurSel();
    int nCount = pmyComboBox->GetCount();
    if ((nIndex != LB_ERR) && (nCount > 1))
    {
       if (++nIndex < nCount)
          pmyComboBox->SetCurSel(nIndex);
       else
          pmyComboBox->SetCurSel(0);
    }
      

  2.   

    int kk;
    kk = Dlg.m_FilteType.GetCurSel(); 
    CString info;
    info.Format("kk = %f",kk);
    AfxMessageBox(info);
    就是这点代码,请指教
      

  3.   

    info.Format("kk = %d",kk);
      

  4.   

    这种问题,可以加断点调试,以确定那句话出错,容易查出问题所在。kk是int型,格式化串用%d
      

  5.   

    Format 函数错了。c int or wint_t When used with printf functions, specifies a single-byte character; when used with wprintf functions, specifies a wide character. 
    C int or wint_t When used with printf functions, specifies a wide character; when used with wprintf functions, specifies a single-byte character. 
    d int Signed decimal integer. 
    i int  Signed decimal integer. 
    o int  Unsigned octal integer. 
    u int  Unsigned decimal integer. 
    x int Unsigned hexadecimal integer, using “abcdef.” 
    X int Unsigned hexadecimal integer, using “ABCDEF.” 
    e  double Signed value having the form [ – ]d.dddd e [sign]ddd where d is a single decimal digit, dddd is one or more decimal digits, ddd is exactly three decimal digits, and sign is + or –. 
    E double Identical to the e format except that E rather than e introduces the exponent. 
    f double Signed value having the form [ – ]dddd.dddd, where dddd is one or more decimal digits. The number of digits before the decimal point depends on the magnitude of the number, and the number of digits after the decimal point depends on the requested precision. 
    g double Signed value printed in f or e format, whichever is more compact for the given value and precision. The e format is used only when the exponent of the value is less than –4 or greater than or equal to the precision argument. Trailing zeros are truncated, and the decimal point appears only if one or more digits follow it. 
    G double Identical to the g format, except that E, rather than e, introduces the exponent (where appropriate). 
    n  Pointer to integer  Number of characters successfully written so far to the stream or buffer; this value is stored in the integer whose address is given as the argument. 
    p Pointer to void Prints the address pointed to by the argument in the form xxxx:yyyy where xxxx is the segment and yyyy is the offset, and the digits x and y are uppercase hexadecimal digits. 
    s String  When used with printf functions, specifies a single-byte–character string; when used with wprintf functions, specifies a wide-character string. Characters are printed up to the first null character or until the precision value is reached. 
    S String When used with printf functions, specifies a wide-character string; when used with wprintf functions, specifies a single-byte–character string. Characters are printed up to the first null character or until the precision value is reached 
      

  6.   

    楼上诸位可能没有明白我得意思,我加显示的代码为了看看kk的值是什么,结果根本看不到,程序就完蛋了,难道  kk = Dlg.m_FilteType.GetCurSel(); 不是取得组合框当前选项的索引吗?
      

  7.   

    你要先取得组合框的指针,然后调GetCurSel()CCombobox *m_combobox;
    m_combobox=(CCombobox*)GetDlgItem(ID_XXX);
    int index = m_combobox->GetCurSel();