if (isDisposed ()) return LRESULT.ZERO;
LRESULT WM_LBUTTONDOWN (int wParam, int lParam) {	LRESULT result = super.WM_LBUTTONDOWN (wParam, lParam);	/* Compute the banding rectangle */	int hwndTrack = parent.handle;	POINT pt = new POINT ();	pt.x = (short) (lParam & 0xFFFF);	pt.y = (short) (lParam >> 16);	RECT rect = new RECT ();	OS.GetWindowRect (handle, rect);	OS.MapWindowPoints (handle, 0, pt, 1);	startX = pt.x - rect.left;	startY = pt.y - rect.top;	OS.MapWindowPoints (0, hwndTrack, rect, 2);	lastX = rect.left;	lastY = rect.top;	int width = rect.right - rect.left;	int height = rect.bottom - rect.top;	/* The event must be sent because doit flag is used */	Event event = new Event ();	event.x = lastX;	event.y = lastY;	event.width = width;	event.height = height;	if ((style & SWT.SMOOTH) == 0) {		event.detail = SWT.DRAG;	}	sendEvent (SWT.Selection, event);	if (isDisposed ()) return LRESULT.ZERO;		/* Draw the banding rectangle */	if (event.doit) {		dragging = true;		lastX = event.x;		lastY = event.y;		menuShell ().bringToTop ();		if (OS.IsWinCE) {			OS.UpdateWindow (hwndTrack);		} else {			int flags = OS.RDW_UPDATENOW | OS.RDW_ALLCHILDREN;			OS.RedrawWindow (hwndTrack, null, 0, flags);		}		drawBand (event.x, event.y, width, height);		if ((style & SWT.SMOOTH) != 0) {			setBounds (event.x, event.y, width, height);			// widget could be disposed at this point		}	}	return result;}