(第四版中文版)[十三]工具栏和状态栏

本文介绍如何在MFC的SDI和MDI应用程序中通过视图类获取框架的工具栏、菜单、状态栏等组件。对于SDI应用,在视图类中可以通过CWnd::GetParentFrame()获取主框架;而在MDI应用中,则需要通过AfxGetApp()获取应用程序对象,并通过该对象的m_pMainWnd成员得到主框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在SDI中可以使用 CWnd::GetParentFrame() 得到主框架 。如果希望视图类既能用于SDI也能用于MDI,必须通过应用程序对象来获得主框架窗口中。全局函数 AfxGetApp() 返回的是一个指向应用程序对象的指针,借助这个指针可以得到 CWinAPP类的 m_pMainWnd 数据成员。在MDI应用程序中,AppWinzard 自动生成了对 m_pMainWnd 进行设置。m_pMainWnd 一旦被设置,就可以按如下方式在视图类中得到框架的工具栏:

CMainFrame * pFrame = ( CMainFrame* )AfxGetApp() ->m_pMainWnd;

CToolBar* pToolBar = &pFrame->m_wndToolBar ;

必须把 m_pMainWnd 从 CFrameWnd* 转换到 CMainFrame* ,因为 m_wndToolBar 是派生类的成员。还必须使 m_wndToolBar 为公有成员或使我们的类成为 CMainFrame 的友元类。

还可以用同样方法得到菜单对象、状态栏对象和对话框对象。

在SDI程序中,当视图的 OnCreate () 被调用时,m_pMainWnd 还没有被设置。因此如果希望在 OnCreate() 中能够得到主框架窗口,必须使用 GetParentFrame() 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值