子类化LISTBOX   显示的ITEMS 一切正常, 但是加上OWNERDRAW使用自画例程之后void YCListBox::OnDrawItem (LPDRAWITEMSTRUCT lpdis)
{
.....
.....
.....
cvBack = ::SetBkColor(lpdis->hDC, ::GetSysColor((lpdis->itemState & ODS_SELECTED)
? COLOR_HIGHLIGHT : COLOR_WINDOW));  this->GetText (lpdis->itemID, szBuffer);
::DrawText(lpdis->hDC, szBuffer, -1, &lpdis->rcItem, DT_LEFT | DT_SINGLELINE);
.....
}int YCListBox::GetText (int nIndex, LPTSTR lpszBuffer) 
{
return ::SendMessage (m_hWnd, LB_GETTEXT, (WPARAM) nIndex, (LPARAM) lpszBuffer) ;
}GetText得到的数据总是乱码 后来仔细研究一下发现 其实是LB_GETTEXT返回了一个2级指针 奇怪吧? 为什么会这样? 请高手解答。以上是SDK编程 非MFC

解决方案 »

  1.   

    LB_GETTEXT return address of buffer .Not 2级指针 !
      

  2.   

    你没明白我的意思SendMessage (m_hWnd, LB_GETTEXT, (WPARAM) nIndex, (LPARAM) lpszBuffer) 之后 在memory中输入lpszBuffer地址察看其内容发现只有4个字节AC B0 42 00
    仔细看1下 这就是个内存地址42B0AC 于是跳到这个地址上一看,我要的数据就在那里了。真是奇怪了 LISTBOX怎么会返回一个二级指针? 谁知道怎么回事啊?
      

  3.   

    呵呵 问题解决了~~ 原来在其他地方操作LISTBOX STYLE时不小心把LBS_HASSTRINGS 去掉了