15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


How to position toolbars side by side

Ari Villaca -- villaca@correionet.com.br
Wednesday, March 19, 1997

Environment: VC++ 4.00, Win 95

I have 4 toolbars currently positioned at the top of a child window. By
default the toolbars are stacked. Because this is a waste of valuable spa=
ce
I want to position the toolbars side by side. ( MS Developer Studio
presents its toolbars side by side ).

Does someone know how to do this in the CMyChildWnd::OnCreate override
where the toolbars are created and their positions calculated?

Thanks in advance,

Ari
-------------------------------------------------------------------------=
---

 Ari de Moura Villa=E7a
 					e-Mail:	villaca@correionet.com.br

 Av. Moraes Sales, 987 Apto.113		fone:	+55 19 232-2440
 13010-001 - Campinas, SP		fax:	+55 19 232-2440
 Brasil
-------------------------------------------------------------------------=
---

Tip of the month (03/97): In Brazil, we speak Portuguese.



Howard Rubin -- hrubin@nyx.net
Saturday, March 22, 1997

[Mini-digest: 4 responses]

See CMainFrame::DockControlBarLeftOf() in the DOCKTOOL
sample - \MSDEV\SAMPLES\MFC\GENERAL\DOCKTOOL.
Howard Rubin.

>>
Environment: VC++ 4.00, Win 95

I have 4 toolbars currently positioned at the top of a child window. By
default the toolbars are stacked. Because this is a waste of valuable spa=
ce
I want to position the toolbars side by side. ( MS Developer Studio
presents its toolbars side by side ).

Does someone know how to do this in the CMyChildWnd::OnCreate override
where the toolbars are created and their positions calculated?

Thanks in advance,

Ari
<<
-----From: Manolis Papadopoulos 

Hello,

You can look in the CD for the example CTRLBARS located in the =
\MSDEV\SAMPLES\MFC\GENERAL subdirectory. It is just what you want.
You could get the same answer and saved some of your time, if you =
searched a little bit in the help (When I was looking for the same =
thing, I did not searched for it as well, but I learned...).

Manolis Papadopoulos

-----From: "Kenneth A. Argo" 

Try this:

Sample call:
	DockControlBar(&m_StandardToolBar);
	DockControlBarLeftOf(&m_ImageToolBar, &m_StandardToolBar);
	DockControlBarLeftOf(&m_PatientToolBar, &m_ImageToolBar);
	DockControlBarLeftOf(&m_FolderToolBar, &m_PatientToolBar);



Functions:

void CMgrMainFrame::DockControlBarLeftOf(CToolBar *pcToolBar,CToolBar =
*pcToolBarLeftOf)
{
	// Get MFC to adjust the dimensions of all docked ToolBars so that =
GetWindowRect will be accurate
	RecalcLayout();

	CRect cRect;

	pcToolBarLeftOf->GetWindowRect(&cRect);
	cRect.OffsetRect(1,0);

	DWORD dwBarStyle =3D pcToolBarLeftOf->GetBarStyle();

	UINT uiAlignment =3D 0;

	uiAlignment =3D (dwBarStyle & CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : =
uiAlignment;
	uiAlignment =3D (dwBarStyle & CBRS_ALIGN_BOTTOM && uiAlignment =3D=3D =
0) ? AFX_IDW_DOCKBAR_BOTTOM : uiAlignment;
	uiAlignment =3D (dwBarStyle & CBRS_ALIGN_LEFT && uiAlignment =3D=3D 0) =
? AFX_IDW_DOCKBAR_LEFT : uiAlignment;
	uiAlignment =3D (dwBarStyle & CBRS_ALIGN_RIGHT && uiAlignment =3D=3D 0) =
? AFX_IDW_DOCKBAR_RIGHT : uiAlignment;

	// When we take the default parameters on rect, DockControlBar will =
dock
	// each Toolbar on a seperate line.  By calculating a rectangle, we in =
effect
	// are simulating a Toolbar being dragged to that location and docked.
	DockControlBar(pcToolBar, uiAlignment, &cRect);
}

Ken


-----Original Message-----
From:	Ari Villaca [SMTP:villaca@correionet.com.br]
Sent:	Wednesday, March 19, 1997 7:57 AM
To:	MFC-L
Subject:	How to position toolbars side by side

Environment: VC++ 4.00, Win 95

I have 4 toolbars currently positioned at the top of a child window. By
default the toolbars are stacked. Because this is a waste of valuable =
space
I want to position the toolbars side by side. ( MS Developer Studio
presents its toolbars side by side ).

Does someone know how to do this in the CMyChildWnd::OnCreate override
where the toolbars are created and their positions calculated?

Thanks in advance,

Ari
-------------------------------------------------------------------------=
---

 Ari de Moura Villa=E7a
 					e-Mail:	villaca@correionet.com.br

 Av. Moraes Sales, 987 Apto.113		fone:	+55 19 232-2440
 13010-001 - Campinas, SP		fax:	+55 19 232-2440
 Brasil
-------------------------------------------------------------------------=
---

Tip of the month (03/97): In Brazil, we speak Portuguese.

-----From: Alan Kleymeyer 

Forgot where I found this sample function:

void CMainFrame::DockControlBarLeftOf(CToolBar* Bar,CToolBar* LeftOf)
{
	CRect rect;
	DWORD dw;
	UINT n;

	// get MFC to adjust the dimensions of all docked ToolBars
	// so that GetWindowRect will be accurate
	RecalcLayout();
	LeftOf->GetWindowRect(&rect);
	rect.OffsetRect(1,0);
	dw=3DLeftOf->GetBarStyle();
	n =3D 0;
	n =3D (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
	n =3D (dw&CBRS_ALIGN_BOTTOM && n=3D=3D0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
	n =3D (dw&CBRS_ALIGN_LEFT && n=3D=3D0) ? AFX_IDW_DOCKBAR_LEFT : n;
	n =3D (dw&CBRS_ALIGN_RIGHT && n=3D=3D0) ? AFX_IDW_DOCKBAR_RIGHT : n;

	// When we take the default parameters on rect, DockControlBar will
dock
	// each Toolbar on a seperate line.  By calculating a rectangle, we in
effect
	// are simulating a Toolbar being dragged to that location and docked.
	DockControlBar(Bar,n,&rect);
}



>----------
>From: 	Ari Villaca[SMTP:villaca@correionet.com.br]
>Sent: 	Wednesday, March 19, 1997 6:57 AM
>To: 	MFC-L
>Subject: 	How to position toolbars side by side
>
>Environment: VC++ 4.00, Win 95
>
>I have 4 toolbars currently positioned at the top of a child window. By
>default the toolbars are stacked. Because this is a waste of valuable =
space
>I want to position the toolbars side by side. ( MS Developer Studio
>presents its toolbars side by side ).
>
>Does someone know how to do this in the CMyChildWnd::OnCreate override
>where the toolbars are created and their positions calculated?
>
>Thanks in advance,
>
>Ari
>------------------------------------------------------------------------=
----
>
> Ari de Moura Villa=E7a
> 					e-Mail:	villaca@correionet.com.br
>
> Av. Moraes Sales, 987 Apto.113		fone:	+55 19 232-2440
> 13010-001 - Campinas, SP		fax:	+55 19 232-2440
> Brasil
>------------------------------------------------------------------------=
----
>
>Tip of the month (03/97): In Brazil, we speak Portuguese.
>



Dave Kolb -- sasdxk@wnt.sas.com
Monday, March 24, 1997


I use the below technique for my MDI application but it does not work
for a DocObject. The toolbars still stack in the Office Binder or IE3
when showing my DocObject. Anyone got something similar to the below
code to work in a DocObject application? I posted the details along with
some other DocObject problems a while back but never got any responses.

Thanks,

Dave Kolb
SAS Institute

>-----Original Message-----
>From:	hrubin@nyx.net [SMTP:hrubin@nyx.net]
>Sent:	Saturday, March 22, 1997 11:24 PM
>To:	mfc-l@netcom.com; villaca@correionet.com.br
>Subject:	Re: How to position toolbars side by side
>
>[Mini-digest: 4 responses]
>
>See CMainFrame::DockControlBarLeftOf() in the DOCKTOOL
>sample - \MSDEV\SAMPLES\MFC\GENERAL\DOCKTOOL.
>Howard Rubin.
>
>>>
>Environment: VC++ 4.00, Win 95
>
>I have 4 toolbars currently positioned at the top of a child window. By
>default the toolbars are stacked. Because this is a waste of valuable spa=
>ce
>I want to position the toolbars side by side. ( MS Developer Studio
>presents its toolbars side by side ).
>
>Does someone know how to do this in the CMyChildWnd::OnCreate override
>where the toolbars are created and their positions calculated?
>
>Thanks in advance,
>
>Ari
><<
>-----From: Manolis Papadopoulos 
>
>Hello,
>
>You can look in the CD for the example CTRLBARS located in the =
>\MSDEV\SAMPLES\MFC\GENERAL subdirectory. It is just what you want.
>You could get the same answer and saved some of your time, if you =
>searched a little bit in the help (When I was looking for the same =
>thing, I did not searched for it as well, but I learned...).
>
>Manolis Papadopoulos
>
>-----From: "Kenneth A. Argo" 
>
>Try this:
>
>Sample call:
>	DockControlBar(&m_StandardToolBar);
>	DockControlBarLeftOf(&m_ImageToolBar, &m_StandardToolBar);
>	DockControlBarLeftOf(&m_PatientToolBar, &m_ImageToolBar);
>	DockControlBarLeftOf(&m_FolderToolBar, &m_PatientToolBar);
>
>
>
>Functions:
>
>void CMgrMainFrame::DockControlBarLeftOf(CToolBar *pcToolBar,CToolBar =
>*pcToolBarLeftOf)
>{
>	// Get MFC to adjust the dimensions of all docked ToolBars so that =
>GetWindowRect will be accurate
>	RecalcLayout();
>
>	CRect cRect;
>
>	pcToolBarLeftOf->GetWindowRect(&cRect);
>	cRect.OffsetRect(1,0);
>
>	DWORD dwBarStyle =3D pcToolBarLeftOf->GetBarStyle();
>
>	UINT uiAlignment =3D 0;
>
>	uiAlignment =3D (dwBarStyle & CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : =
>uiAlignment;
>	uiAlignment =3D (dwBarStyle & CBRS_ALIGN_BOTTOM && uiAlignment =3D=3D =
>0) ? AFX_IDW_DOCKBAR_BOTTOM : uiAlignment;
>	uiAlignment =3D (dwBarStyle & CBRS_ALIGN_LEFT && uiAlignment =3D=3D 0) =
>? AFX_IDW_DOCKBAR_LEFT : uiAlignment;
>	uiAlignment =3D (dwBarStyle & CBRS_ALIGN_RIGHT && uiAlignment =3D=3D 0) =
>? AFX_IDW_DOCKBAR_RIGHT : uiAlignment;
>
>	// When we take the default parameters on rect, DockControlBar will =
>dock
>	// each Toolbar on a seperate line.  By calculating a rectangle, we in =
>effect
>	// are simulating a Toolbar being dragged to that location and docked.
>	DockControlBar(pcToolBar, uiAlignment, &cRect);
>}
>
>Ken
>
>
>-----Original Message-----
>From:	Ari Villaca [SMTP:villaca@correionet.com.br]
>Sent:	Wednesday, March 19, 1997 7:57 AM
>To:	MFC-L
>Subject:	How to position toolbars side by side
>
>Environment: VC++ 4.00, Win 95
>
>I have 4 toolbars currently positioned at the top of a child window. By
>default the toolbars are stacked. Because this is a waste of valuable =
>space
>I want to position the toolbars side by side. ( MS Developer Studio
>presents its toolbars side by side ).
>
>Does someone know how to do this in the CMyChildWnd::OnCreate override
>where the toolbars are created and their positions calculated?
>
>Thanks in advance,
>
>Ari
>-------------------------------------------------------------------------=
>---
>
> Ari de Moura Villa=E7a
> 					e-Mail:	villaca@correionet.com.br
>
> Av. Moraes Sales, 987 Apto.113		fone:	+55 19 232-2440
> 13010-001 - Campinas, SP		fax:	+55 19 232-2440
> Brasil
>-------------------------------------------------------------------------=
>---
>
>Tip of the month (03/97): In Brazil, we speak Portuguese.
>
>-----From: Alan Kleymeyer 
>
>Forgot where I found this sample function:
>
>void CMainFrame::DockControlBarLeftOf(CToolBar* Bar,CToolBar* LeftOf)
>{
>	CRect rect;
>	DWORD dw;
>	UINT n;
>
>	// get MFC to adjust the dimensions of all docked ToolBars
>	// so that GetWindowRect will be accurate
>	RecalcLayout();
>	LeftOf->GetWindowRect(&rect);
>	rect.OffsetRect(1,0);
>	dw=3DLeftOf->GetBarStyle();
>	n =3D 0;
>	n =3D (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
>	n =3D (dw&CBRS_ALIGN_BOTTOM && n=3D=3D0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
>	n =3D (dw&CBRS_ALIGN_LEFT && n=3D=3D0) ? AFX_IDW_DOCKBAR_LEFT : n;
>	n =3D (dw&CBRS_ALIGN_RIGHT && n=3D=3D0) ? AFX_IDW_DOCKBAR_RIGHT : n;
>
>	// When we take the default parameters on rect, DockControlBar will
>dock
>	// each Toolbar on a seperate line.  By calculating a rectangle, we in
>effect
>	// are simulating a Toolbar being dragged to that location and docked.
>	DockControlBar(Bar,n,&rect);
>}
>
>
>
>>----------
>>From: 	Ari Villaca[SMTP:villaca@correionet.com.br]
>>Sent: 	Wednesday, March 19, 1997 6:57 AM
>>To: 	MFC-L
>>Subject: 	How to position toolbars side by side
>>
>>Environment: VC++ 4.00, Win 95
>>
>>I have 4 toolbars currently positioned at the top of a child window. By
>>default the toolbars are stacked. Because this is a waste of valuable =
>space
>>I want to position the toolbars side by side. ( MS Developer Studio
>>presents its toolbars side by side ).
>>
>>Does someone know how to do this in the CMyChildWnd::OnCreate override
>>where the toolbars are created and their positions calculated?
>>
>>Thanks in advance,
>>
>>Ari
>>------------------------------------------------------------------------=
>----
>>
>> Ari de Moura Villa=E7a
>> 					e-Mail:	villaca@correionet.com.br
>>
>> Av. Moraes Sales, 987 Apto.113		fone:	+55 19 232-2440
>> 13010-001 - Campinas, SP		fax:	+55 19 232-2440
>> Brasil
>>------------------------------------------------------------------------=
>----
>>
>>Tip of the month (03/97): In Brazil, we speak Portuguese.
>>




Become an MFC-L member | Вернуться в корень Архива |