rect.top = bounds.y;
rect.bottom = rect.top + width;
int[] part = getPartId(DrawData.SCROLLBAR_UP_ARROW);
OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code);
if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_UP_ARROW;
rect.bottom = bounds.y + bounds.height;
rect.top = rect.bottom - width;
part = getPartId(DrawData.SCROLLBAR_DOWN_ARROW);
OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code);
if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_DOWN_ARROW;
rect.top = bounds.y + width;
rect.bottom = thumbPos;
part = getPartId(DrawData.SCROLLBAR_THUMB);
OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code);
if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_UP_TRACK;
rect.top = rect.bottom;
rect.bottom = rect.top + thumbWidth;
part = getPartId(DrawData.SCROLLBAR_UP_TRACK);
OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code);
if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_THUMB;
rect.top = rect.bottom;
rect.bottom = bounds.y + bounds.height - width;
part = getPartId(DrawData.SCROLLBAR_DOWN_TRACK);
OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code);
if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_DOWN_TRACK;
rect.left = bounds.x;
rect.right = rect.left + height;