SetTextColor (gdi32)
Last changed: -108.171.131.170

.
Summary

C# Signature:

[DllImport("gdi32.dll")]
static extern uint SetTextColor(IntPtr hdc, int crColor);

VB.NET Signature

<DllImport("gdi32.dll", SetLastError:=True)> _
Public Shared Function SetTextColor(hdc As IntPtr, crColor as Integer) as UInteger
End Function

VB Signature

Public Declare Function SetTextColor Lib "gdi32.dll" _
         (ByVal prmlngHDc As Long, _
          ByVal prmlngRGB As Long) As Long

User-Defined Types:

None.

Notes:

The below example is need because of an error in the managed version.

Tips & Tricks:

Please add some!

Sample Code:

Example usage; ownerdraw on tabcontrol (tab headers)

[DllImport("user32.dll", CharSet=CharSet.Unicode)]
static extern int DrawText(IntPtr hdc, string lpStr, int nCount,ref Rect lpRect, int wFormat);

[DllImport("gdi32.dll")]
static extern int SetTextColor(IntPtr hdc, int crColor);
[DllImport("gdi32.dll")]
static extern int SetBkColor(IntPtr hdc, int crColor);

private const int DT_CENTER = 0x1;
private const int DT_VCENTER = 0x4;
private const int DT_SINGLELINE = 0x20;

private struct Rect
{
    public int Left,Top,Right,Bottom;
    public Rect(Rectangle r)
    {
        this.Left = r.Left;
        this.Top = r.Top;
        this.Bottom = r.Bottom;
        this.Right = r.Right;
    }
}

private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
    e.DrawBackground();
    TabPage tabPage = this.TabPages[e.Index] as TabPage;
    using (Brush backcolorBrush = new SolidBrush(Color.Pink))
    {
        e.Graphics.FillRectangle(backcolorBrush, e.Bounds);
        Rect bounds = new Rect(e.Bounds);
        IntPtr hdc = e.Graphics.GetHdc();

        SetTextColor(hdc, ColorTranslator.ToWin32(Color.SteelBlue));
        SetBkColor(hdc, ColorTranslator.ToWin32(Color.LemonChiffon));

        int flags = DT_CENTER | DT_VCENTER | DT_SINGLELINE;
        DrawText(hdc, tabPage.Text, tabPage.Text.Length, ref bounds, flags);
        e.Graphics.ReleaseHdc(hdc);
    }
    e.DrawFocusRectangle();
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation