比如用这段代码在WINDOWS2008上运行,把shell32.dll里的图标写入到一个文件中. CImageList imagelist2;
LPSTREAM lpStreamWrite;
INT nIcouCount = (INT)::ExtractIcon(_Module.m_hInst, TEXT("shell32.dll"), -1);
imagelist2.Create(48, 48, ILC_COLOR32|ILC_MASK, 200, 1);
::SHCreateStreamOnFile(TEXT("d:\\icon.dat"), STGM_CREATE|STGM_WRITE, &lpStreamWrite);
for(int i=0; i<nIcouCount; i++)
{
imagelist2.AddIcon(::ExtractIcon(_Module.m_hInst, TEXT("shell32.dll"), i));
}
imagelist2.Write(lpStreamWrite);然后把刚才生成的文件复制到在XP,2003上用这段代码读取刚才生成的文件.并把图标显示到LISTVIEW控件上.
竟然读取不到icon.dat里的图标.现在确定icon.dat这个文件是没有问题的,同样用下面这段代码在2008系统上运行是正常的.刚一朋友发现这个问题,我自己也试下了,
的确是如此.百思不得其解,不知道是怎么回事. CImageList imagelist;
CListViewCtrl lv = (CListViewCtrl)GetDlgItem(IDC_LIST1);
LPSTREAM lpStream;
::SHCreateStreamOnFile(TEXT("d:\\icon.dat"), STGM_READ, &lpStream);
imagelist.CreateFromStream(lpStream);
lv.SetImageList(imagelist.m_hImageList, LVSIL_NORMAL);
for (int i=0; i<imagelist.GetImageCount(); i++)
{
lv.InsertItem(i, TEXT("123"), i);
}
LPSTREAM lpStreamWrite;
INT nIcouCount = (INT)::ExtractIcon(_Module.m_hInst, TEXT("shell32.dll"), -1);
imagelist2.Create(48, 48, ILC_COLOR32|ILC_MASK, 200, 1);
::SHCreateStreamOnFile(TEXT("d:\\icon.dat"), STGM_CREATE|STGM_WRITE, &lpStreamWrite);
for(int i=0; i<nIcouCount; i++)
{
imagelist2.AddIcon(::ExtractIcon(_Module.m_hInst, TEXT("shell32.dll"), i));
}
imagelist2.Write(lpStreamWrite);然后把刚才生成的文件复制到在XP,2003上用这段代码读取刚才生成的文件.并把图标显示到LISTVIEW控件上.
竟然读取不到icon.dat里的图标.现在确定icon.dat这个文件是没有问题的,同样用下面这段代码在2008系统上运行是正常的.刚一朋友发现这个问题,我自己也试下了,
的确是如此.百思不得其解,不知道是怎么回事. CImageList imagelist;
CListViewCtrl lv = (CListViewCtrl)GetDlgItem(IDC_LIST1);
LPSTREAM lpStream;
::SHCreateStreamOnFile(TEXT("d:\\icon.dat"), STGM_READ, &lpStream);
imagelist.CreateFromStream(lpStream);
lv.SetImageList(imagelist.m_hImageList, LVSIL_NORMAL);
for (int i=0; i<imagelist.GetImageCount(); i++)
{
lv.InsertItem(i, TEXT("123"), i);
}
解决方案 »
- 域名解析通信不上!
- 散分讨论,不要光顶,至少说上一句!题目:3G时代的到来是手机应用软件发展的助推器吗?
- 很奇怪的问题,为什么UInt64 tmp1 = (10*1024*1024*1024); 结果是 0 !!!!
- 在英文系统中,怎么显示中文?!(据说Unicode可以,可是弄了半天就是不行)
- 分割条可否自绘??
- 串口的问题!请大家看看我这个程序框架应该怎么设计?
- 在ATL中除了创建自己的窗口接收消息以外,还有什么方法可以接收消息
- 用什么工具可以查看一个ocx(com)控件提供哪些方法。在线
- 求助:wave语音文件的A/D,D/A转换过程?
- 绝对给分,谢谢各位大侠帮我解决这个很简单的问题罗!:(
- 求高手解答opengl画12面体的问题。
- 开启限速导致接收到的UDP包被截短!!??
SHCreateStreamOnFile
关键是imagelist控件是无效的.
是不是太大了,用小的(24)试试
imagelist2.Create(48, 48, ILC_COLOR24|ILC_MASK, 200, 1);
试试就OK