Release 980913

Fri Sep 11 13:14:35 1998  Andreas Mohr <100.30936@germany.net>

	* [files/file.c] [include/file.h]
	Fixed SetFilePointer to allow negative positions as in DOS.

	* [graphics/ddraw.c]
	Added some methods to IDirect3D.

	* [ole/compobj.c] [if1632/compobj.spec]
	Added/implemented CoCreateStandardMalloc16,
	CoGetClassObject, CoCreateInstance,
	LookupETask, SetETask, CoGetState16.

	* [loader/task.c]
	MakeProcInstance: return 0 if func == NULL.

	* [*/*] [tools/winapi-check]
	Added zillions of missing WINAPI's and __cdecl's.
	(oops, several caused by myself)
	Wrote script for automated checking.

	* [if1632/compobj.spec]
	Many stub names.

	* [misc/ddeml.c] [ole/compobj.c]
	Some stubs.

Tue Sep  9 21:36:48 1998  Anders Carlsson <anders.carlsson@linux.nu>

	* [dlls/comctl32/Makefile.in] [dlls/comctl32/commctrl.c]
	  [dlls/comctl32/tab.c] [include/commctrl.h] [include/tab.h]
        Added preliminary tab control support.

Sat Sep  5 16:27:20 1998  Huw D M Davies <daviesh@abacus.physics.ox.ac.uk>

	* [graphics/psdrv/*]
	More changes to the PostScript driver:
	Implemented pens and solid brushes.
	Colour/greyscale for fonts, pens and brushes.
	To get coloured output you need to have *ColorDevice set to true
	in your PPD, otherwise you'll get greyscale.
	Landscape mode now works, as does non-A4 page sizes.
	Encoding of fonts to ANSI is better, Symbol works again.

	* [objects/dc.c] [include/gdi.h] [*/*]
	Moved dc->w.{text,background}Pixel to X11DRV_PDEVICE where they
	belong.

Sat Sep  5 05:12:09 1998  Ove Kaaven <ovek@arcticnet.no>

	* [include/dosexe.h] [include/miscemu.h] [include/msdos.h]
	  [loader/dos/dosvm.c] [loader/dos/module.c] [msdos/dpmi.c]
	  [msdos/int2f.c] [msdos/interrupts.c]
	Fixed portability. Adapted some code to make it easier to
	integrate the DOS subsystem with the DPMI subsystem, made
	the DPMI simulated real-mode interrupts be handled the V86
	way. Added support for .COM files. Made int2f DPMI check
	fail, to avoid pkunzip crashing in attempting to use DPMI.
	Generally moved stuff around a little.
	It is now technically possible to load several DOS programs
	into the same memory space. Not tested, though.

Fri Sep  4 21:40:45 1998  Marcus Meissner <marcus@jet.franken.de>

	* [if1632/kernel.spec]
	Changed 500-53x stubnames accordingly to nt3.51 krnl386.exe.

	* [win32/except.c]
	Fixed one bad program behaviour, (deleting SEH while in 
	first walk). RtlUnwind is broken too I think (it should unwind
	on success, not while walking the exception chain).

	* [ole/ole2nls.c]
	Get*DefaultLCID  returns 0x400|id. expected by one application.

	* [if1632/snoop.c]
	Handle non-standard SP returns more graceful.

	* [windows/class.c]
	hinstances are mostly irrelevant for win32.

	* [memory/string.c] [misc/registry.c]
	lstrcmpi32W: use toupper for characters < 0x100. (speedup hack
	for registry.c)
	Some small speedup hacks for registry.c

Thu Sep  3 20:40:16 1998  Eric Kohl <ekohl@abo.rhein-zeitung.de>

	* [Makefile.in][configure][configure.in][dlls/Makefile.in]
	  [dlls/comctl32/Makefile.in]
	Created dlls/comctl32 and moved the common controls stuff to it.

	* [misc/version.c]
	Removed COMCTL32_DllGetVersion. The fixed function is part
	of the common controls stuff.

	* [dlls/comctl32/*.c][include/commctrl.h]
	Added structure size tests.

	* [dlls/comctl32/toolbar.c]
	Fixed a bug in TOOLBAR_GetMaxWidth().

	* [dlls/comctl32/animate.c][include/animate.h]
	  [dlls/comctl32/comboex.c][include/comboex.h]
	  [dlls/comctl32/hotkey.c][include/hotkey.h]
	  [dlls/comctl32/listview.c][include/listview.h]
	  [dlls/comctl32/commctrl.c][include/commctrl.h]
	New files. Added Animation, ComboBoxEx, Hotkey and
	Listview control dummies.

	* [dlls/comctl32/tooltips.c]
	Fixed a display bug and font selection.

	* [dlls/comctl32/comctl32undoc.c][include/commctrl.h]
	Added missing DPA functions. Fixed bugs and published the
	function prototypes.

	* [documentation/common_controls]
	Updated.

Wed Sep  2 15:43:45 1998  Patrik Stridvall <ps@leissner.se>

	* [AUTHORS] [include/authors.h]
	Added myself as a Wine author.

	* [memory/virtual.c] [objects/dc.c]
	Fixed runtime errors for Solaris.

	* [misc/ddeml.c] [objects/gdiobj.c]
	Minor fixes.

	* [win32/device.c]
	Added stubs for IFSMgr VxDCall and
	a partial implementation of IFSMgr DeviceIo.

	* [relay32/Makefile.in] [relay32/builtin32.c] [relay32/imm32.spec] 
	  [relay32/msnet32.spec] [relay32/oledlg.spec]
	Added new spec files for IMM32.DLL, MSNET32.DLL, OLEDLG.DLL.

	* [misc/Makefile.in] [misc/imm.c] [include/imm.h]
	Added news files for implementation of IMM32.DLL. 
	All functions return 0 as is correct for all Western Languages.

	* [ole/Makefile.in] [ole/oledlg.c] [include/oledlg.h]
	Added new files for implementation of OLEDLG.DLL.
	Added stubs with FIXME:s for all functions.

Wed Sep  2 10:50:00 1998  Juergen Schmied <juergen.schmied@metronet.de>

	* [dlls/shell32/contmenu.c][dlls/shell32/shellole.c]
	  [dlls/shell32/shlfolder.c][dlls/shell32/shlview.c]
	  [documentation/shell32][include/shell.h]
	Clean up, bugfixes.
	
	* [dlls/shell32/enumidlist.c]
	Fileattributes implemented.
	
	* [dlls/shell32/pidl.c]
	Class pidlmgr splited into functions, structures changed, 
	some functions rewritten.

	* [dlls/shell32/shell32_main.c]
	Small changes and bugfixes SHGetFileInfoA, SHGetSpecialFolderLocation.
	
	* [dlls/shell32/shellord.c][relay32/shell32.spec]
	Parameter documented, implemented SHCloneSpecialIDList.
	Stub improved ShellExecuteEx32A.
	New stubs SHFind_InitMenuPopup, FileMenu_InitMenuPopup, 
	FileMenu_Create, FileMenu_TrackPopupMenuEx, SHWinHelp,
	SHRunConrolPanel, DAD_ShowDragImage, FileMenu_Destroy,
	SHGetDataFromIDListA, SHFileOperationA.
	
	* [include/winnls.h][include/ole2nls.c]
	TIME_FORCE24HOURFORMAT, TIME_NOTIMEMARKER implemented
	in OLE_GetFormatA, GetTimeFormat32A.
	
	* [win32/code_page.c]
	WideCharToMultiByte: parameter checking and returning of strlen
	implemented.
	
	* [windows/keyboard.c][windows/defwnd.c]
	Debug messages added.
	
	* [windows/win.c]
	WIN_SetWindowLong GWL_STYLE and GWL_EXSTYLE implemented.

	* [controls/menu.c]
	Missing line added.

	* [include/winerror.h]
	Macros for SUCCEEDED and FAILED added.

Mon Aug 31 00:55:31 1998  Ulrich Weigand <weigand@informatik.uni-erlangen.de>

	* [loader/module.c]
	Bugfix: LoadModule16 should *not* call LoadModule32.

	* [files/dos_fs.c]
	Bugfix: don't crash if given directory doesn't exist.

Sat Aug 29 15:00:49 1998  Turchanov Sergey <turchanov@usa.net>

	* [include/mmsystem.h][multimedia/mmsystem.c][relay32/winmm.spec]
	Almost completed implementation of [snd]PlaySound (except
	flags SND_ALIAS_ID and SND_APPLICATION).

	* [if1632/user.spec][windows/winpos.c]
	Added SetWindowRgn16 stub.

Sat Aug 29 02:53:31 1998  Alexander Lukyanov <lav@long.yar.ru>

	* [files/drive.c]
	GetDriveType32A: return DRIVE_DOESNOTEXIST in case of non
	existent drive.

	* [msdos/int21.c]
	INT21_FindFirstFCB: check drive validity to prevent oops.

	* [win32/file.c]
	CreateFile32A: duplicate STD_{INPUT,OUTPUT}_HANDLE.

	* [files/dos_fs.c]
	Make DOSFS_OpenDir treat "" as "/".
	DOSFS_OpenDevice: duplicate STD_{INPUT,OUTPUT}_HANDLE.

	* [windows/dialog.c]
	GetNextDlgTabItem32: use last/first item instead of first/last
	when hwndCtrl==0. This fixes initial focus.

Sat Aug 29 02:46:32 1998  Adrian Harvey <adrian@select.com.au>

	* [include/process.h] [include/process.c]
	Renamed PROCESS_SELF to CURRENT_PROCESS_PSEUDOHANDLE in line
	with thread constant, and Win32 documentation (which calls it
	a pseudohandle.)  Made GetCurrentProcess actually use this
	constant instead of the value.

	* [include/process.h] [include/thread.h] [scheduler/thread.c]
	  [scheduler/process.c] [scheduler/handle.c]
	Modify HANDLE_GetObjPtr to understand about
	CURRENT_THREAD_PSEUDOHANDLE and CURRENT_PROCESS_PSEUDOHANDLE.
	This allows DuplicateHandle to do the correct thing with these
	handles.  Removed now duplicate functionality from THREAD_GetPtr
	and PROCESS_GetPtr.

	* [loader/ne/segment.c]
	Fixed two places where HFILE32s were being created and passed to
	16-bit code. This should unbreak NE self-loading code.
	Added two casts to remove compile time warnings.

Fri Aug 28 21:04:13 1998  Joseph Pranevich <knight@baltimore.wwaves.com>

	* [msdos/dosmem.c] [msdos/int2f.c]
	Added beginnings of DOS error table.

	* [msdos/int1a.c]
	Stub for subfunction 0xb0.

	* [msdos/int10.c] [loader/dos/dosvm.c]
	INT 10 support completely rewritten and lots of debugging
	added. Now, DOS apps that use INT 10 to write to the screen will
	work. (Beyond Zork does, at least. Somewhat.)

	* [include/miscemu.h] [msdos/dosmem.c] [msdos/int21.c]
	Another shot at getting MS's generic error message facility
	right.

	* [msdos/int21.c]
	Command.Com wanted to set its own PSP address. I let it.

Wed Aug 26 12:26:20 1998  Matthew Toseland <Matthew.Toseland@btinternet.com>

	* [include/file.h] [misc/lzexpand.c]
	Fixed LZCopy16 by fixing HFILE16/HFILE32 convertor macros so don't
	convert lzw handles.

Tue Aug 25 22:22:55 1998  Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>

	* [misc/registry.c]
	In RegEnumvalue, ivalue == 0 is a legal request and should
	return the first entry.

	* [msdos/int21.c]
	Add handling for Int21-48/49 in Win16. Makes blinker demo work.

	* [windows/winproc.c]
	Add Msg32A<->Msg32W translation for LB_ADDSTRING.

Tue Aug 25 21:03:31 1998  Kristian Nielsen  <kristian.nielsen@risoe.dk>

	* [windows/win.c]
	Fix for SetParent(): MS Windows 3.11 does not clear the WS_CHILD
	flag when a child window is reparented to the desktop window.

Mon Aug 24 20:55:22 1998  Berend Reitsma <berend at asset-control dot com>

	* [controls/menu.c]
	Menus created with SetMenuItemInfo and InsertMenuItem should
	work now.

Sun Aug 23 23:23:23 1998  Alex Korobka <korobka@ams.sunysb.edu>

	* [controls/combo.c]
	Added CB_GETITEMHEIGHT.

	* [windows/winpos.c] 
	WM_NCHITTEST, SWP_FRAMECHANGED bugfixes.

Sat Aug 22 21:15:29 1998 Alex Priem <alexp@sci.kun.nl>

	* [files/profile.c] [include/windows.h]
	Added GetPrivateProfileSectionNames[AW],GetPrivateProfileSectionW,
	GetPrivateProfileStructW, GetProfileSectionW,
	WriteProfileSection[AW], WritePrivateProfileStructW. 
diff --git a/include/commctrl.h b/include/commctrl.h
index 3284c98..4d41405 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -37,7 +37,6 @@
 
 
 /* common control styles */
-
 #define CCS_TOP             0x00000001L
 #define CCS_NOMOVEY         0x00000002L
 #define CCS_BOTTOM          0x00000003L
@@ -63,140 +62,34 @@
 
 
 /* common notification codes (WM_NOTIFY)*/
-#define NM_FIRST                (0U-  0U)       // generic to all controls
+#define NM_FIRST                (0U-  0U)
 #define NM_LAST                 (0U- 99U)
+#define NM_OUTOFMEMORY          (NM_FIRST-1)
+#define NM_CLICK                (NM_FIRST-2)
+#define NM_DBLCLK               (NM_FIRST-3)
+#define NM_RETURN               (NM_FIRST-4)
+#define NM_RCLICK               (NM_FIRST-5)
+#define NM_RDBLCLK              (NM_FIRST-6)
+#define NM_SETFOCUS             (NM_FIRST-7)
+#define NM_KILLFOCUS            (NM_FIRST-8)
+#define NM_CUSTOMDRAW           (NM_FIRST-12)
+#define NM_HOVER                (NM_FIRST-13)
+#define NM_NCHITTEST            (NM_FIRST-14)
+#define NM_KEYDOWN              (NM_FIRST-15)
+#define NM_RELEASEDCAPTURE      (NM_FIRST-16)
+#define NM_SETCURSOR            (NM_FIRST-17)
+#define NM_CHAR                 (NM_FIRST-18)
+#define NM_TOOLTIPSCREATED      (NM_FIRST-19)
 
-#define LVN_FIRST               (0U-100U)       // listview
-#define LVN_LAST                (0U-199U)
-
-#define HDN_FIRST               (0U-300U)       // header
-#define HDN_LAST                (0U-399U)
-
-#define TVN_FIRST               (0U-400U)       // treeview
-#define TVN_LAST                (0U-499U)
-
-#define TTN_FIRST               (0U-520U)       // tooltips
-#define TTN_LAST                (0U-549U)
-
-#define TCN_FIRST               (0U-550U)       // tab control
-#define TCN_LAST                (0U-580U)
-
-// Shell reserved               (0U-580U) -  (0U-589U)
-
-#define CDN_FIRST               (0U-601U)       // common dialog (new)
-#define CDN_LAST                (0U-699U)
-
-#define TBN_FIRST               (0U-700U)       // toolbar
-#define TBN_LAST                (0U-720U)
-
-#define UDN_FIRST               (0U-721)        // updown
-#define UDN_LAST                (0U-740)
-
-#define MCN_FIRST               (0U-750U)       // monthcal
-#define MCN_LAST                (0U-759U)
-
-#define DTN_FIRST               (0U-760U)       // datetimepick
-#define DTN_LAST                (0U-799U)
-
-#define CBEN_FIRST              (0U-800U)       // combo box ex
-#define CBEN_LAST               (0U-830U)
-
-#define RBN_FIRST               (0U-831U)       // rebar
-#define RBN_LAST                (0U-859U)
-
-#define IPN_FIRST               (0U-860U)       // internet address
-#define IPN_LAST                (0U-879U)       // internet address
-
-#define SBN_FIRST               (0U-880U)       // status bar
-#define SBN_LAST                (0U-899U)
-
-#define PGN_FIRST               (0U-900U)       // Pager Control
-#define PGN_LAST                (0U-950U)
-
-
-#define NM_OUTOFMEMORY       (NM_FIRST-1)
-#define NM_CLICK             (NM_FIRST-2)
-#define NM_DBLCLK            (NM_FIRST-3)
-#define NM_RETURN            (NM_FIRST-4)
-#define NM_RCLICK            (NM_FIRST-5)
-#define NM_RDBLCLK           (NM_FIRST-6)
-#define NM_SETFOCUS          (NM_FIRST-7)
-#define NM_KILLFOCUS         (NM_FIRST-8)
-#define NM_CUSTOMDRAW        (NM_FIRST-12)
-#define NM_HOVER             (NM_FIRST-13)
-#define NM_NCHITTEST         (NM_FIRST-14)
-#define NM_KEYDOWN           (NM_FIRST-15)
-#define NM_RELEASEDCAPTURE   (NM_FIRST-16)
-#define NM_SETCURSOR         (NM_FIRST-17)
-#define NM_CHAR              (NM_FIRST-18)
-#define NM_TOOLTIPSCREATED   (NM_FIRST-19)
-
-#define HDN_ITEMCHANGINGA       (HDN_FIRST-0)
-#define HDN_ITEMCHANGINGW       (HDN_FIRST-20)
-#define HDN_ITEMCHANGEDA        (HDN_FIRST-1)
-#define HDN_ITEMCHANGEDW        (HDN_FIRST-21)
-#define HDN_ITEMCLICKA          (HDN_FIRST-2)
-#define HDN_ITEMCLICKW          (HDN_FIRST-22)
-#define HDN_ITEMDBLCLICKA       (HDN_FIRST-3)
-#define HDN_ITEMDBLCLICKW       (HDN_FIRST-23)
-#define HDN_DIVIDERDBLCLICKA    (HDN_FIRST-5)
-#define HDN_DIVIDERDBLCLICKW    (HDN_FIRST-25)
-#define HDN_BEGINTRACKA         (HDN_FIRST-6)
-#define HDN_BEGINTRACKW         (HDN_FIRST-26)
-#define HDN_ENDTRACKA           (HDN_FIRST-7)
-#define HDN_ENDTRACKW           (HDN_FIRST-27)
-#define HDN_TRACKA              (HDN_FIRST-8)
-#define HDN_TRACKW              (HDN_FIRST-28)
-#define HDN_GETDISPINFOA        (HDN_FIRST-9)
-#define HDN_GETDISPINFOW        (HDN_FIRST-29)
-#define HDN_BEGINDRAG           (HDN_FIRST-10)
-#define HDN_ENDDRAG             (HDN_FIRST-11)
-
-
-#define HDN_ITEMCHANGING         HDN_ITEMCHANGINGA
-#define HDN_ITEMCHANGED          HDN_ITEMCHANGEDA
-#define HDN_ITEMCLICK            HDN_ITEMCLICKA
-#define HDN_ITEMDBLCLICK         HDN_ITEMDBLCLICKA
-#define HDN_DIVIDERDBLCLICK      HDN_DIVIDERDBLCLICKA
-#define HDN_BEGINTRACK           HDN_BEGINTRACKA
-#define HDN_ENDTRACK             HDN_ENDTRACKA
-#define HDN_TRACK                HDN_TRACKA
-#define HDN_GETDISPINFO          HDN_GETDISPINFOA
-
-#define LVN_ITEMCHANGING        (LVN_FIRST-0)
-#define LVN_ITEMCHANGED         (LVN_FIRST-1)
-#define LVN_INSERTITEM          (LVN_FIRST-2)
-#define LVN_DELETEITEM          (LVN_FIRST-3)
-#define LVN_DELETEALLITEMS      (LVN_FIRST-4)
-#define LVN_BEGINLABELEDITA     (LVN_FIRST-5)
-#define LVN_BEGINLABELEDITW     (LVN_FIRST-75)
-#define LVN_ENDLABELEDITA       (LVN_FIRST-6)
-#define LVN_ENDLABELEDITW       (LVN_FIRST-76)
-#define LVN_COLUMNCLICK         (LVN_FIRST-8)
-#define LVN_BEGINDRAG           (LVN_FIRST-9)
-#define LVN_BEGINRDRAG          (LVN_FIRST-11)
-#define LVN_ODCACHEHINT         (LVN_FIRST-13)
-#define LVN_ODFINDITEMA         (LVN_FIRST-52)
-#define LVN_ODFINDITEMW         (LVN_FIRST-79)
-#define LVN_ITEMACTIVATE        (LVN_FIRST-14)
-#define LVN_ODSTATECHANGED      (LVN_FIRST-15)
-#define LVN_HOTTRACK            (LVN_FIRST-21)
-#define LVN_GETDISPINFOA        (LVN_FIRST-50)
-#define LVN_GETDISPINFOW        (LVN_FIRST-77)
-#define LVN_SETDISPINFOA        (LVN_FIRST-51)
-#define LVN_SETDISPINFOW        (LVN_FIRST-78)
-
-#define LVN_ODFINDITEM          LVN_ODFINDITEMA
-#define LVN_BEGINLABELEDIT      LVN_BEGINLABELEDITA
-#define LVN_ENDLABELEDIT        LVN_ENDLABELEDITA
-#define LVN_GETDISPINFO         LVN_GETDISPINFOA
-#define LVN_SETDISPINFO         LVN_SETDISPINFOA
 
 /* callback constants */
 #define LPSTR_TEXTCALLBACK32A    ((LPSTR)-1L)
 #define LPSTR_TEXTCALLBACK32W    ((LPWSTR)-1L)
 #define LPSTR_TEXTCALLBACK WINELIB_NAME_AW(LPSTR_TEXTCALLBACK)
 
+#define I_IMAGECALLBACK          (-1)
+#define I_INDENTCALLBACK         (-1)
+
 
 /* owner drawn types */
 #define ODT_HEADER      100
@@ -211,13 +104,30 @@
 } NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED;
 
 
+#ifndef CCSIZEOF_STRUCT
+#define CCSIZEOF_STRUCT(name, member) \
+    (((INT32)((LPBYTE)(&((name*)0)->member)-((LPBYTE)((name*)0))))+ \
+    sizeof(((name*)0)->member))
+#endif
+
+#define SNDMSG WINELIB_NAME_AW(SendMessage)
+
+
 /* StatusWindow */
 
 #define STATUSCLASSNAME16     "msctls_statusbar"
 #define STATUSCLASSNAME32A    "msctls_statusbar32"
-#define STATUSCLASSNAME32W   L"msctls_statusbar32"
+#define STATUSCLASSNAME32W    L"msctls_statusbar32"
 #define STATUSCLASSNAME WINELIB_NAME_AW(STATUSCLASSNAME)
 
+#define SBT_NOBORDERS         0x0100
+#define SBT_POPOUT            0x0200
+#define SBT_RTLREADING        0x0400  /* not supported */
+#define SBT_TOOLTIPS          0x0800
+#define SBT_OWNERDRAW         0x1000
+
+#define SBARS_SIZEGRIP        0x0100
+
 #define SB_SETTEXT32A         (WM_USER+1)
 #define SB_SETTEXT32W         (WM_USER+11)
 #define SB_SETTEXT WINELIB_NAME_AW(SB_SETTEXT)
@@ -245,19 +155,10 @@
 #define SB_GETICON            (WM_USER+20)
 #define SB_SETBKCOLOR         CCM_SETBKCOLOR   /* lParam = bkColor */
 
-#define SBT_NOBORDERS         0x0100
-#define SBT_POPOUT            0x0200
-#define SBT_RTLREADING        0x0400  /* not supported */
-#define SBT_TOOLTIPS          0x0800
-#define SBT_OWNERDRAW         0x1000
-
-#define SBARS_SIZEGRIP        0x0100
-
 #define SBN_FIRST             (0U-880U)
 #define SBN_LAST              (0U-899U)
 #define SBN_SIMPLEMODECHANGE  (SBN_FIRST-0)
 
-
 HWND32 WINAPI CreateStatusWindow32A (INT32, LPCSTR, HWND32, UINT32);
 HWND32 WINAPI CreateStatusWindow32W (INT32, LPCWSTR, HWND32, UINT32);
 #define    CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
@@ -270,10 +171,10 @@
 
 /* UpDown */
 
-#define UPDOWN_CLASS16        "msctls_updown"
-#define UPDOWN_CLASS32A       "msctls_updown32"
-#define UPDOWN_CLASS32W      L"msctls_updown32"   /*FIXME*/
-#define UPDOWN_CLASS          WINELIB_NAME_AW(UPDOWN_CLASS)
+#define UPDOWN_CLASS16          "msctls_updown"
+#define UPDOWN_CLASS32A         "msctls_updown32"
+#define UPDOWN_CLASS32W         L"msctls_updown32"
+#define UPDOWN_CLASS            WINELIB_NAME_AW(UPDOWN_CLASS)
 
 typedef struct tagUDACCEL
 {
@@ -294,6 +195,7 @@
 #define UDS_NOTHOUSANDS    0x0080
 
 #define UDN_FIRST          (0U-721)
+#define UDN_LAST           (0U-740)
 #define UDN_DELTAPOS       (UDN_FIRST-1)
 
 #define UDM_SETRANGE       (WM_USER+101)
@@ -336,18 +238,17 @@
 
 typedef struct
 {
-  INT32 iLow;
-  INT32 iHigh;
+    INT32 iLow;
+    INT32 iHigh;
 } PBRANGE, *PPBRANGE;
 
 
 /* ImageList */
 /*
-#if defined(__WINE__) && defined(__WINE_IMAGELIST_C)
-#else
+#if !defined(__WINE__) || !defined(__WINE_IMAGELIST_C)
 struct _IMAGELIST;
 typedef struct _IMAGELIST *HIMAGELIST;
-#endif*/  /* __WINE__ */
+#endif */  /* __WINE__ */
 
 #define CLR_NONE         0xFFFFFFFF
 #define CLR_DEFAULT      0xFF000000
@@ -468,11 +369,10 @@
 
 /* Header control */
 
-#define WC_HEADER16    "SysHeader" 
-#define WC_HEADER32A   "SysHeader32" 
-#define WC_HEADER32W  L"SysHeader32" 
-
-#define WC_HEADER     WINELIB_NAME_AW(WC_HEADER)
+#define WC_HEADER16             "SysHeader" 
+#define WC_HEADER32A            "SysHeader32" 
+#define WC_HEADER32W            L"SysHeader32" 
+#define WC_HEADER  WINELIB_NAME_AW(WC_HEADER)
  
 #define HDS_HORZ                0x0000 
 #define HDS_BUTTONS             0x0002 
@@ -540,25 +440,35 @@
 #define HDN_LAST                (0U-399U)
 #define HDN_ITEMCHANGING32A     (HDN_FIRST-0)
 #define HDN_ITEMCHANGING32W     (HDN_FIRST-20)
+#define HDN_ITEMCHANGING WINELIB_NAME_AW(HDN_ITEMCHANGING)
 #define HDN_ITEMCHANGED32A      (HDN_FIRST-1)
 #define HDN_ITEMCHANGED32W      (HDN_FIRST-21)
+#define HDN_ITEMCHANGED WINELIB_NAME_AW(HDN_ITEMCHANGED)
 #define HDN_ITEMCLICK32A        (HDN_FIRST-2)
 #define HDN_ITEMCLICK32W        (HDN_FIRST-22)
+#define HDN_ITEMCLICK WINELIB_NAME_AW(HDN_ITEMCLICK)
 #define HDN_ITEMDBLCLICK32A     (HDN_FIRST-3)
 #define HDN_ITEMDBLCLICK32W     (HDN_FIRST-23)
+#define HDN_ITEMDBLCLICK WINELIB_NAME_AW(HDN_ITEMDBLCLICK)
 #define HDN_DIVIDERDBLCLICK32A  (HDN_FIRST-5)
 #define HDN_DIVIDERDBLCLICK32W  (HDN_FIRST-25)
+#define HDN_DIVIDERDBLCLICK WINELIB_NAME_AW(HDN_DIVIDERDBLCLICK)
 #define HDN_BEGINTRACK32A       (HDN_FIRST-6)
 #define HDN_BEGINTRACK32W       (HDN_FIRST-26)
+#define HDN_BEGINTRACK WINELIB_NAME_AW(HDN_BEGINTRACK)
 #define HDN_ENDTRACK32A         (HDN_FIRST-7)
 #define HDN_ENDTRACK32W         (HDN_FIRST-27)
+#define HDN_ENDTRACK WINELIB_NAME_AW(HDN_ENDTRACK)
 #define HDN_TRACK32A            (HDN_FIRST-8)
 #define HDN_TRACK32W            (HDN_FIRST-28)
+#define HDN_TRACK WINELIB_NAME_AW(HDN_TRACK)
 #define HDN_GETDISPINFO32A      (HDN_FIRST-9)
 #define HDN_GETDISPINFO32W      (HDN_FIRST-29)
+#define HDN_GETDISPINFO WINELIB_NAME_AW(HDN_GETDISPINFO)
 #define HDN_BEGINDRACK          (HDN_FIRST-10)
 #define HDN_ENDDRACK            (HDN_FIRST-11)
 
+
 typedef struct _HD_LAYOUT
 {
     RECT32      *prc;
@@ -578,7 +488,27 @@
     LPARAM    lParam;
     INT32     iImage;
     INT32     iOrder;
-} HD_ITEMA;
+} HDITEM32A, *LPHDITEM32A;
+
+typedef struct _HD_ITEMW
+{
+    UINT32    mask;
+    INT32     cxy;
+    LPWSTR    pszText;
+    HBITMAP32 hbm;
+    INT32     cchTextMax;
+    INT32     fmt;
+    LPARAM    lParam;
+    INT32     iImage;
+    INT32     iOrder;
+} HDITEM32W, *LPHDITEM32W;
+
+#define HDITEM   WINELIB_NAME_AW(HDITEM)
+#define LPHDITEM WINELIB_NAME_AW(LPHDITEM)
+
+#define HDITEM_V1_SIZE32A CCSIZEOF_STRUCT(HDITEM32A, lParam)
+#define HDITEM_V1_SIZE32W CCSIZEOF_STRUCT(HDITEM32W, lParam)
+#define HDITEM_V1_SIZE WINELIB_NAME_AW(HDITEM_V1_SIZE)
 
 typedef struct _HD_HITTESTINFO
 {
@@ -591,56 +521,55 @@
 
 typedef struct tagNMHEADERA
 {
-    NMHDR    hdr;
-    INT32    iItem;
-    INT32    iButton;
-    HD_ITEMA *pitem;
+    NMHDR     hdr;
+    INT32     iItem;
+    INT32     iButton;
+    HDITEM32A *pitem;
 } NMHEADERA, *LPNMHEADERA;
 
-
+#ifndef __WINE__
 #define Header_GetItemCount(hwndHD) \
-  (INT32)SendMessage32A((hwndHD),HDM_GETITEMCOUNT,0,0L)
+  (INT32)SNDMSG((hwndHD),HDM_GETITEMCOUNT,0,0L)
 #define Header_InsertItem(hwndHD,i,phdi) \
-  (INT32)SendMessage32A((hwndHD),HDM_INSERTITEM,(WPARAM32)(INT32)(i),\
-			(LPARAM)(const HD_ITEMA*)(phdi))
+  (INT32)SNDMSG((hwndHD),HDM_INSERTITEM,(WPARAM32)(INT32)(i),(LPARAM)(const HDITEM *)(phdi))
 #define Header_DeleteItem(hwndHD,i) \
-  (BOOL32)SendMessage32A((hwndHD),HDM_DELETEITEM,(WPARAM32)(INT32)(i),0L)
+  (BOOL32)SNDMSG((hwndHD),HDM_DELETEITEM,(WPARAM32)(INT32)(i),0L)
 #define Header_GetItem(hwndHD,i,phdi) \
-  (BOOL32)SendMessage32A((hwndHD),HDM_GETITEM,(WPARAM32)(INT32)(i),(LPARAM)(HD_ITEMA*)(phdi))
+  (BOOL32)SNDMSG((hwndHD),HDM_GETITEM,(WPARAM32)(INT32)(i),(LPARAM)(HDITEM *)(phdi))
 #define Header_SetItem(hwndHD,i,phdi) \
-  (BOOL32)SendMessage32A((hwndHD),HDM_SETITEM,(WPARAM32)(INT32)(i),(LPARAM)(const HD_ITEMA*)(phdi))
+  (BOOL32)SNDMSG((hwndHD),HDM_SETITEM,(WPARAM32)(INT32)(i),(LPARAM)(const HDITEM *)(phdi))
 #define Header_Layout(hwndHD,playout) \
-  (BOOL32)SendMessage32A((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
+  (BOOL32)SNDMSG((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
 #define Header_GetItemRect(hwnd,iItem,lprc) \
-  (BOOL32)SendMessage32A((hwnd),HDM_GETITEMRECT,(WPARAM32)iItem,(LPARAM)lprc)
+  (BOOL32)SNDMSG((hwnd),HDM_GETITEMRECT,(WPARAM32)iItem,(LPARAM)lprc)
 #define Header_SetImageList(hwnd,himl) \
-  (HIMAGELIST)SendMessage32A((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
+  (HIMAGELIST)SNDMSG((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
 #define Header_GetImageList(hwnd) \
-  (HIMAGELIST)SendMessage32A((hwnd),HDM_GETIMAGELIST,0,0)
+  (HIMAGELIST)SNDMSG((hwnd),HDM_GETIMAGELIST,0,0)
 #define Header_OrderToIndex(hwnd,i) \
-  (INT32)SendMessage32A((hwnd),HDM_ORDERTOINDEX,(WPARAM32)i,0)
+  (INT32)SNDMSG((hwnd),HDM_ORDERTOINDEX,(WPARAM32)i,0)
 #define Header_CreateDragImage(hwnd,i) \
-  (HIMAGELIST)SendMessage32A((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM32)i,0)
+  (HIMAGELIST)SNDMSG((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM32)i,0)
 #define Header_GetOrderArray(hwnd,iCount,lpi) \
-  (BOOL32)SendMessage32A((hwnd),HDM_GETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
+  (BOOL32)SNDMSG((hwnd),HDM_GETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
 #define Header_SetOrderArray(hwnd,iCount,lpi) \
-  (BOOL32)SendMessage32A((hwnd),HDM_SETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
+  (BOOL32)SNDMSG((hwnd),HDM_SETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
 #define Header_SetHotDivider(hwnd,fPos,dw) \
-  (INT32)SendMessage32A((hwnd),HDM_SETHOTDIVIDER,(WPARAM32)fPos,(LPARAM)dw)
+  (INT32)SNDMSG((hwnd),HDM_SETHOTDIVIDER,(WPARAM32)fPos,(LPARAM)dw)
 #define Header_SetUnicodeFormat(hwnd,fUnicode) \
-  (BOOL32)SendMessage32A((hwnd),HDM_SETUNICODEFORMAT,(WPARAM32)(fUnicode),0)
+  (BOOL32)SNDMSG((hwnd),HDM_SETUNICODEFORMAT,(WPARAM32)(fUnicode),0)
 #define Header_GetUnicodeFormat(hwnd) \
-  (BOOL32)SendMessage32A((hwnd),HDM_GETUNICODEFORMAT,0,0)
+  (BOOL32)SNDMSG((hwnd),HDM_GETUNICODEFORMAT,0,0)
+#endif /* #ifndef __WINE__ */
 
 
 /* Toolbar */
 
-#define TOOLBARCLASSNAME16        "ToolbarWindow" 
-#define TOOLBARCLASSNAME32W       L"ToolbarWindow32" 
-#define TOOLBARCLASSNAME32A       "ToolbarWindow32" 
+#define TOOLBARCLASSNAME16      "ToolbarWindow" 
+#define TOOLBARCLASSNAME32W     L"ToolbarWindow32" 
+#define TOOLBARCLASSNAME32A     "ToolbarWindow32" 
 #define TOOLBARCLASSNAME WINELIB_NAME_AW(TOOLBARCLASSNAME)
 
- 
 #define CMB_MASKED              0x02 
  
 #define TBSTATE_CHECKED         0x01 
@@ -652,7 +581,6 @@
 #define TBSTATE_ELLIPSES        0x40
 #define TBSTATE_MARKED          0x80 
  
- 
 #define TBSTYLE_BUTTON          0x00 
 #define TBSTYLE_SEP             0x01 
 #define TBSTYLE_CHECK           0x02 
@@ -675,14 +603,6 @@
 #define TBIF_COMMAND            0x00000020
 #define TBIF_SIZE               0x00000040
  
-#define TBN_FIRST               (0U-700U)
-#define TBN_LAST                (0U-720U)
-#define TBN_GETBUTTONINFO32A    (TBN_FIRST-0)
-#define TBN_GETBUTTONINFO32W    (TBN_FIRST-20)
-
-#define TBN_GETINFOTIP32A       (TBN_FIRST-18)
-#define TBN_GETINFOTIP32W       (TBN_FIRST-19)
-
 
 #define TB_ENABLEBUTTON          (WM_USER+1)
 #define TB_CHECKBUTTON           (WM_USER+2)
@@ -775,13 +695,20 @@
 #define TB_SETPADDING            (WM_USER+87)
 #define TB_SETINSERTMARKCOLOR    (WM_USER+88)
 #define TB_GETINSERTMARKCOLOR    (WM_USER+89)
-
 #define TB_SETCOLORSCHEME        CCM_SETCOLORSCHEME
 #define TB_GETCOLORSCHEME        CCM_GETCOLORSCHEME
-
 #define TB_SETUNICODEFORMAT      CCM_SETUNICODEFORMAT
 #define TB_GETUNICODEFORMAT      CCM_GETUNICODEFORMAT
 
+#define TBN_FIRST               (0U-700U)
+#define TBN_LAST                (0U-720U)
+#define TBN_GETBUTTONINFO32A    (TBN_FIRST-0)
+#define TBN_GETBUTTONINFO32W    (TBN_FIRST-20)
+#define TBN_GETBUTTONINFO WINELIB_NAME_AW(TBN_GETBUTTONINFO)
+#define TBN_GETINFOTIP32A       (TBN_FIRST-18)
+#define TBN_GETINFOTIP32W       (TBN_FIRST-19)
+#define TBN_GETINFOTIP WINELIB_NAME_AW(TBN_GETINFOTIP)
+
 
 /* This is just for old CreateToolbar. */
 /* Don't use it in new programs. */
@@ -904,9 +831,9 @@
 
 /* Tool tips */
 
-#define TOOLTIPS_CLASS16         "tooltips_class"
+#define TOOLTIPS_CLASS16        "tooltips_class"
+#define TOOLTIPS_CLASS32A       "tooltips_class32"
 #define TOOLTIPS_CLASS32W       L"tooltips_class32"
-#define TOOLTIPS_CLASS32A        "tooltips_class32"
 #define TOOLTIPS_CLASS          WINELIB_NAME_AW(TOOLTIPS_CLASS)
 
 #define INFOTIPSIZE             1024
@@ -1014,6 +941,10 @@
 #define PTOOLINFO WINELIB_NAME_AW(PTOOLINFO)
 #define LPTTTOOLINFO WINELIB_NAME_AW(LPTTTOOLINFO)
 
+#define TTTOOLINFO_V1_SIZE32A CCSIZEOF_STRUCT(TTTOOLINFO32A, lpszText)
+#define TTTOOLINFO_V1_SIZE32W CCSIZEOF_STRUCT(TTTOOLINFO32W, lpszText)
+#define TTTOOLINFO_V1_SIZE WINELIB_NAME_AW(TTTOOLINFO_V1_SIZE)
+
 typedef struct _TT_HITTESTINFOA
 {
     HWND32        hwnd;
@@ -1054,6 +985,10 @@
 #define NMTTDISPINFO WINELIB_NAME_AW(NMTTDISPINFO)
 #define LPNMTTDISPINFO WINELIB_NAME_AW(LPNMTTDISPINFO)
 
+#define NMTTDISPINFO_V1_SIZE32A CCSIZEOF_STRUCT(NMTTDISPINFO32A, uFlags)
+#define NMTTDISPINFO_V1_SIZE32W CCSIZEOF_STRUCT(NMTTDISPINFO32W, uFlags)
+#define NMTTDISPINFO_V1_SIZE WINELIB_NAME_AW(NMTTDISPINFO_V1_SIZE)
+
 
 /* Rebar control */
 
@@ -1111,10 +1046,8 @@
 #define RB_GETBANDINFO WINELIB_NAME_AW(RB_GETBANDINFO)
 #define RB_MINIMIZEBAND         (WM_USER+30)
 #define RB_MAXIMIZEBAND         (WM_USER+31)
-
 #define RB_GETBANDORDERS        (WM_USER+34)
 #define RB_SHOWBAND             (WM_USER+35)
-
 #define RB_SETPALETTE           (WM_USER+37)
 #define RB_GETPALETTE           (WM_USER+38)
 #define RB_MOVEBAND             (WM_USER+39)
@@ -1124,6 +1057,9 @@
 #define RB_SETUNICODEFORMAT     CCS_SETUNICODEFORMAT
 #define RB_GETUNICODEFORMAT     CCS_GETUNICODEFORMAT
 
+#define RBN_FIRST               (0U-831U)
+#define RBN_LAST                (0U-859U)
+
 
 typedef struct tagREBARINFO
 {
@@ -1156,8 +1092,41 @@
     UINT32    cxHeader;
 } REBARBANDINFO32A, *LPREBARBANDINFO32A;
 
+typedef REBARBANDINFO32A const *LPCREBARBANDINFO32A;
 
+typedef struct tagREBARBANDINFOW
+{
+    UINT32    cbSize;
+    UINT32    fMask;
+    UINT32    fStyle;
+    COLORREF  clrFore;
+    COLORREF  clrBack;
+    LPSTR     lpText;
+    UINT32    cch;
+    INT32     iImage;
+    HWND32    hwndChild;
+    UINT32    cxMinChild;
+    UINT32    cyMinChild;
+    UINT32    cx;
+    HBITMAP32 hbmBack;
+    UINT32    wID;
+    UINT32    cyChild;
+    UINT32    cyMaxChild;
+    UINT32    cyIntegral;
+    UINT32    cxIdeal;
+    LPARAM    lParam;
+    UINT32    cxHeader;
+} REBARBANDINFO32W, *LPREBARBANDINFO32W;
 
+typedef REBARBANDINFO32W const *LPCREBARBANDINFO32W;
+
+#define REBARBANDINFO    WINELIB_NAME_AW(REBARBANDINFO)
+#define LPREBARBANDINFO  WINELIB_NAME_AW(LPREBARBANDINFO)
+#define LPCREBARBANDINFO WINELIB_NAME_AW(LPCREBARBANDINFO)
+
+#define REBARBANDINFO_V3_SIZE32A CCSIZEOF_STRUCT(REBARBANDINFO32A, wID)
+#define REBARBANDINFO_V3_SIZE32W CCSIZEOF_STRUCT(REBARBANDINFO32W, wID)
+#define REBARBANDINFO_V3_SIZE WINELIB_NAME_AW(REBARBANDINFO_V3_SIZE)
 
 
 /* Trackbar control */
@@ -1257,8 +1226,21 @@
 #define PGB_TOPORLEFT           0
 #define PGB_BOTTOMORRIGHT       1
 
-#define PGM_FIRST               0x1400
+/* only used with PGN_SCROLL */
+#define PGF_SCROLLUP            1
+#define PGF_SCROLLDOWN          2
+#define PGF_SCROLLLEFT          4
+#define PGF_SCROLLRIGHT         8
 
+#define PGK_SHIFT               1
+#define PGK_CONTROL             2
+#define PGK_MENU                4
+
+/* only used with PGN_CALCSIZE */
+#define PGF_CALCWIDTH           1
+#define PGF_CALCHEIGHT          2
+
+#define PGM_FIRST               0x1400
 #define PGM_SETCHILD            (PGM_FIRST+1)
 #define PGM_RECALCSIZE          (PGM_FIRST+2)
 #define PGM_FORWARDMOUSE        (PGM_FIRST+3)
@@ -1273,21 +1255,44 @@
 #define PGM_GETBUTTONSTATE      (PGM_FIRST+12)
 #define PGM_GETDROPTARGET       CCM_GETDROPTARGET
 
+#define PGN_FIRST               (0U-900U)
+#define PGN_LAST                (0U-950U)
+#define PGN_SCROLL              (PGN_FIRST-1)
+#define PGN_CALCSIZE            (PGN_FIRST-2)
+
+typedef struct
+{
+    NMHDR hdr;
+    WORD  fwKeys;
+    RECT32 rcParent;
+    INT32  iDir;
+    INT32  iXpos;
+    INT32  iYpos;
+    INT32  iScroll;
+} NMPGSCROLL, *LPNMPGSCROLL;
+
+typedef struct
+{
+    NMHDR hdr;
+    DWORD dwFlag;
+    INT32 iWidth;
+    INT32 iHeight;
+} NMPGCALCSIZE, *LPNMPGCALCSIZE;
 
 
 /* Treeview control */
 
 #define WC_TREEVIEW32A          "SysTreeView32"
 #define WC_TREEVIEW32W          L"SysTreeView32"
-#define WC_TREEVIEW  WINELIB_NAME_AW(WC_TREEVIEW)
+#define WC_TREEVIEW             WINELIB_NAME_AW(WC_TREEVIEW)
 
 #define TVSIL_NORMAL            0
 #define TVSIL_STATE             2
 
 #define TV_FIRST                0x1100
-
-#define TVM_INSERTITEMA         (TV_FIRST+0)
-#define TVM_INSERTITEMW         (TV_FIRST+50)
+#define TVM_INSERTITEM32A       (TV_FIRST+0)
+#define TVM_INSERTITEM32W       (TV_FIRST+50)
+#define TVM_INSERTITEM          WINELIB_NAME_AW(TVM_INSERTITEM)
 #define TVM_DELETEITEM          (TV_FIRST+1)
 #define TVM_EXPAND              (TV_FIRST+2)
 #define TVM_GETITEMRECT         (TV_FIRST+4)
@@ -1298,12 +1303,15 @@
 #define TVM_SETIMAGELIST        (TV_FIRST+9)
 #define TVM_GETNEXTITEM         (TV_FIRST+10)
 #define TVM_SELECTITEM          (TV_FIRST+11)
-#define TVM_GETITEMA            (TV_FIRST+12)
-#define TVM_GETITEMW            (TV_FIRST+62)
-#define TVM_SETITEMA            (TV_FIRST+13)
-#define TVM_SETITEMW            (TV_FIRST+63)
-#define TVM_EDITLABELA          (TV_FIRST+14)
-#define TVM_EDITLABELW          (TV_FIRST+65)
+#define TVM_GETITEM32A          (TV_FIRST+12)
+#define TVM_GETITEM32W          (TV_FIRST+62)
+#define TVM_GETITEM             WINELIB_NAME_AW(TVM_GETITEM)
+#define TVM_SETITEM32A          (TV_FIRST+13)
+#define TVM_SETITEM32W          (TV_FIRST+63)
+#define TVM_SETITEM             WINELIB_NAME_AW(TVM_SETITEM)
+#define TVM_EDITLABEL32A        (TV_FIRST+14)
+#define TVM_EDITLABEL32W        (TV_FIRST+65)
+#define TVM_EDITLABEL           WINELIB_NAME_AW(TVM_EDITLABEL)
 #define TVM_GETEDITCONTROL      (TV_FIRST+15)
 #define TVM_GETVISIBLECOUNT     (TV_FIRST+16)
 #define TVM_HITTEST             (TV_FIRST+17)
@@ -1312,10 +1320,28 @@
 #define TVM_ENSUREVISIBLE       (TV_FIRST+20)
 #define TVM_SORTCHILDRENCB      (TV_FIRST+21)
 #define TVM_ENDEDITLABELNOW     (TV_FIRST+22)
-#define TVM_GETISEARCHSTRINGA   (TV_FIRST+23)
-#define TVM_GETISEARCHSTRINGW   (TV_FIRST+64)
+#define TVM_GETISEARCHSTRING32A (TV_FIRST+23)
+#define TVM_GETISEARCHSTRING32W (TV_FIRST+64)
+#define TVM_GETISEARCHSTRING    WINELIB_NAME_AW(TVM_GETISEARCHSTRING)
 #define TVM_SETTOOLTIPS         (TV_FIRST+24)
 #define TVM_GETTOOLTIPS         (TV_FIRST+25)
+#define TVM_SETINSERTMARK       (TV_FIRST+26)
+#define TVM_SETITEMHEIGHT       (TV_FIRST+27)
+#define TVM_GETITEMHEIGHT       (TV_FIRST+28)
+#define TVM_SETBKCOLOR          (TV_FIRST+29)
+#define TVM_SETTEXTCOLOR        (TV_FIRST+30)
+#define TVM_GETBKCOLOR          (TV_FIRST+31)
+#define TVM_GETTEXTCOLOR        (TV_FIRST+32)
+#define TVM_SETSCROLLTIME       (TV_FIRST+33)
+#define TVM_GETSCROLLTIME       (TV_FIRST+34)
+#define TVM_SETINSERTMARKCOLOR  (TV_FIRST+37)
+#define TVM_GETINSERTMARKCOLOR  (TV_FIRST+38)
+#define TVM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
+#define TVM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
+
+#define TVN_FIRST               (0U-400U)
+#define TVN_LAST                (0U-499U)
+
 
 /* Listview control */
 
@@ -1323,20 +1349,6 @@
 #define WC_LISTVIEW32W          L"SysListView32"
 #define WC_LISTVIEW  WINELIB_NAME_AW(WC_LISTVIEW)
 
-#define LVM_FIRST               0x1000
-
-#define LVM_SETBKCOLOR          (LVM_FIRST+1)
-#define LVM_GETIMAGELIST        (LVM_FIRST+2)
-#define LVM_SETIMAGELIST        (LVM_FIRST+3)
-#define LVM_GETITEMCOUNT        (LVM_FIRST+4)
-#define LVM_GETITEM             (LVM_FIRST+5)
-#define LVM_INSERTITEM          (LVM_FIRST+7)
-#define LVM_DELETEALLITEMS      (LVM_FIRST+9)
-#define LVM_SETITEMPOSITION     (LVM_FIRST+15)
-#define LVM_INSERTCOLUMN        (LVM_FIRST+27)
-#define LVM_SORTITEMS           (LVM_FIRST+48)
-#define LVM_GETSELECTEDCOUNT    (LVM_FIRST+50)
-
 #define LVS_ICON                0x0000
 #define LVS_REPORT              0x0001
 #define LVS_SMALLICON           0x0002
@@ -1360,80 +1372,6 @@
 #define LVS_NOCOLUMNHEADER      0x4000
 #define LVS_NOSORTHEADER        0x8000
 
-#define I_IMAGECALLBACK         (-1)
-#define I_INDENTCALLBACK        (-1)
-#define LV_ITEMA LVITEMA
-#define LV_ITEMW LVITEMW
-
-#define LV_ITEM LVITEM
-
-#define LVITEMA_V1_SIZE CCSIZEOF_STRUCT(LVITEMA, lParam)
-#define LVITEMW_V1_SIZE CCSIZEOF_STRUCT(LVITEMW, lParam)
-
-typedef struct tagLVITEMA
-{
-    UINT32 mask;
-    int iItem;
-    int iSubItem;
-    UINT32 state;
-    UINT32 stateMask;
-    LPSTR pszText;
-    int cchTextMax;
-    int iImage;
-    LPARAM lParam;
-    int iIndent;	//(_WIN32_IE >= 0x0300)
-} LVITEMA, * LPLVITEMA;
-
-typedef struct tagLVITEMW
-{
-    UINT32 mask;
-    int iItem;
-    int iSubItem;
-    UINT32 state;
-    UINT32 stateMask;
-    LPWSTR pszText;
-    int cchTextMax;
-    int iImage;
-    LPARAM lParam;
-    int iIndent;	//(_WIN32_IE >= 0x0300)
-} LVITEMW, * LPLVITEMW;
-
-#define LVITEM    LVITEMA
-#define LPLVITEM  LPLVITEMA
-#define LVITEM_V1_SIZE LVITEMA_V1_SIZE
-
-#define LV_COLUMNA      LVCOLUMNA
-#define LV_COLUMNW      LVCOLUMNW
-#define LV_COLUMN       LVCOLUMN
-#define LVCOLUMNA_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem)
-#define LVCOLUMNW_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem)
-
-typedef struct tagLVCOLUMNA
-{   UINT32 mask;
-    int fmt;
-    int cx;
-    LPSTR pszText;
-    int cchTextMax;
-    int iSubItem;
-    int iImage;  //(_WIN32_IE >= 0x0300)
-    int iOrder;  //(_WIN32_IE >= 0x0300)
-} LVCOLUMNA,* LPLVCOLUMNA;
-
-typedef struct tagLVCOLUMNW
-{   UINT32 mask;
-    int fmt;
-    int cx;
-    LPWSTR pszText;
-    int cchTextMax;
-    int iSubItem;
-    int iImage;	//(_WIN32_IE >= 0x0300)
-    int iOrder;	//(_WIN32_IE >= 0x0300)
-} LVCOLUMNW,* LPLVCOLUMNW;
-
-#define  LVCOLUMN               LVCOLUMNA
-#define  LPLVCOLUMN             LPLVCOLUMNA
-#define LVCOLUMN_V1_SIZE LVCOLUMNA_V1_SIZE
-
 #define LVCF_FMT                0x0001
 #define LVCF_WIDTH              0x0002
 #define LVCF_TEXT               0x0004
@@ -1441,7 +1379,6 @@
 #define LVCF_IMAGE              0x0010
 #define LVCF_ORDER              0x0020
 
-
 #define LVCFMT_LEFT             0x0000
 #define LVCFMT_RIGHT            0x0001
 #define LVCFMT_CENTER           0x0002
@@ -1450,25 +1387,10 @@
 #define LVCFMT_BITMAP_ON_RIGHT  0x1000
 #define LVCFMT_COL_HAS_IMAGES   0x8000
 
-#define SNDMSG SendMessage32A
-#define ListView_GetImageList(hwnd, iImageList) (HIMAGELIST)SNDMSG((hwnd), LVM_GETIMAGELIST, (WPARAM)(INT)(iImageList), 0L)
-
 #define LVSIL_NORMAL            0
 #define LVSIL_SMALL             1
 #define LVSIL_STATE             2
 
-
-#define ListView_SetImageList(hwnd, himl, iImageList) (HIMAGELIST)(UINT32)SNDMSG((hwnd), LVM_SETIMAGELIST, (WPARAM32)(iImageList), (LPARAM)(UINT32)(HIMAGELIST)(himl))
-#define ListView_GetItemCount(hwnd)(int)SNDMSG((hwnd), LVM_GETITEMCOUNT, 0, 0L)
-#define ListView_GetItem(hwnd, pitem)(BOOL32)SNDMSG((hwnd), LVM_GETITEM, 0, (LPARAM)(LV_ITEM *)(pitem))
-#define ListView_InsertItem(hwnd, pitem) (int)SNDMSG((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM *)(pitem))
-#define ListView_DeleteAllItems(hwnd) (BOOL32)SNDMSG((hwnd), LVM_DELETEALLITEMS, 0, 0L)
-#define ListView_InsertColumn(hwnd, iCol, pcol)(int)SNDMSG((hwnd), LVM_INSERTCOLUMN, (WPARAM32)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol))
-typedef int (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
-#define ListView_SortItems(hwndLV, _pfnCompare, _lPrm)(BOOL32)SNDMSG((hwndLV), LVM_SORTITEMS, (WPARAM32)(LPARAM)_lPrm,(LPARAM)(PFNLVCOMPARE)_pfnCompare)
-#define ListView_SetItemPosition(hwndLV, i, x, y)(BOOL32)SNDMSG((hwndLV), LVM_SETITEMPOSITION, (WPARAM32)(int)(i), MAKELPARAM((x), (y)))
-#define ListView_GetSelectedCount(hwndLV)(UINT32)SNDMSG((hwndLV), LVM_GETSELECTEDCOUNT, 0, 0L)
-
 #define LVIF_TEXT               0x0001
 #define LVIF_IMAGE              0x0002
 #define LVIF_PARAM              0x0004
@@ -1485,37 +1407,435 @@
 #define LVIS_OVERLAYMASK        0x0F00
 #define LVIS_STATEIMAGEMASK     0xF000
 
-#define LPNM_LISTVIEW   LPNMLISTVIEW
-#define NM_LISTVIEW     NMLISTVIEW
+#define LVM_FIRST               0x1000
+#define LVM_GETBKCOLOR          (LVM_FIRST+0)
+#define LVM_SETBKCOLOR          (LVM_FIRST+1)
+#define LVM_GETIMAGELIST        (LVM_FIRST+2)
+#define LVM_SETIMAGELIST        (LVM_FIRST+3)
+#define LVM_GETITEMCOUNT        (LVM_FIRST+4)
+#define LVM_GETITEM32A          (LVM_FIRST+5)
+#define LVM_GETITEM32W          (LVM_FIRST+75)
+#define LVM_GETITEM             WINELIB_NAME_AW(LVM_GETITEM)
+#define LVM_SETITEM32A          (LVM_FIRST+6)
+#define LVM_SETITEM32W          (LVM_FIRST+76)
+#define LVM_SETITEM             WINELIB_NAME_AW(LVM_SETITEM)
+#define LVM_INSERTITEM32A       (LVM_FIRST+7)
+#define LVM_INSERTITEM32W       (LVM_FIRST+77)
+#define LVM_INSERTITEM          WINELIB_NAME_AW(LVM_INSERTITEM)
+#define LVM_DELETEITEM          (LVM_FIRST+8)
+#define LVM_DELETEALLITEMS      (LVM_FIRST+9)
+#define LVM_GETCALLBACKMASK     (LVM_FIRST+10)
+#define LVM_SETCALLBACKMASK     (LVM_FIRST+11)
+#define LVM_GETNEXTITEM         (LVM_FIRST+12)
+#define LVM_FINDITEM32A         (LVM_FIRST+13)
+#define LVM_FINDITEM32W         (LVM_FIRST+83)
+#define LVM_FINDITEM            WINELIB_NAME_AW(LVM_FINDITEM)
+#define LVM_GETITEMRECT         (LVM_FIRST+14)
+#define LVM_SETITEMPOSITION     (LVM_FIRST+15)
+#define LVM_GETITEMPOSITION     (LVM_FIRST+16)
+#define LVM_GETSTRINGWIDTH32A   (LVM_FIRST+17)
+#define LVM_GETSTRINGWIDTH32W   (LVM_FIRST+87)
+#define LVM_GETSTRINGWIDTH      WINELIB_NAME_AW(LVM_GETSTRINGWIDTH)
+#define LVM_HITTEST             (LVM_FIRST+18)
+#define LVM_ENSUREVISIBLE       (LVM_FIRST+19)
+#define LVM_SCROLL              (LVM_FIRST+20)
+#define LVM_REDRAWITEMS         (LVM_FIRST+21)
+#define LVM_ARRANGE             (LVM_FIRST+22)
+#define LVM_EDITLABEL32A        (LVM_FIRST+23)
+#define LVM_EDITLABEL32W        (LVM_FIRST+118)
+#define LVM_EDITLABEL           WINELIB_NAME_AW(LVM_EDITLABEL)
+#define LVM_GETEDITCONTROL      (LVM_FIRST+24)
+#define LVM_GETCOLUMN32A        (LVM_FIRST+25)
+#define LVM_GETCOLUMN32W        (LVM_FIRST+95)
+#define LVM_GETCOLUMN           WINELIB_NAME_AW(LVM_GETCOLUMN)
+#define LVM_SETCOLUMN32A        (LVM_FIRST+26)
+#define LVM_SETCOLUMN32W        (LVM_FIRST+96)
+#define LVM_SETCOLUMN           WINELIB_NAME_AW(LVM_SETCOLUMN)
+#define LVM_INSERTCOLUMN32A     (LVM_FIRST+27)
+#define LVM_INSERTCOLUMN32W     (LVM_FIRST+97)
+#define LVM_INSERTCOLUMN        WINELIB_NAME_AW(LVM_INSERTCOLUMN)
+#define LVM_DELETECOLUMN        (LVM_FIRST+28)
+#define LVM_GETCOLUMNWIDTH      (LVM_FIRST+29)
+#define LVM_GETHEADER           (LVM_FIRST+30)
+
+#define LVM_SORTITEMS           (LVM_FIRST+48)
+#define LVM_GETSELECTEDCOUNT    (LVM_FIRST+50)
+
+#define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
+#define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
+
+
+#define LVN_FIRST               (0U-100U)
+#define LVN_LAST                (0U-199U)
+#define LVN_ITEMCHANGING        (LVN_FIRST-0)
+#define LVN_ITEMCHANGED         (LVN_FIRST-1)
+#define LVN_INSERTITEM          (LVN_FIRST-2)
+#define LVN_DELETEITEM          (LVN_FIRST-3)
+#define LVN_DELETEALLITEMS      (LVN_FIRST-4)
+#define LVN_BEGINLABELEDIT32A   (LVN_FIRST-5)
+#define LVN_BEGINLABELEDIT32W   (LVN_FIRST-75)
+#define LVN_BEGINLABELEDIT WINELIB_NAME_AW(LVN_BEGINLABELEDIT)
+#define LVN_ENDLABELEDIT32A     (LVN_FIRST-6)
+#define LVN_ENDLABELEDIT32W     (LVN_FIRST-76)
+#define LVN_ENDLABELEDIT WINELIB_NAME_AW(LVN_ENDLABELEDIT)
+#define LVN_COLUMNCLICK         (LVN_FIRST-8)
+#define LVN_BEGINDRAG           (LVN_FIRST-9)
+#define LVN_BEGINRDRAG          (LVN_FIRST-11)
+#define LVN_ODCACHEHINT         (LVN_FIRST-13)
+#define LVN_ODFINDITEM32A       (LVN_FIRST-52)
+#define LVN_ODFINDITEM32W       (LVN_FIRST-79)
+#define LVN_ODFINDITEM WINELIB_NAME_AW(LVN_ODFINDITEM)
+#define LVN_ITEMACTIVATE        (LVN_FIRST-14)
+#define LVN_ODSTATECHANGED      (LVN_FIRST-15)
+#define LVN_HOTTRACK            (LVN_FIRST-21)
+#define LVN_GETDISPINFO32A      (LVN_FIRST-50)
+#define LVN_GETDISPINFO32W      (LVN_FIRST-77)
+#define LVN_GETDISPINFO WINELIB_NAME_AW(LVN_GETDISPINFO)
+#define LVN_SETDISPINFO32A      (LVN_FIRST-51)
+#define LVN_SETDISPINFO32W      (LVN_FIRST-78)
+#define LVN_SETDISPINFO WINELIB_NAME_AW(LVN_SETDISPINFO)
+
+
+typedef struct tagLVITEMA
+{
+    UINT32 mask;
+    INT32  iItem;
+    INT32  iSubItem;
+    UINT32 state;
+    UINT32 stateMask;
+    LPSTR  pszText;
+    INT32  cchTextMax;
+    INT32  iImage;
+    LPARAM lParam;
+    INT32  iIndent;	/* (_WIN32_IE >= 0x0300) */
+} LVITEM32A, *LPLVITEM32A;
+
+typedef struct tagLVITEMW
+{
+    UINT32 mask;
+    INT32  iItem;
+    INT32  iSubItem;
+    UINT32 state;
+    UINT32 stateMask;
+    LPWSTR pszText;
+    INT32  cchTextMax;
+    INT32  iImage;
+    LPARAM lParam;
+    INT32  iIndent;	/* (_WIN32_IE >= 0x0300) */
+} LVITEM32W, *LPLVITEM32W;
+
+#define LVITEM32   WINELIB_NAME_AW(LVITEM)
+#define LPLVITEM32 WINELIB_NAME_AW(LPLVITEM)
+
+#define LVITEM_V1_SIZE32A CCSIZEOF_STRUCT(LVITEM32A, lParam)
+#define LVITEM_V1_SIZE32W CCSIZEOF_STRUCT(LVITEM32W, lParam)
+#define LVITEM_V1_SIZE WINELIB_NAME_AW(LVITEM_V1_SIZE)
+
+#define LV_ITEM LVITEM
+
+/* Tab Control */
+
+#define WC_TABCONTROL16		 "SysTabControl"
+#define WC_TABCONTROL32A	 "SysTabControl32"
+#define WC_TABCONTROL32W	L"SysTabControl32"
+
+#define WC_TABCONTROL		WINELIB_NAME_AW(WC_TABCONTROL)
+
+#define TCM_FIRST		0x1300
+
+#define	TCM_INSERTITEM		(TCM_FIRST + 7)
+#define TCM_GETCURSEL		(TCM_FIRST + 11)
+
+#define TCIF_TEXT		0x0001
+#define TCIF_IMAGE		0x0002
+#define TCIF_RTLREADING		0x0004
+#define TCIF_PARAM		0x0008
+
+typedef struct tagTCITEM {
+    UINT32 mask;
+    UINT32 lpReserved1;
+    UINT32 lpReserved2;
+    LPSTR  pszText;
+    int    cchTextMax;
+    int    iImage;
+    LPARAM lParam;
+} TCITEM, *LPTCITEM;
+
+#define TCN_FIRST               (0U-550U)
+#define TCN_LAST                (0U-580U)
+#define TCN_KEYDOWN             (TCN_FIRST - 0)
+#define TCN_SELCHANGE		(TCN_FIRST - 1)
+#define TCN_SELCHANGING         (TCN_FIRST - 2)
+
+typedef struct tagLVCOLUMNA
+{
+    UINT32 mask;
+    INT32  fmt;
+    INT32  cx;
+    LPSTR  pszText;
+    INT32  cchTextMax;
+    INT32  iSubItem;
+    INT32  iImage;  /* (_WIN32_IE >= 0x0300) */
+    INT32  iOrder;  /* (_WIN32_IE >= 0x0300) */
+} LVCOLUMN32A, *LPLVCOLUMN32A;
+
+typedef struct tagLVCOLUMNW
+{
+    UINT32 mask;
+    INT32  fmt;
+    INT32  cx;
+    LPWSTR pszText;
+    INT32  cchTextMax;
+    INT32  iSubItem;
+    INT32  iImage;	/* (_WIN32_IE >= 0x0300) */
+    INT32  iOrder;	/* (_WIN32_IE >= 0x0300) */
+} LVCOLUMN32W, *LPLVCOLUMN32W;
+
+#define LVCOLUMN   WINELIB_NAME_AW(LVCOLUMN)
+#define LPLVCOLUMN WINELIB_NAME_AW(LPLVCOLUMN)
+
+#define LVCOLUMN_V1_SIZE32A CCSIZEOF_STRUCT(LVCOLUMN32A, iSubItem)
+#define LVCOLUMN_V1_SIZE32W CCSIZEOF_STRUCT(LVCOLUMN32W, iSubItem)
+#define LVCOLUMN_V1_SIZE WINELIB_NAME_AW(LVCOLUMN_V1_SIZE)
+
+#define LV_COLUMN       LVCOLUMN
+
 
 typedef struct tagNMLISTVIEW
-{   NMHDR   hdr;
-    int     iItem;
-    int     iSubItem;
+{
+    NMHDR   hdr;
+    INT32   iItem;
+    INT32   iSubItem;
     UINT32  uNewState;
     UINT32  uOldState;
     UINT32  uChanged;
     POINT32 ptAction;
     LPARAM  lParam;
-} NMLISTVIEW,*LPNMLISTVIEW;
+} NMLISTVIEW, *LPNMLISTVIEW;
+
+#define LPNM_LISTVIEW   LPNMLISTVIEW
+#define NM_LISTVIEW     NMLISTVIEW
 
 
-#define LV_DISPINFOA    NMLVDISPINFOA
-#define LV_DISPINFOW    NMLVDISPINFOW
+typedef struct tagLVDISPINFO
+{
+    NMHDR     hdr;
+    LVITEM32A item;
+} NMLVDISPINFO32A, *LPNMLVDISPINFO32A;
+
+typedef struct tagLVDISPINFOW
+{
+    NMHDR     hdr;
+    LVITEM32W item;
+} NMLVDISPINFO32W, *LPNMLVDISPINFO32W;
+
+#define NMLVDISPINFO   WINELIB_NAME_AW(NMLVDISPINFO)
+#define LPNMLVDISPINFO WINELIB_NAME_AW(LPNMLVDISPINFO)
 
 #define LV_DISPINFO     NMLVDISPINFO
 
-typedef struct tagLVDISPINFO {
-    NMHDR hdr;
-    LVITEMA item;
-} NMLVDISPINFOA, *LPNMLVDISPINFOA;
 
-typedef struct tagLVDISPINFOW {
-    NMHDR hdr;
-    LVITEMW item;
-} NMLVDISPINFOW, * LPNMLVDISPINFOW;
+typedef INT32 (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
 
-#define  NMLVDISPINFO           NMLVDISPINFOA
+#define ListView_SetBkColor(hwnd,clrBk) \
+    (BOOL32)SendMessage32A((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
+#define ListView_GetImageList(hwnd,iImageList) \
+    (HIMAGELIST)SendMessage32A((hwnd),LVM_GETIMAGELIST,(WPARAM)(INT32)(iImageList),0L)
+#define ListView_SetImageList(hwnd,himl,iImageList) \
+    (HIMAGELIST)(UINT32)SendMessage32A((hwnd),LVM_SETIMAGELIST,(WPARAM32)(iImageList),(LPARAM)(UINT32)(HIMAGELIST)(himl))
+#define ListView_GetItemCount(hwnd) \
+    (INT32)SendMessage32A((hwnd),LVM_GETITEMCOUNT,0,0L)
+#define ListView_GetItem32A(hwnd,pitem) \
+    (BOOL32)SendMessage32A((hwnd),LVM_GETITEM32A,0,(LPARAM)(LVITEM32A *)(pitem))
+#define ListView_GetItem32W(hwnd,pitem) \
+    (BOOL32)SendMessage32W((hwnd),LVM_GETITEM32W,0,(LPARAM)(LVITEM32W *)(pitem))
+#define ListView_GetItem WINELIB_NAME_AW(ListView_GetItem)
+#define ListView_InsertItem32A(hwnd,pitem) \
+    (INT32)SendMessage32A((hwnd),LVM_INSERTITEM32A,0,(LPARAM)(const LVITEM32A *)(pitem))
+#define ListView_InsertItem32W(hwnd,pitem) \
+    (INT32)SendMessage32W((hwnd),LVM_INSERTITEM32W,0,(LPARAM)(const LVITEM32W *)(pitem))
+#define ListView_InsertItem WINELIB_NAME_AW(ListView_InsertItem)
+#define ListView_DeleteAllItems(hwnd) \
+    (BOOL32)SendMessage32A((hwnd),LVM_DELETEALLITEMS,0,0L)
+#define ListView_InsertColumn32A(hwnd,iCol,pcol) \
+    (INT32)SendMessage32A((hwnd),LVM_INSERTCOLUMN32A,(WPARAM32)(INT32)(iCol),(LPARAM)(const LVCOLUMN32A *)(pcol))
+#define ListView_InsertColumn32W(hwnd,iCol,pcol) \
+    (INT32)SendMessage32W((hwnd),LVM_INSERTCOLUMN32W,(WPARAM32)(INT32)(iCol),(LPARAM)(const LVCOLUMN32W *)(pcol))
+#define ListView_InsertColumn WINELIB_NAME_AW(ListView_InsertColumn)
+#define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) \
+    (BOOL32)SendMessage32A((hwndLV),LVM_SORTITEMS,(WPARAM32)(LPARAM)_lPrm,(LPARAM)(PFNLVCOMPARE)_pfnCompare)
+#define ListView_SetItemPosition(hwndLV, i, x, y) \
+    (BOOL32)SendMessage32A((hwndLV),LVM_SETITEMPOSITION,(WPARAM32)(INT32)(i),MAKELPARAM((x),(y)))
+#define ListView_GetSelectedCount(hwndLV) \
+    (UINT32)SendMessage32A((hwndLV),LVM_GETSELECTEDCOUNT,0,0L)
+
+
+/* ComboBoxEx control */
+
+#define WC_COMBOBOXEX32A        "ComboBoxEx32"
+#define WC_COMBOBOXEX32W        L"ComboBoxEx32"
+#define WC_COMBOBOXEX           WINELIB_NAME_AW(WC_COMBOBOXEX)
+
+#define CBEM_INSERTITEM32A      (WM_USER+1)
+#define CBEM_INSERTITEM32W      (WM_USER+11)
+#define CBEM_INSERTITEM         WINELIB_NAME_AW(CBEM_INSERTITEM)
+#define CBEM_SETIMAGELIST       (WM_USER+2)
+#define CBEM_GETIMAGELIST       (WM_USER+3)
+#define CBEM_GETITEM32A         (WM_USER+4)
+#define CBEM_GETITEM32W         (WM_USER+13)
+#define CBEM_GETITEM            WINELIB_NAME_AW(CBEM_GETITEM)
+#define CBEM_SETITEM32A         (WM_USER+5)
+#define CBEM_SETITEM32W         (WM_USER+12)
+#define CBEM_SETITEM            WINELIB_NAME_AW(CBEM_SETITEM)
+#define CBEM_GETCOMBOCONTROL    (WM_USER+6)
+#define CBEM_GETEDITCONTROL     (WM_USER+7)
+#define CBEM_SETEXSTYLE         (WM_USER+8)
+#define CBEM_GETEXSTYLE         (WM_USER+9)
+#define CBEM_GETEXTENDEDSTYLE   (WM_USER+9)
+#define CBEM_SETEXTENDEDSTYLE   (WM_USER+14)
+#define CBEM_HASEDITCHANGED     (WM_USER+10)
+#define CBEM_SETUNICODEFORMAT   CCM_SETUNICODEFORMAT
+#define CBEM_GETUNICODEFORMAT   CCM_GETUNICODEFORMAT
+
+#define CBEN_FIRST              (0U-800U)
+#define CBEN_LAST               (0U-830U)
+
+
+/* Hotkey control */
+
+#define HOTKEY_CLASS16          "msctls_hotkey"
+#define HOTKEY_CLASS32A         "msctls_hotkey32"
+#define HOTKEY_CLASS32W         L"msctls_hotkey32"
+#define HOTKEY_CLASS            WINELIB_NAME_AW(HOTKEY_CLASS)
+
+#define HOTKEYF_SHIFT           0x01
+#define HOTKEYF_CONTROL         0x02
+#define HOTKEYF_ALT             0x04
+#define HOTKEYF_EXT             0x08
+
+#define HKCOMB_NONE             0x0001
+#define HKCOMB_S                0x0002
+#define HKCOMB_C                0x0004
+#define HKCOMB_A                0x0008
+#define HKCOMB_SC               0x0010
+#define HKCOMB_SA               0x0020
+#define HKCOMB_CA               0x0040
+#define HKCOMB_SCA              0x0080
+
+#define HKM_SETHOTKEY           (WM_USER+1)
+#define HKM_GETHOTKEY           (WM_USER+2)
+#define HKM_SETRULES            (WM_USER+3)
+
+
+/* animate control */
+
+#define ANIMATE_CLASS32A        "SysAnimate32"
+#define ANIMATE_CLASS32W        L"SysAnimate32"
+#define ANIMATE_CLASS           WINELIB_NAME_AW(ANIMATE_CLASS)
+
+#define ACS_CENTER              0x0001
+#define ACS_TRANSPARENT         0x0002
+#define ACS_AUTOPLAY            0x0004
+#define ACS_TIMER               0x0008  /* no threads, just timers */
+
+#define ACM_OPEN32A             (WM_USER+100)
+#define ACM_OPEN32W             (WM_USER+103)
+#define ACM_OPEN                WINELIB_NAME_AW(ACM_OPEN)
+#define ACM_PLAY                (WM_USER+101)
+#define ACM_STOP                (WM_USER+102)
+
+#define ACN_START               1
+#define ACN_STOP                2
+
+#ifndef __WINE__
+#define Animate_Create(hwndP,id,dwStyle,hInstance) \
+    CreateWindow(ANIMATE_CLASS,NULL,dwStyle,0,0,0,0,hwndP,(HMENU32)(id),hInstance,NULL)
+#define Animate_Open(hwnd,szName) \
+    (BOOL32)SNDMSG(hwnd,ACM_OPEN,0,(LPARAM)(LPTSTR)(szName))
+#define Animate_OpenEx(hwnd,hInst,szName) \
+    (BOOL32)SNDMSG(hwnd,ACM_OPEN,(WPARAM32)hInst,(LPARAM)(LPTSTR)(szName))
+#define Animate_Play(hwnd,from,to,rep) \
+    (BOOL32)SNDMSG(hwnd,ACM_PLAY,(WPARAM32)(UINT32)(rep),(LPARAM)MAKELONG(from,to))
+#define Animate_Stop(hwnd) \
+    (BOOL32)SNDMSG(hwnd,ACM_STOP,0,0)
+#define Animate_Close(hwnd) \
+    Animate_Open(hwnd,NULL)
+#define Animate_Seek(hwnd,frame) \
+    Animate_Play(hwnd,frame,frame,1)
+#endif  /* __WINE__ */
+
+
+
+/**************************************************************************
+ *  UNDOCUMENTED functions
+ */
+
+/* local heap memory functions */
+
+LPVOID WINAPI COMCTL32_Alloc (DWORD dwSize);
+LPVOID WINAPI COMCTL32_ReAlloc (LPVOID lpSrc, DWORD dwSize);
+BOOL32 WINAPI COMCTL32_Free (LPVOID lpMem);
+DWORD  WINAPI COMCTL32_GetSize (LPVOID lpMem);
+
+
+/* Dynamic Storage Array */
+
+typedef struct _DSA
+{
+    INT32  nItemCount;
+    LPVOID pData;
+    INT32  nMaxCount;
+    INT32  nItemSize;
+    INT32  nGrow;
+} DSA, *HDSA;
+
+HDSA   WINAPI DSA_Create (INT32 nSize, INT32 nGrow);
+BOOL32 WINAPI DSA_DeleteAllItems (const HDSA hdsa);
+INT32  WINAPI DSA_DeleteItem (const HDSA hdsa, INT32 nIndex);
+BOOL32 WINAPI DSA_Destroy (const HDSA hdsa);
+BOOL32 WINAPI DSA_GetItem (const HDSA hdsa, INT32 nIndex, LPVOID pDest);
+LPVOID WINAPI DSA_GetItemPtr (const HDSA hdsa, INT32 nIndex);
+INT32  WINAPI DSA_InsertItem (const HDSA hdsa, INT32 nIndex, LPVOID pSrc);
+BOOL32 WINAPI DSA_SetItem (const HDSA hdsa, INT32 nIndex, LPVOID pSrc);
+
+
+/* Dynamic Pointer Array */
+
+typedef struct _DPA
+{
+    INT32    nItemCount;
+    LPVOID   *ptrs; 
+    HANDLE32 hHeap;
+    INT32    nGrow;
+    INT32    nMaxCount;
+} DPA, *HDPA;
+
+HDPA   WINAPI DPA_Create (INT32 nGrow);
+HDPA   WINAPI DPA_CreateEx (INT32 nGrow, HANDLE32 hHeap);
+BOOL32 WINAPI DPA_Destroy (const HDPA hdpa);
+HDPA   WINAPI DPA_Clone (const HDPA hdpa, const HDPA hdpaNew);
+LPVOID WINAPI DPA_GetPtr (const HDPA hdpa, INT32 i);
+INT32  WINAPI DPA_GetPtrIndex (const HDPA hdpa, LPVOID p);
+BOOL32 WINAPI DPA_Grow (const HDPA pdpa, INT32 cp);
+BOOL32 WINAPI DPA_SetPtr (const HDPA hdpa, INT32 i, LPVOID p);
+INT32  WINAPI DPA_InsertPtr (const HDPA hdpa, INT32 i, LPVOID p);
+LPVOID WINAPI DPA_DeletePtr (const HDPA hdpa, INT32 i);
+BOOL32 WINAPI DPA_DeleteAllPtrs (const HDPA hdpa);
+
+typedef INT32 (CALLBACK *PFNDPACOMPARE)(LPVOID p1, LPVOID p2, LPARAM lParam);
+BOOL32 WINAPI DPA_Sort (const HDPA hdpa, PFNDPACOMPARE pfnCompare, LPARAM lParam);
+
+#define DPAS_SORTED             0x0001
+#define DPAS_INSERTBEFORE       0x0002
+#define DPAS_INSERTAFTER        0x0004
+ 
+INT32 WINAPI DPA_Search (const HDPA hdpa, LPVOID pFind, INT32 nStart,
+			 PFNDPACOMPARE pfnCompare,
+			 LPARAM lParam, UINT32 uOptions);
+
+#define DPA_GetPtrCount(hdpa)  (*(INT32*)(hdpa))
+#define DPA_GetPtrPtr(hdpa)    (*((LPVOID**)((BYTE*)(hdpa)+sizeof(INT32))))
+#define DPA_FastGetPtr(hdpa,i) (DPA_GetPtrPtr(hdpa)[i])
 
 
 #endif  /* __WINE_COMMCTRL_H */