我要问的问题是,用mfc如何在一个拥有LBS_OWNERDRAWFIXED属性的列表框中绘制一个按钮。我现在帖出我自己的在虚函数DrawItem中的代码(我怀疑是那里有问题),请高手指点。
CDC dc; HICON hicon;
CBrush *b=new CBrush();
but=new CButton();
CBrush brush;
brush.CreateSolidBrush(GetSysColor(COLOR_3DFACE));
dc.Attach(lpDrawItemStruct->hDC);
UINT index=lpDrawItemStruct->itemID;
CRect rect=lpDrawItemStruct->rcItem;
   int state=lpDrawItemStruct->itemState;
if( lpDrawItemStruct->itemState&ODS_SELECTED)
         b->CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT));
else
         b->CreateSolidBrush(RGB(255,255,255));
       dc.FillRect(&rect,b);

      delete b;
               if(state&ODS_FOCUS)
dc.DrawFocusRect(&rect); if(index!=-1)
{
if(index==0)
{
but->Create(TEXT("确定"),WS_CHILD|WS_VISIBLE,rect,this,2);
  }
               if(index==1)
{


   hicon=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDR_MYLISTTYPE));
dc.DrawIcon(rect.right/2-16,rect.top+2,hicon);
DeleteObject(hicon);

}
          }
dc.Detach();
}
程序显示出来是这样的,一开始列表框是会有一个按钮,和一个图标的,但是当我将焦点移动到图标时(开始时,焦点在按钮),按钮就不见了,而且焦点还不能上回去按钮那里。还有一个问题是,如果我在程序中写上删除按钮,或者是将按钮的句柄分离,程序在运行的时候就报错,唉,我都不知道为什么,可能基础知识太差了,所以希望有人帮帮我!(but按钮变量是我自制列表框类中的一个数据成员)。