关于MFC更改工具栏图标的问题?

如此美丽的你 2013-05-30 02:29:40
我想用自己下载的图标更换窗口工具栏自动生成的图标修,运行后发现工具栏是白的。求解??

改代码如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CImageList m_Imagelist;

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

m_Imagelist.Create(32,32,ILC_COLOR24 |ILC_MASK,5,8); //创建图像列表
m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON5));

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}

m_wndToolBar.GetToolBarCtrl().SetImageList(&m_Imagelist);
m_wndToolBar.SetSizes(CSize(40,40),CSize(32,32));


if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}

// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);

return 0;


...全文
336 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
昨夜无风 2013-05-30
  • 打赏
  • 举报
回复
你对应的按钮还没响应消息吧?
「已注销」 2013-05-30
  • 打赏
  • 举报
回复
用这个函数设置下工具栏 :SetButtonInfo(int nIndex, UINT nID, UINT nStyle, int iImage )
如此美丽的你 2013-05-30
  • 打赏
  • 举报
回复
VisualEleven 哥哥快帮我看看!!
如此美丽的你 2013-05-30
  • 打赏
  • 举报
回复
我想自己添加一个工具栏,结果又出现了同样问题,怎么回事呢?



int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{

m_ImageList.Create(32,32,ILC_COLOR32|ILC_MASK,3,5);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |
CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |
CBRS_SIZE_DYNAMIC)||!m_wndToolBar.LoadToolBar(IDR_MYTOOLBAR))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}

m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
m_wndToolBar.SetSizes(CSize(40,40),CSize(32,32));

// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 1;
}
Eleven 2013-05-30
  • 打赏
  • 举报
回复
引用 2 楼 neolyao 的回复:
[quote=引用 1 楼 VisualEleven 的回复:] CImageList m_Imagelist; 定义为类的成员变量,或者在前面加static
哇果然好了。可以稍微解释一下吗?[/quote] 作用域的问题,变量出了作用域就被销毁了
如此美丽的你 2013-05-30
  • 打赏
  • 举报
回复
引用 1 楼 VisualEleven 的回复:
CImageList m_Imagelist; 定义为类的成员变量,或者在前面加static
哇果然好了。可以稍微解释一下吗?
Eleven 2013-05-30
  • 打赏
  • 举报
回复
CImageList m_Imagelist; 定义为类的成员变量,或者在前面加static

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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