ToolbaRS
Zach_Ho@smtplink.syscom.com.tw
Monday, March 17, 1997
David,
I don't know why, but we usually create and load our toolbar in each
view's OnCreate() function, like this:
m_wndToolBar.Create(AfxGetMainWnd());
m_wndToolBar.LoadToolBar(IDR_TOOLBAR_XXX);
so if you switch among views, the toolbar of the lost focus view will
be hidden.
But if you create your toolbars in the InitInstance() function,
depending on the way you create, those toolbars may all be the
children of the mainframe, and they will all be shown regardless of
which view is active.
Hope this help.
Zach 03.17.1997
______________________________ Reply Separator _________________________________
Subject: ToolbaRS
Author: owner-mfc-l@majordomo.netcom.com at smtplink-syscom
Date: 1997/3/16 05:18 AM
Environment: VC++ 4.2b, Win 95
I have an app that has several different views of the same document =
class, and I would like a different toolbar with each. I would rather =
create the toolbar and attach it in the CView::OnInitialUpdate() =
function, but this doesn't seem to work. If I create them in the =
InitInstance(), it works fine, but every view then shows every toolbar. =
I tried to use ShowWindow(SW_HIDE) to hide the ones I didn't want, but =
that just leaves a huge gap in the toolbar area. None of the views can =
be displayed at the same time, so it doesn't make sense to have extras. =
I didn't see any examples dealing with this, so anybody have any =
suggestions, please let me know...
Thanks!
David
bshamsian@ccvhs.vhsla.com
Wednesday, March 19, 1997
[Mini-digest: 2 responses]
Environment: VC++ 4.1b, Win NT 4.0
David,
In our application we also have multiple views from the same document.
We needed the buttons on the main toolbar to change depending on which
view the user is in. Here is how we did it.
1) Create one main tool bar in the OnCreate of our CMainFrame
class. Store the handle to the toolbar in the CMainFrame
class. Lets call this m_wndToolBar. Load the default toolbar
using the m_wndToolBar.LoadToolBar(IDR_TOOLBAR_DEFAULT) function.
2) Override the OnActivateView of every view which needs a
different toolbar. In the OnActivateView perform the following
in order to load a new set of buttons and command ids into the
main toolbar:
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd() ;
if (pMainFrame == NULL) return ;
pMainFrame->m_wndToolBar.LoadToolBar(IDR_TOOLBAR_XXXX) ;
IDR_TOOLBAR_XXXX is the id for the toolbar you want to associate with
this view.
Thus you basically create a main toolbar once and just reload a new
set if buttons and command id's into it everytime the view is changed.
Hope this helps
Ben
______________________________ Reply Separator _________________________________
Subject: Re: ToolbaRS
Author: mfc-l@netcom.com at vhsunix
Date: 3/19/97 11:45 AM
David,
I don't know why, but we usually create and load our toolbar in each
view's OnCreate() function, like this:
m_wndToolBar.Create(AfxGetMainWnd());
m_wndToolBar.LoadToolBar(IDR_TOOLBAR_XXX);
so if you switch among views, the toolbar of the lost focus view will
be hidden.
But if you create your toolbars in the InitInstance() function,
depending on the way you create, those toolbars may all be the
children of the mainframe, and they will all be shown regardless of
which view is active.
Hope this help.
Zach 03.17.1997
______________________________ Reply Separator _________________________________
Subject: ToolbaRS
Author: owner-mfc-l@majordomo.netcom.com at smtplink-syscom
Date: 1997/3/16 05:18 AM
Environment: VC++ 4.2b, Win 95
I have an app that has several different views of the same document =
class, and I would like a different toolbar with each. I would rather =
create the toolbar and attach it in the CView::OnInitialUpdate() =
function, but this doesn't seem to work. If I create them in the =
InitInstance(), it works fine, but every view then shows every toolbar. =
I tried to use ShowWindow(SW_HIDE) to hide the ones I didn't want, but =
that just leaves a huge gap in the toolbar area. None of the views can =
be displayed at the same time, so it doesn't make sense to have extras. =
I didn't see any examples dealing with this, so anybody have any =
suggestions, please let me know...
Thanks!
David
-----From: jtalkar@optika.com (Jeremiah Talkar)
Creating the toolbars in the Cview::OnCreate() show help you achieve what
you want to do. In any case, if you still have trouble getting it to
work, you actually should use CWnd::ShowControlBar() in order to
correctly show or hide any CcontrolBar derived class.
Jeremiah
-----Original Message-----
From: David Little
Sent: Wednesday, March 12, 1997 9:10 PM
To: 'MFC Question'
Subject: ToolbaRS
Environment: VC++ 4.2b, Win 95
I have an app that has several different views of the same document =
class, and I would like a different toolbar with each. I would rather =
create the toolbar and attach it in the CView::OnInitialUpdate() =
function, but this doesn't seem to work. If I create them in the =
InitInstance(), it works fine, but every view then shows every toolbar.
=
I tried to use ShowWindow(SW_HIDE) to hide the ones I didn't want, but =
that just leaves a huge gap in the toolbar area. None of the views can =
be displayed at the same time, so it doesn't make sense to have extras. =
I didn't see any examples dealing with this, so anybody have any =
suggestions, please let me know...
Thanks!
David
Become an MFC-L member
| Вернуться в корень Архива
|