Add missing definitions required by the Control Spy examples.

diff --git a/include/commctrl.h b/include/commctrl.h
index 1e892b2..8685bd5 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -1036,6 +1036,23 @@
 #define TBN_GETINFOTIP WINELIB_NAME_AW(TBN_GETINFOTIP)
 
 
+typedef struct _NMTBCUSTOMDRAW
+{
+    NMCUSTOMDRAW nmcd;
+    HBRUSH hbrMonoDither;
+    HBRUSH hbrLines;
+    HPEN hpenLines;
+    COLORREF clrText;
+    COLORREF clrMark;
+    COLORREF clrTextHighlight;
+    COLORREF clrBtnFace;
+    COLORREF clrBtnHighlight;
+    COLORREF clrHighlightHotTrack;
+    RECT rcText;
+    int nStringBkMode;
+    int nHLStringBkMode;
+} NMTBCUSTOMDRAW, *LPNMTBCUSTOMDRAW;
+
 /* This is just for old CreateToolbar. */
 /* Don't use it in new programs. */
 typedef struct _OLDTBBUTTON {
@@ -1162,6 +1179,14 @@
 #define TBBUTTONINFO   WINELIB_NAME_AW(TBBUTTONINFO)
 #define LPTBBUTTONINFO WINELIB_NAME_AW(LPTBBUTTONINFO)
 
+typedef struct tagNMTBHOTITEM
+{
+    NMHDR hdr;
+    int idOld;
+    int idNew;
+    DWORD dwFlags;
+} NMTBHOTITEM, *LPNMTBHOTITEM;
+
 typedef struct tagNMTBGETINFOTIPA
 {
     NMHDR  hdr;
@@ -1183,6 +1208,31 @@
 #define NMTBGETINFOTIP   WINELIB_NAME_AW(NMTBGETINFOFTIP)
 #define LPNMTBGETINFOTIP WINELIB_NAME_AW(LPNMTBGETINFOTIP)
 
+typedef struct
+{
+    NMHDR hdr;
+    DWORD dwMask;
+    int idCommand;
+    DWORD lParam;
+    int iImage;
+    LPSTR pszText;
+    int cchText;
+} NMTBDISPINFOA, *LPNMTBDISPINFOA;
+
+typedef struct
+{
+    NMHDR hdr;
+    DWORD dwMask;
+    int idCommand;
+    DWORD lParam;
+    int iImage;
+    LPWSTR pszText;
+    int cchText;
+} NMTBDISPINFOW, *LPNMTBDISPINFOW;
+
+#define NMTBDISPINFO WINELIB_NAME_AW(NMTBDISPINFO)
+#define LPNMTBDISPINFO WINELIB_NAME_AW(LPNMTBDISPINFO)
+
 typedef struct tagNMTOOLBARA
 {
     NMHDR    hdr;
@@ -2182,7 +2232,17 @@
     LPARAM lParam;
 } NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW;
 
+#define NMTVGETINFOTIP WINELIB_NAME_AW(NMTVGETINFOTIP)
+#define LPNMTVGETINFOTIP WINELIB_NAME_AW(LPNMTVGETINFOTIP)
 
+typedef struct tagTVKEYDOWN
+{
+    NMHDR hdr;
+    WORD wVKey;
+    UINT flags;
+} NMTVKEYDOWN, *LPNMTVKEYDOWN;
+
+#define TV_KEYDOWN      NMTVKEYDOWN
 
 #define TreeView_InsertItemA(hwnd, phdi) \
   (HTREEITEM)SendMessageA((hwnd), TVM_INSERTITEMA, 0, \
@@ -2369,18 +2429,6 @@
   SendMessageA((hwndTV), TVM_SETITEM, 0, (LPARAM)(TV_ITEM *)&_TVi); \
 }
 
-typedef struct {
-  NMHDR hdr;
-  WORD  wVKey;
-  UINT  flags;
-} TV_KEYDOWN;
-
-
-
-
-
-
-
 
 /* Listview control */
 
@@ -2609,7 +2657,6 @@
 #define LVM_GETHOVERTIME        (LVM_FIRST+72)
 #define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73)
 #define LVM_SETTOOLTIPS         (LVM_FIRST+74)
-
 #define LVM_GETTOOLTIPS         (LVM_FIRST+78)
 
 #define LVN_FIRST               (0U-100U)
@@ -2704,6 +2751,7 @@
 } LVBKIMAGEW, *LPLVBKIMAGEW;
 
 #define LVBKIMAGE WINELIB_NAME_AW(LVBKIMAGE)
+#define LPLVBKIMAGE WINELIB_NAME_AW(LPLVBKIMAGE)
 
 #define LVBKIF_SOURCE_NONE      0x00000000
 #define LVBKIF_SOURCE_HBITMAP   0x00000001
@@ -2774,9 +2822,21 @@
     LPARAM  lParam;
 } NMLISTVIEW, *LPNMLISTVIEW;
 
-#define LPNM_LISTVIEW   LPNMLISTVIEW
 #define NM_LISTVIEW     NMLISTVIEW
+#define LPNM_LISTVIEW   LPNMLISTVIEW
 
+typedef struct tagNMITEMACTIVATE
+{
+    NMHDR hdr;
+    int iItem;
+    int iSubItem;
+    UINT uNewState;
+    UINT uOldState;
+    UINT uChanged;
+    POINT ptAction;
+    LPARAM lParam;
+    UINT uKeyFlags;
+} NMITEMACTIVATE, *LPNMITEMACTIVATE;
 
 typedef struct tagLVDISPINFO
 {
@@ -2804,6 +2864,31 @@
 
 #define LV_KEYDOWN     NMLVKEYDOWN
 
+typedef struct tagNMLVGETINFOTIPA
+{
+    NMHDR hdr;
+    DWORD dwFlags;
+    LPSTR pszText;
+    int cchTextMax;
+    int iItem;
+    int iSubItem;
+    LPARAM lParam;
+} NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
+
+typedef struct tagNMLVGETINFOTIPW
+{
+    NMHDR hdr;
+    DWORD dwFlags;
+    LPWSTR pszText;
+    int cchTextMax;
+    int iItem;
+    int iSubItem;
+    LPARAM lParam;
+} NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
+
+#define NMLVGETINFOTIP WINELIB_NAME_AW(NMLVGETINFOTIP)
+#define LPNMLVGETINFOTIP WINELIB_NAME_AW(LPNMLVGETINFOTIP)
+
 typedef struct tagLVHITTESTINFO
 {
     POINT pt;
@@ -2837,6 +2922,16 @@
 
 typedef INT CALLBACK (*PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
 
+#define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLCUSTOMDRW, clrTextBk)
+
+typedef struct tagNMLVCUSTOMDRAW
+{
+    NMCUSTOMDRAW nmcd;
+    COLORREF clrText;
+    COLORREF clrTextBk;
+    int iSubItem;
+} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
+
 typedef struct tagNMLVCACHEHINT
 {
 	NMHDR	hdr;
@@ -2848,15 +2943,29 @@
 #define PNM_CACHEHINT  LPNMLVCACHEHINT
 #define NM_CACHEHINT   NMLVCACHEHINT
 
-#define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLCUSTOMDRW, clrTextBk)
-
-typedef struct tagNMLVCUSTOMDRAW
+typedef struct tagNMLVFINDITEM
 {
-    NMCUSTOMDRAW nmcd;
-    COLORREF clrText;
-    COLORREF clrTextBk;
-    int iSubItem;
-} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
+    NMHDR hdr;
+    int iStart;
+    LVFINDINFO lvfi;
+} NMLVFINDITEM, *LPNMLVFINDITEM;
+
+#define NM_FINDITEM NMLVFINDITEM
+#define PNM_FINDITEM LPNMLVFINDITEM
+#define LPNM_FINDITEM LPNMLVFINDITEM
+
+typedef struct tagNMLVODSTATECHANGE
+{
+    NMHDR hdr;
+    int iFrom;
+    int iTo;
+    UINT uNewState;
+    UINT uOldState;
+} NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE;
+
+#define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE
+#define LPNM_ODSTATECHANGE LPNMLVODSTATECHANGE
+#define NM_ODSTATECHANGE NMLVODSTATECHANGE
 
 #define ListView_SetTextBkColor(hwnd,clrBk) \
     (BOOL)SendMessageA((hwnd),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
@@ -3183,6 +3292,14 @@
 #define TCN_SELCHANGING         (TCN_FIRST - 2)
 #define TCN_GETOBJECT      (TCN_FIRST - 3)
 
+typedef struct tagTCKEYDOWN
+{
+    NMHDR hdr;
+    WORD wVKey;
+    UINT flags;
+} NMTCKEYDOWN;
+
+#define TC_KEYDOWN              NMTCKEYDOWN
 
 /* ComboBoxEx control */
 
@@ -3247,6 +3364,13 @@
 #define CBEN_DRAGBEGINW         (CBEN_FIRST - 9)
 #define CBEN_DRAGBEGIN WINELIB_NAME_AW(CBEN_DRAGBEGIN)
 
+#define CBES_EX_NOEDITIMAGE          0x00000001
+#define CBES_EX_NOEDITIMAGEINDENT    0x00000002
+#define CBES_EX_PATHWORDBREAKPROC    0x00000004
+#define CBES_EX_NOSIZELIMIT          0x00000008
+#define CBES_EX_CASESENSITIVE        0x00000010
+
+
 typedef struct tagCOMBOBOXEXITEMA
 {
     UINT mask;
@@ -3259,8 +3383,7 @@
     int iIndent;
     LPARAM lParam;
 } COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA;
-typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA;
-
+typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA; /* Yes, there's a BOX missing */
 
 typedef struct tagCOMBOBOXEXITEMW
 {
@@ -3274,9 +3397,11 @@
     int iIndent;
     LPARAM lParam;
 } COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
+typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW; /* Yes, there's a BOX missing */
 
 #define COMBOBOXEXITEM WINELIB_NAME_AW(COMBOBOXEXITEM)
-
+#define PCOMBOBOXEXITEM WINELIB_NAME_AW(PCOMBOBOXEXITEM)
+#define PCCOMBOBOXEXITEM WINELIB_NAME_AW(PCCOMBOEXITEM) /* Yes, there's a BOX missing */
 
 #define CBENF_KILLFOCUS               1
 #define CBENF_RETURN                  2
@@ -3307,22 +3432,39 @@
 #define LPNMCBEENDEDIT WINELIB_NAME_AW(LPNMCBEENDEDIT)
 #define PNMCBEENDEDIT WINELIB_NAME_AW(PNMCBEENDEDIT)
 
-
-typedef struct tagNMCOMBOBOXEXA
+typedef struct
 {
-    NMHDR        hdr;
-    COMBOBOXEXITEMA  ceItem;
+    NMHDR hdr;
+    COMBOBOXEXITEMA ceItem;
 } NMCOMBOBOXEXA, *PNMCOMBOBOXEXA;
 
-typedef struct tagNMCOMBOBOXEXW
+typedef struct
 {
-    NMHDR        hdr;
-    COMBOBOXEXITEMW  ceItem;
+    NMHDR hdr;
+    COMBOBOXEXITEMW ceItem;
 } NMCOMBOBOXEXW, *PNMCOMBOBOXEXW;
 
 #define NMCOMBOBOXEX WINELIB_NAME_AW(NMCOMBOBOXEX)
 #define PNMCOMBOBOXEX WINELIB_NAME_AW(PNMCOMBOBOXEX)
 
+typedef struct
+{
+    NMHDR hdr;
+    int iItemid;
+    char szText[CBEMAXSTRLEN];
+} NMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA;
+
+typedef struct
+{
+    NMHDR hdr;
+    int iItemid;
+    WCHAR szText[CBEMAXSTRLEN];
+} NMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW;
+
+#define NMCBEDRAGBEGIN WINELIB_NAME_AW(NMCBEDRAGBEGIN)
+#define PNMCBEDRAGBEGIN WINELIB_NAME_AW(PNMCBEDRAGBEGIN)
+#define LPNMCBEDRAGBEGIN WINELIB_NAME_AW(LPNMCBEDRAGBEGIN)
+
 
 /* Hotkey control */