由于实际需要,欲将画入内存的图在CListCtrl控件中显示出来,结果是图是在CListCtrl控件中显示了出来,却是黑颜色的一个方块,百思不等其解,无奈之下求助各位。具体代码如下://说明:在MyDlg.h中定义pulic: CImageList* pImageList; m_ListCtrl为CListCtrl控件的对象
// 在Ex1View.h中定义的CMyDlg对象: CMyDlg dlg;
//////////////MyDlg.cpp
CMyDlg::CMyDlg(CWnd* pParent):CDialog(CSymStyleDlg::IDD,pParent)
{
///构建CImageList对象
pImageList=new CImageList;
pImageList->Create(32,32,ILC_COLOR4,5,2);
}
BOOL CMyDlg::OnInitDialog()
{
///设置m_ListCtrl的图像列表
m_ListCtrl.SetImageList(pImageList,LVSIL_NORMAL);
///用pImageList中的第一个位图在CListCtrl控件的第一个位置显示
m_ListCtrl.InsertItem(0,NULL,0);
}
///////////////Ex1View.cpp
void CEx1View::OnButton1()
{ CClientDC dc(this);
CDC memdc;
CBitmap bit;
///创建内存和位图对象
memdc.CreateCompatibleDC(&dc);
bit.CreateCompatibleBitmap(&dc,500,500);
memdc.SelectObject(&bit);
///在内存中画图
memdc.FillSolidRect(0,0,500,500,RGB(255,0,0));
memdc.MoveTo(0,0);
memdc.LineTo(500,500);
///得到内存中的位图对象指针,将其添加到CMyDlg对象dlg公共变量pImageList中;
CBitmap* pMemBit=memdc.GetCurrentBitmap();
dlg.pImageList->Add(pMemBit,RGB(0,0,0));
dlg.DoModal();
bit.DeleteObject();
memdc.DeleteDC();
}
定义CBitmap* hOldbmphOldbmp=memdc.SelectObject(&bit);
......
CBitmap* pMemBit=memdc.SelectObject(hOldbmp);