DrawFrameControl (user32)
Last changed: -5.202.136.217

.
Summary

C# Signature:

[DllImport("user32.dll")]

public static extern bool DrawFrameControl(IntPtr hdc,ref RECT lprc, DFC_Type_flags uType, DFC_State_flags uState);

User-Defined Types:

    [Flags()]
    public enum DFC_Type_flags : uint
    {
        DFC_CAPTION = 1,
        DFC_MENU = 2,
        DFC_SCROLL = 3,
        DFC_BUTTON = 4,
        DFC_POPUPMENU = 5
    }
    [Flags()]
    public enum DFC_State_flags : uint
    {
        DFCS_CAPTIONCLOSE = 0x0000,
        DFCS_CAPTIONMIN = 0x0001,
        DFCS_CAPTIONMAX = 0x0002,
        DFCS_CAPTIONRESTORE = 0x0003,
        DFCS_CAPTIONHELP = 0x0004,
        //
        DFCS_BUTTONCHECK = 0x0000,
        DFCS_BUTTONRADIOIMAGE = 0x0001,
        DFCS_BUTTONRADIOMASK = 0x0002,
        DFCS_BUTTONRADIO = 0x0004,
        DFCS_BUTTON3STATE = 0x0008,
        DFCS_BUTTONPUSH = 0x0010,
        //
        DFCS_MENUARROW = 0x0000,
        DFCS_MENUCHECK = 0x0001,
        DFCS_MENUBULLET = 0x0002,
        DFCS_MENUARROWRIGHT = 0x0004,
        //
        DFCS_SCROLLUP = 0x0000,
        DFCS_SCROLLDOWN = 0x0001,
        DFCS_SCROLLLEFT = 0x0002,
        DFCS_SCROLLRIGHT = 0x0003,
        DFCS_SCROLLCOMBOBOX = 0x0005,
        DFCS_SCROLLSIZEGRIP = 0x0008,
        DFCS_SCROLLSIZEGRIPRIGHT = 0x0010,
        //
        DFCS_INACTIVE = 0x0100,
        DFCS_PUSHED = 0x0200,
        DFCS_CHECKED = 0x0400,
        DFCS_TRANSPARENT = 0x0800,
        DFCS_HOT = 0x1000,
        DFCS_ADJUSTRECT = 0x2000,
        DFCS_FLAT = 0x4000,
        DFCS_MONO = 0x8000
    }

Notes:

Constants

Tips & Tricks:

Please add some!

Sample Code:

// Note: Buttons use DFCS_PUSHED, but scrollbar arrowbuttons use DFCS_FLAT when pressed. -- n.j.r.

DrawFrameControl(hdc, ref rc, (uint)DFC.DFC_SCROLL, (uint)(DFCS.DFCS_FLAT | DFCS.DFCS_SCROLLLEFT));

Alternative Managed API:

Do you know one? Please contribute it!

Documentation