if (OS.WIN32_VERSION >= OS.VERSION (5, 1)) lpWndClass.style |= OS.CS_DROPSHADOW;
if (!OS.IsWinCE && OS.WIN32_VERSION >= OS.VERSION (5, 1)) lpWndClass.style |= OS.CS_DROPSHADOW;
protected void init () {	super.init ();			/* Create the callbacks */	windowCallback = new Callback (this, "windowProc", 4); //$NON-NLS-1$	windowProc = windowCallback.getAddress ();	if (windowProc == 0) error (SWT.ERROR_NO_MORE_CALLBACKS);		/* Remember the current thread id */	threadId = OS.GetCurrentThreadId ();		/* Use the character encoding for the default locale */	windowClass = new TCHAR (0, WindowName + WindowClassCount, true);	windowShadowClass = new TCHAR (0, WindowShadowName + WindowClassCount, true);	WindowClassCount++;	/* Register the SWT window class */	int hHeap = OS.GetProcessHeap ();	int hInstance = OS.GetModuleHandle (null);	WNDCLASS lpWndClass = new WNDCLASS ();	lpWndClass.hInstance = hInstance;	lpWndClass.lpfnWndProc = windowProc;	lpWndClass.style = OS.CS_BYTEALIGNWINDOW | OS.CS_DBLCLKS;	lpWndClass.hCursor = OS.LoadCursor (0, OS.IDC_ARROW);	int byteCount = windowClass.length () * TCHAR.sizeof;	lpWndClass.lpszClassName = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, byteCount);	OS.MoveMemory (lpWndClass.lpszClassName, windowClass, byteCount);	OS.RegisterClass (lpWndClass);	/* Register the SWT drop shadow window class */	if (OS.WIN32_VERSION >= OS.VERSION (5, 1)) lpWndClass.style |= OS.CS_DROPSHADOW;	byteCount = windowShadowClass.length () * TCHAR.sizeof;	lpWndClass.lpszClassName = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, byteCount);	OS.MoveMemory (lpWndClass.lpszClassName, windowShadowClass, byteCount);	OS.RegisterClass (lpWndClass);		/* Create the message only HWND */	hwndMessage = OS.CreateWindowEx (0,		windowClass,		null,		OS.WS_OVERLAPPED,		0, 0, 0, 0,		0,		0,		hInstance,		null);	messageCallback = new Callback (this, "messageProc", 4); //$NON-NLS-1$	messageProc = messageCallback.getAddress ();	if (messageProc == 0) error (SWT.ERROR_NO_MORE_CALLBACKS);	OS.SetWindowLong (hwndMessage, OS.GWL_WNDPROC, messageProc);	/* Create the filter hook */	if (!OS.IsWinCE) {		msgFilterCallback = new Callback (this, "msgFilterProc", 3); //$NON-NLS-1$		msgFilterProc = msgFilterCallback.getAddress ();		if (msgFilterProc == 0) error (SWT.ERROR_NO_MORE_CALLBACKS);		filterHook = OS.SetWindowsHookEx (OS.WH_MSGFILTER, msgFilterProc, 0, threadId);	}		/* Create the idle hook */	if (!OS.IsWinCE) {		foregroundIdleCallback = new Callback (this, "foregroundIdleProc", 3); //$NON-NLS-1$		foregroundIdleProc = foregroundIdleCallback.getAddress ();		if (foregroundIdleProc == 0) error (SWT.ERROR_NO_MORE_CALLBACKS);		idleHook = OS.SetWindowsHookEx (OS.WH_FOREGROUNDIDLE, foregroundIdleProc, 0, threadId);	}		/* Register the task bar created message */	SWT_TASKBARCREATED = OS.RegisterWindowMessage (new TCHAR (0, "TaskbarCreated", true));	/* Initialize OLE */	if (!OS.IsWinCE) {		OS.OleInitialize (0);	}		/* Initialize the Widget Table */	indexTable = new int [GROW_SIZE];	controlTable = new Control [GROW_SIZE];	for (int i=0; i<GROW_SIZE-1; i++) indexTable [i] = i + 1;	indexTable [GROW_SIZE - 1] = -1;}