event OwnerDrawStart (Part as PartEnum, hDC as Long, ByRef DefaultPainting as Boolean)
Starts painting the owner draw part.

TypeDescription
Part as PartEnum A PartEnum expression that indicates the part being painted
hDC as Long A long expression that indicates the handle to the painting device context ( HDC )
DefaultPainting as Boolean (By Reference) A Boolen expression that indicates whether the default painting should be performed or not. If the DefaultPainting parameter is True, the control paints the part as default, else the part is not painted by the control so the user should draw the entire part.
The OwnerDrawStart event is fired when a part requires to be painted. The OwnerDrawStart event is fired only for owner draw parts. Use the OwnerDrawPart property to specify which part is owner draw and which part is not. You can use the OwnerDrawStart event to avoid painting any part using the DefaultPainting parameter. The control fires the  OwnerDrawEnd event when painting the part is done. Use the OwnerDrawStart event to perform painting part before default implementation is called. For instance, if the owner part pains a transparent or lucent skin, the OwnerDrawStart event lets you paint the part before putting the default skin. The rectangle that should be painted in the device context can be retrieved using the GetClipBox API function.  The VisiblePart or VisibleParts property specifies the part being visible or hidden. For instance, the VisiblePart(exLeftB1Part or exLeftB2Part) = True adds two new buttons left/up to the control.

Syntax for OwnerDrawStart event, /NET version, on:

private void OwnerDrawStart(object sender,exontrol.EXSCROLLBARLib.PartEnum Part,int hDC,ref bool DefaultPainting)
{
}

Private Sub OwnerDrawStart(ByVal sender As System.Object,ByVal Part As exontrol.EXSCROLLBARLib.PartEnum,ByVal hDC As Integer,ByRef DefaultPainting As Boolean) Handles OwnerDrawStart
End Sub

Syntax for OwnerDrawStart event, /COM version, on:

private void OwnerDrawStart(object sender, AxEXSCROLLBARLib._IScrollBarEvents_OwnerDrawStartEvent e)
{
}

void OnOwnerDrawStart(long Part,long hDC,BOOL FAR* DefaultPainting)
{
}

void __fastcall OwnerDrawStart(TObject *Sender,Exscrollbarlib_tlb::PartEnum Part,long hDC,VARIANT_BOOL * DefaultPainting)
{
}

procedure OwnerDrawStart(ASender: TObject; Part : PartEnum;hDC : Integer;var DefaultPainting : WordBool);
begin
end;

procedure OwnerDrawStart(sender: System.Object; e: AxEXSCROLLBARLib._IScrollBarEvents_OwnerDrawStartEvent);
begin
end;

begin event OwnerDrawStart(long Part,long hDC,boolean DefaultPainting)
end event OwnerDrawStart

Private Sub OwnerDrawStart(ByVal sender As System.Object, ByVal e As AxEXSCROLLBARLib._IScrollBarEvents_OwnerDrawStartEvent) Handles OwnerDrawStart
End Sub

Private Sub OwnerDrawStart(ByVal Part As EXSCROLLBARLibCtl.PartEnum,ByVal hDC As Long,DefaultPainting As Boolean)
End Sub

Private Sub OwnerDrawStart(ByVal Part As Long,ByVal hDC As Long,DefaultPainting As Boolean)
End Sub

LPARAMETERS Part,hDC,DefaultPainting

PROCEDURE OnOwnerDrawStart(oScrollBar,Part,hDC,DefaultPainting)
RETURN

Syntax for OwnerDrawStart event, /COM version (others), on:

<SCRIPT EVENT="OwnerDrawStart(Part,hDC,DefaultPainting)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OwnerDrawStart(Part,hDC,DefaultPainting)
End Function
</SCRIPT>

Procedure OnComOwnerDrawStart OLEPartEnum llPart Integer llhDC Boolean llDefaultPainting
	Forward Send OnComOwnerDrawStart llPart llhDC llDefaultPainting
End_Procedure

METHOD OCX_OwnerDrawStart(Part,hDC,DefaultPainting) CLASS MainDialog
RETURN NIL

void onEvent_OwnerDrawStart(int _Part,int _hDC,COMVariant /*bool*/ _DefaultPainting)
{
}

function OwnerDrawStart as v (Part as OLE::Exontrol.ScrollBar.1::PartEnum,hDC as N,DefaultPainting as L)
end function

function nativeObject_OwnerDrawStart(Part,hDC,DefaultPainting)
return

For instance, the following VB sample draws the lower part in red, and the upper part in green ( as in the screen shot ) :

With ScrollBar1
    .OwnerDrawPart(exLowerBackPart Or exUpperBackPart) = True
End With
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Declare Function GetClipBox Lib "gdi32" (ByVal hdc As Long, lpRect As RECT) As Long
Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private Sub ScrollBar1_OwnerDrawEnd(ByVal Part As EXSCROLLBARLibCtl.PartEnum, ByVal hdc As Long)
    Dim r As RECT, h As Long
    GetClipBox hdc, r
    r.Left = r.Left + 4
    r.Right = r.Right - 4
    If Part = exLowerBackPart Then
        h = CreateSolidBrush(RGB(255, 0, 0))
        FillRect hdc, r, h
        DeleteObject (h)
    Else
        If Part = exUpperBackPart Then
            h = CreateSolidBrush(RGB(0, 255, 0))
            FillRect hdc, r, h
            DeleteObject (h)
        End If
    End If
End Sub

The following C++ sample draws the lower part in red, and the upper part in green ( as in the screen shot ) :

m_scrollbar.SetOwnerDrawPart( 128 /*exUpperBackPart*/,  TRUE );
m_scrollbar.SetOwnerDrawPart( 512 /*exLowerBackPart*/,  TRUE );
void OnOwnerDrawEndScrollbar1(long Part, long hDC) 
{
	HDC h = (HDC)hDC;
	RECT rtPart = {0}; GetClipBox( h, &rtPart );
	InflateRect( &rtPart, -4, 0 );
	switch ( Part )
	{
		case 128: /*exUpperBackPart*/
		{
			HBRUSH hB = CreateSolidBrush( RGB(0,255,0) );
			FillRect( h, &rtPart, hB );
			DeleteObject( hB );
			break;
		}
		case 512: /*exLowerBackPart*/
		{
			HBRUSH hB = CreateSolidBrush( RGB(255,0,0) );
			FillRect( h, &rtPart, hB );
			DeleteObject( hB );
			break;
		}
	}
}