CListCtrl中Item在Dialog第二次打开时不能显示文件图标
主程序有一个菜单项,点击后new了一个dialog的实例,然后doModal。第一次点击这个菜单的时候,dialog上面的控件CListCtrl可以正常显示文件图标,但是关闭dialog重新点击这个菜单打开一个新的dialog实例后, CListCtrl就不能显示文件图标了,请问这是什么原因呢?
1. 点击菜单
void CMainFrame::OnMenuconnect()
{
// TODO: Add your command handler code here
CFTPSOCKETDlg ftpsocketdlg;
ftpsocketdlg.DoModal();
}
2.
BOOL CFTPSOCKETDlg::OnInitDialog()
{
...
m_hImageList = (HIMAGELIST)SHGetFileInfo("C:\\",0,&m_shFi,sizeof(m_shFi),
SHGFI_SYSICONINDEX|SHGFI_SMALLICON);
//将文件图象列表存入m_ctImageList
//m_ctImageList.m_hImageList = m_hImageList;
m_ctImageList.Attach (m_hImageList);
//设定客户端文件显示列表框的栏标题
SetFileColumns(&m_ctrlLocalFile);
SetServerFileColumns(&m_ctrlServerFile);
SetImageList(&m_ctrlLocalFile,&m_ctrlLocal);
SetImageList(&m_ctrlServerFile,NULL);
...
}
void CFTPSOCKETDlg::OnCancel()
{
// TODO: Add extra cleanup here
DestroyIcon(m_shFi.hIcon);
m_ctImageList.Detach ();
CDialog::OnOK();
}