I have tried without success (using C#) to change the standard rectangular tabs (for the TabPages) to look like the ones in Messenger - funky curved jobs. However whenever I try to overwrite an existing tab, either by superimposing a bitmap over it, or by manually drawing a new shape with the Graphics methods, the standard rectangular tab outline always shows through. I captured both the DrawItem and Paint events.
I saw a partial solution in Code Project, which used a wrapper DLL around UxThemes.dll, but this involves installing this extra DLL with my product. And I couldn't get it to work anyway!
It seems this is a known problem in .NET. A colleague using C++/MFC had no trouble doing this.
Any suggestions? - please!

Re: TabControl - change the tab shapes and appearances? by hirf-spam-me-here

hirf-spam-me-here
Tue Jun 22 12:16:44 CDT 2004

* "=?Utf-8?B?U2hvbHRvIERvdWdsYXM=?=" <Sholto@discussions.microsoft.com> scripsit:
> I have tried without success (using C#) to change the standard
> rectangular tabs (for the TabPages) to look like the ones in Messenger -
> funky curved jobs. However whenever I try to overwrite an existing tab,
> either by superimposing a bitmap over it, or by manually drawing a new
> shape with the Graphics methods, the standard rectangular tab outline
> always shows through. I captured both the DrawItem and Paint events.

Maybe these samples help:

<URL:http://homepage.ntlworld.com/mdaudi100/>
-> "VB.Net Tips" -> "TabControl"

> I saw a partial solution in Code Project, which used a wrapper DLL
> around UxThemes.dll, but this involves installing this extra DLL with my
> product. And I couldn't get it to work anyway!

"UxTheme.dll" is shipped with Windows XP, and I doubt that it's allowed
to distribute this DLL. In addition, I doubt that it will work with
older versions of Windows.

--
Herfried K. Wagner [MVP]
<URL:http://dotnet.mvps.org/>

Re: TabControl - change the tab shapes and appearances? by SholtoDouglas

SholtoDouglas
Tue Jun 22 22:15:01 CDT 2004

Vielen Dank, Herfried.
In Mick Doherty's site was some sample code, where I found one method that solved all my problems. Well, my TabControl problems. Still got my financial problems!
Here is the answer:
1) Derive a class from TabControl.
2) Set its style to UserPaint:
SetStyle(ControlStyles.UserPaint,true);
This was the magic bullet. SetStyle is a protected method, hence the need to
derive from TabControl.
3) This activates the OnPaint() event, but de-activates OnDrawItem() for some reason. In OnPaint you can draw the tab in whatever shape you like and those pesky rectangle outlines are duly suppressed. Here is a simple sample:-

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;

for (int i = 0; i < TabCount; i++) {
if (!e.ClipRectangle.IntersectsWith(GetTabRect(i)))
continue;
Region regn = m_regn.Clone();
// Move the cloned region down/along so it represents
// the correct TabPage
regn.Translate(0,i * ItemSize.Width);
// Give tab of selected page a different colour
Color backColor = i == SelectedIndex? Color.Red : CyPhoneTabColour;
g.FillRegion(new SolidBrush(backColor),regn);
}
}

Thanks again Herfried. You too Mick.
--
Cheers,
Sholto Douglas
CyTrack Telecommunications
http://www.cytrack.com.au


"Herfried K. Wagner [MVP]" wrote:

> * "=?Utf-8?B?U2hvbHRvIERvdWdsYXM=?=" <Sholto@discussions.microsoft.com> scripsit:
> > I have tried without success (using C#) to change the standard
> > rectangular tabs (for the TabPages) to look like the ones in Messenger -
> > funky curved jobs. However whenever I try to overwrite an existing tab,
> > either by superimposing a bitmap over it, or by manually drawing a new
> > shape with the Graphics methods, the standard rectangular tab outline
> > always shows through. I captured both the DrawItem and Paint events.
>
> Maybe these samples help:
>
> <URL:http://homepage.ntlworld.com/mdaudi100/>
> -> "VB.Net Tips" -> "TabControl"
>
> > I saw a partial solution in Code Project, which used a wrapper DLL
> > around UxThemes.dll, but this involves installing this extra DLL with my
> > product. And I couldn't get it to work anyway!
>
> "UxTheme.dll" is shipped with Windows XP, and I doubt that it's allowed
> to distribute this DLL. In addition, I doubt that it will work with
> older versions of Windows.
>
> --
> Herfried K. Wagner [MVP]
> <URL:http://dotnet.mvps.org/>
>