mfc中获取工具栏指针(一般点击事件中去获取,并且工具栏不只一个)

kun20055293 2010-06-21 11:49:42
这里,我想在MFC中一般的菜单点击事件OnClick()中实现对应的工具栏的隐藏与显示,这里,我有多个工具栏,资源ID为:IDR_TOOLBAR_ONE,IDR_TOOLBAR_TWO,IDR_TOOLBAR_THREE等。我想显示其中的一些工具栏,而隐藏另外一些工具栏,这里,我怎么实现获取对应工具栏的指针。
注意,这里我用CToolBar * pToolBar=(CToolBar *)AfxGetMainWnd()->GetDescendantWindow(IDR_TOOLBAR_ONE);方式去实现,能通过编译,但是实际执行的时候会出BUG,我该怎么去获得对应的某一个工具栏的指针来实现工具栏的隐藏与现实。
或者,直接在OnClick()事件中实现对应的工具栏隐藏与显示的方法
...全文
130 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyelun 2010-06-22
  • 打赏
  • 举报
回复
你的工具栏不是都有对应的对象吗?在MainFrame里面
默认的是protected成员,你给它改成public的
然后在你想调用的地方,通过AfxGetMainWnd()来获得MainFrame对象,然后通过它来获取你想要的工具栏对象
kun20055293 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
把ToolBar对象定义为框架类的public成员,直接访问对象。
[/Quote]
楼上的大哥能说清楚点吗?我也时出学MFC,呵呵.
kun20055293 2010-06-22
  • 打赏
  • 举报
回复
问题已解决,开始是我搞笨了,谢谢几位高手,都说正确了.
kun20055293 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liyelun 的回复:]
你的工具栏不是都有对应的对象吗?在MainFrame里面
默认的是protected成员,你给它改成public的
然后在你想调用的地方,通过AfxGetMainWnd()来获得MainFrame对象,然后通过它来获取你想要的工具栏对象
[/Quote]
开始我时按照你说的这种方法进行,语句为:CToolBar * pToolBar=(CToolBar *)AfxGetMainWnd()->GetDescendantWindow(CMainFrame::m_wndToolBar);
但是会出现以下错误: 对非静态成员"CMainFrame::m_wndToolBar"的非法引用
我这里时因为实现该段代码OnClick()函数所在的.cpp文件不是MainFrm.cpp,而是我的另外一个VSEVngineiew.cpp文件中,因为,我的OnClick()事件主体所完成的任务主要在VSEVngineiew.cpp中完成,而不是在MainFrm.cpp中完成.
cnzdgs 2010-06-22
  • 打赏
  • 举报
回复
把ToolBar对象定义为框架类的public成员,直接访问对象。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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