3

私はコンボボックスを埋めています:

    while((pHPSet = pHPTable->GetNext()) != NULL)
    {       
      CString str = pHPSet->GetName();
          // I am normally using str but to proove that this is 
          // not the problem I am using "a"
      m_comboBaseHP.AddString(_T("a"));
    }

今、私はコンボボックスを読み込もうとしています:

if(m_comboBaseHP.GetCount() > 0)
{
    CString csHPName = _T("");
    m_comboBaseHP.GetLBText(0, csHPName);
    // This is the ms way but ReleaseBuffer causes a crash
    //CString str = _T("");
    //int n = m_comboBaseHP.GetLBTextLen( 0 );
    //m_comboBaseHP.GetLBText( 0, str.GetBuffer(n) );
    //str.ReleaseBuffer();

    // Do whatever with csHPName
}

問題は、csHPNameがデバッガーにいくつかの中国の記号を表示することです。これはメモリのゴミだと思います。これは同じ方法で発生します。これは描画前に発生します。ポストは同じ問題を描きます。これは、デバッグとリリースで発生します。私は実際にポインタを操作していないので、これがどのように発生するのかわかりません。

4

1 に答える 1

6

どうやら、コンボボックスのプロパティHasStringsをTrueに設定する必要があります。

于 2013-02-01T11:33:08.917 に答える