* Feature in Windows.  If the text in and editable combo box
* Feature in Windows.  If the text in an editable combo box
LRESULT wmCommandChild (int wParam, int lParam) {	int code = wParam >> 16;	switch (code) {		case OS.CBN_EDITCHANGE:			/*			* Feature in Windows.  If the combo box list selection is			* queried using CB_GETCURSEL before the WM_COMMAND (with			* CBM_EDITCHANGE) returns, CB_GETCURSEL returns the previous			* selection in the list.  It seems that the combo box sends			* the WM_COMMAND before it makes the selection in the list box			* match the entry field.  The fix is remember that no selection			* in the list should exist in this case.			*/			noSelection = true;			/*			* It is possible (but unlikely), that application			* code could have disposed the widget in the modify			* event.  If this happens, end the processing of the			* Windows message by returning zero as the result of			* the window proc.			*/			sendEvent (SWT.Modify);			if (isDisposed ()) return LRESULT.ZERO;			noSelection = false;			break;		case OS.CBN_SELCHANGE:			/*			* Feature in Windows.  If the text in and editable combo box			* is queried using GetWindowText () before the WM_COMMAND			* (with CBM_SELCHANGE) returns, GetWindowText () returns is			* the previous text in the combo box.  It seems that the combo			* box sends the WM_COMMAND before it updates the text field to			* match the list selection.  The fix is to force the text field			* to match the list selection by re-selecting the list item.			*/			int index = OS.SendMessage (handle, OS.CB_GETCURSEL, 0, 0);			if (index != OS.CB_ERR) OS.SendMessage (handle, OS.CB_SETCURSEL, index, 0);			/*			* It is possible (but unlikely), that application			* code could have disposed the widget in the modify			* event.  If this happens, end the processing of the			* Windows message by returning zero as the result of			* the window proc.			*/			sendEvent (SWT.Modify);			if (isDisposed ()) return LRESULT.ZERO;			postEvent (SWT.Selection);			break;		case OS.CBN_SETFOCUS:		case OS.CBN_KILLFOCUS:			/*			* It is possible (but unlikely), that application			* code could have disposed the widget in the focus			* event.  If this happens, end the processing of the			* Windows message by returning zero as the result of			* the window proc.			*/			sendEvent (code == OS.CBN_SETFOCUS ? SWT.FocusIn : SWT.FocusOut);			if (isDisposed ()) return LRESULT.ZERO;			break;	}	return super.wmCommandChild (wParam, lParam);}