Peter
Peter,
What's common between which are hidden? Do you perhaps just need to
alter the tab order so that the controls are after the tab control?
Fundamentally it's not a good idea to overlap controls. If I
understand what you're doing correctly, in your usage the tab control
is just something to fire an event to your dialog so you can switch
the contents of the other controls and it's a child of your dialog the
same as the other controls on the dialog.
Dave
Yes, you understand right what I want to do.
I want to use CTabCtrl selection only to fire event to set dialog's controls
values by CTabCtrl selected item.
Common property of hidden controls is that they are inside of CTabCtrl in
resource editor.
These controls are placed on dialog surface and CTabCtrl is also on dialog
surface.
I tried to alter tab order and make CTabCtrl with the lowest order number
but no success.
I think that problem can be resolved by setting CTabCtrl transparent
background,
thus CTabCtrl cannot hide controls if system draws it like last control. But
I was not successful with setting transparent background.
But maybe problem can be resolved by forcing to draw CTabCtrl like first
control when dialog is redrawed, I dont know how to do it.
Or any other tip ?
Peter
What do you mean by "inside"? All controls (incl the tab control) are
children of the dialog, so I don't understand what you mean.
Dave
Planty of examples on codeproject.com
AliR.
"Peter" <Pe...@discussions.microsoft.com> wrote in message
news:0E3B65C2-013B-4C37...@microsoft.com...
Peter
Peter
I don't know why you don't want to make the controls children of the tab.
but it is easy you can simply call SetParent on the child controls to change
their parent to the tab control!
BOOL CMyDialogWithTab::OnInitDialog()
{
CDialog::OnInitDialog();
m_Child1.SetParent(&m_TabCtrl);
m_Child2.SetParent(&m_TabCtrl);
...
}
or if you are putting all your controls in a dialog box and then putting it
in the tab:
BOOL CMyDialogWithTab::OnInitDialog()
{
CDialog::OnInitDialog();
m_ChildDlg.Create(CMyChildDlg::IDD,&m_TabCtrl);
...
}
AliR.
"Peter" <Pe...@discussions.microsoft.com> wrote in message
news:08922225-B6C7-4154...@microsoft.com...
AliR.
"Peter" <Pe...@discussions.microsoft.com> wrote in message
news:896A990A-502C-4538...@microsoft.com...
As you're finding, that won't work. Just resize the tab control so
that it doesn't overlap the other controls.
Dave
Horrible newbie method !
Read the Petzold to learn api bases and how a Listbox works.
What's a newbie method?
AliR.
Still I am thinking about setting transparent background and I appear
that there is available GDI function ExcludeClipRect()
Why cannot be this function used to create CTabCtrl with excluded large
rectangle inside CTabCtrl ?
AliR.
"Peter" <Pe...@discussions.microsoft.com> wrote in message
news:0AD5A7A0-FB85-4235...@microsoft.com...
added OnEraseBackground() for CMyTabCtrl derived from CTabCtrl,
and inside it commented:
// CTabCtrl::OnEraseBackground().
Added small code to the same function:
GetClientRect(&r);
r.top += 0;
r.bottom = r.top + 20;
COLORREF clrBack=GetSysColor(COLOR_3DFACE);
CBrush brBackground;
brBackground.CreateSolidBrush(clrBack);
pDC->FillRect(&r,&brBackground);
which erases only top part of CMyTabCtrl where are displayed tabs.
That will simply not earse the background under the tab control. But the
paint routine will simply paint over it anyway!
By the way where did you get 20 from?
And what does r.Top += 0; do?
In order to find the location of the tabs of the tab control you can use
AdjustRect
CRect r;
GetClientRect(&r);
CRect r2 = r;
AdjustRect(FALSE,&r2);
r.bottom = r2.top;
COLORREF clrBack=GetSysColor(COLOR_3DFACE);
CBrush brBackground;
brBackground.CreateSolidBrush(clrBack);
pDC->FillRect(&r,&brBackground);
AliR.
"Peter" <Pe...@discussions.microsoft.com> wrote in message
news:F10FE0B9-1650-45DB...@microsoft.com...
r.Top += 0;
does of course nothing, I only experiment with different values instead of 0.
Anyway,
thanks for your effort.
I know that my solution is not clean solution, but for business reasons
acceptable this time for me.
No worries AliR, your transparent articles are very useful and are the only
way I've found to achieve transparency as well. The fact is, Win32 does not
support overlapping child controls with transparency natively. WPF is the
first serious scheme MS has come up with to do that.
-- David
Good luck
AliR.
"Peter" <Pe...@discussions.microsoft.com> wrote in message
news:843C8C86-E9BA-4A91...@microsoft.com...
AliR.
"David Ching" <d...@remove-this.dcsoft.com> wrote in message
news:47F83162-36DF-4561...@microsoft.com...