if (string == null) break;
public void setItems (String [] items) {	checkWidget ();	if (items == null) error (SWT.ERROR_NULL_ARGUMENT);	for (int i=0; i<items.length; i++) {		if (items [i] == null) error (SWT.ERROR_NULL_ARGUMENT);	}	int oldProc = OS.GetWindowLong (handle, OS.GWL_WNDPROC);	OS.SetWindowLong (handle, OS.GWL_WNDPROC, ListProc);	boolean redraw = drawCount == 0 && OS.IsWindowVisible (handle);	if (redraw) {		OS.SendMessage (handle, OS.WM_SETREDRAW, 0, 0);	}	RECT rect = null;	int hDC = 0, oldFont = 0, newFont = 0, newWidth = 0;	if ((style & SWT.H_SCROLL) != 0) {		rect = new RECT ();		hDC = OS.GetDC (handle);		newFont = OS.SendMessage (handle, OS.WM_GETFONT, 0, 0);		if (newFont != 0) oldFont = OS.SelectObject (hDC, newFont);		OS.SendMessage (handle, OS.LB_SETHORIZONTALEXTENT, 0, 0);	}	int length = items.length;	OS.SendMessage (handle, OS.LB_RESETCONTENT, 0, 0);	OS.SendMessage (handle, OS.LB_INITSTORAGE, length, length * 32);	int index = 0;	int cp = getCodePage ();	while (index < length) {		String string = items [index];		if (string == null) break;		TCHAR buffer = new TCHAR (cp, string, true);		int result = OS.SendMessage (handle, OS.LB_ADDSTRING, 0, buffer);		if (result == OS.LB_ERR || result == OS.LB_ERRSPACE) break;		if ((style & SWT.H_SCROLL) != 0) {			int flags = OS.DT_CALCRECT | OS.DT_SINGLELINE | OS.DT_NOPREFIX;			OS.DrawText (hDC, buffer, buffer.length (), rect, flags);			newWidth = Math.max (newWidth, rect.right - rect.left);		}		index++;	}	if ((style & SWT.H_SCROLL) != 0) {		if (newFont != 0) OS.SelectObject (hDC, oldFont);		OS.ReleaseDC (handle, hDC);		OS.SendMessage (handle, OS.LB_SETHORIZONTALEXTENT, newWidth + 3, 0);	}	if (redraw) {		OS.SendMessage (handle, OS.WM_SETREDRAW, 1, 0);		/*		* This code is intentionally commented.  The window proc		* for the list box implements WM_SETREDRAW to invalidate		* and erase the widget.  This is undocumented behavior.		* The commented code below shows what is actually happening		* and reminds us that we are relying on this undocumented		* behavior.		*///		int flags = OS.RDW_ERASE | OS.RDW_FRAME | OS.RDW_INVALIDATE;//		OS.RedrawWindow (handle, null, 0, flags);	}	OS.SetWindowLong (handle, OS.GWL_WNDPROC, oldProc);	if (index < items.length) error (SWT.ERROR_ITEM_NOT_ADDED);}