MFC CImageList 控件问题

guoyiming1109 2014-01-09 05:04:11
想问一下,为什么加上了那个Add函数,Toolbar控件就无法显示了呢?
工程类型是Dialog Based。
不使用Add函数,还可以看到图标,用了Add函数 图标就看不到了。。
相关代码如下:
if(!m_nChangeBar.CreateEx(this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)
|| !m_nChangeBar.LoadToolBar(IDR_TOOLBAR_CHANGE))
{
TRACE0("Failed to Create Dialog Toolbar\n");
EndDialog(IDCANCEL);
}

//工具条image list
CImageList m_TBIL;
CBitmap bmp;
m_TBIL.Create(16, 16, ILC_COLOR32|ILC_MASK, 15, 13);

m_TBIL.Add( AfxGetApp()->LoadIcon(IDI_ICON_ZOOMIN) );
m_TBIL.Add( AfxGetApp()->LoadIcon(IDI_ICON_ZOOMOUT));
m_TBIL.Add( AfxGetApp()->LoadIcon(IDI_ICON_ZOOM) );
m_TBIL.Add( AfxGetApp()->LoadIcon(IDI_ICON_UNDO) );
m_TBIL.Add( AfxGetApp()->LoadIcon(IDI_ICON_REDO) );
m_TBIL.Add( AfxGetApp()->LoadIcon(IDI_ICON_SETUP));

m_nChangeBar.GetToolBarCtrl().SetImageList(&m_TBIL);
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoyiming1109 2014-01-10
  • 打赏
  • 举报
回复
引用 4 楼 SXJIAKE 的回复:
你这个 CImageList 对象是临时的,出了这个函数就不存在了。必须设置为全局的或者 CToolBar 派生类对象的成员变量。
多谢了哈,的确是这样的。。学艺不精啊
「已注销」 2014-01-09
  • 打赏
  • 举报
回复
你这个 CImageList 对象是临时的,出了这个函数就不存在了。必须设置为全局的或者 CToolBar 派生类对象的成员变量。
guoyiming1109 2014-01-09
  • 打赏
  • 举报
回复
引用 1 楼 SXJIAKE 的回复:
LoadIcon 返回的是大图标,试试:
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOMIN,  IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOMOUT, IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOM,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_UNDO,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_REDO,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_SETUP,   IMAGE_ICON, 16, 16, LR_SHARED)); 
有什么好的解决办法吗? Dialog界面搞Toolbar真心不好弄 哎
guoyiming1109 2014-01-09
  • 打赏
  • 举报
回复
引用 1 楼 SXJIAKE 的回复:
LoadIcon 返回的是大图标,试试:
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOMIN,  IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOMOUT, IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOM,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_UNDO,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_REDO,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_SETUP,   IMAGE_ICON, 16, 16, LR_SHARED)); 
不行啊,
m_nChangeBar.GetToolBarCtrl().SetImageList(&m_TBIL);
这段代码的问题,刚刚是我说的不对,这段代码去掉就可以了 不过却不是我想要的图标
「已注销」 2014-01-09
  • 打赏
  • 举报
回复
LoadIcon 返回的是大图标,试试:
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOMIN,  IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOMOUT, IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_ZOOM,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_UNDO,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_REDO,    IMAGE_ICON, 16, 16, LR_SHARED));  
m_TBIL.Add((HICON)::LoadImage(AfxGetInstanceHandle(), (LPCTSTR)IDI_ICON_SETUP,   IMAGE_ICON, 16, 16, LR_SHARED)); 

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧