[comctl32]
[reactos.git] / reactos / include / psdk / commctrl.h
index 0ed66f5..ebb7dda 100644 (file)
@@ -3,9 +3,12 @@
  * This file is part of the w64 mingw-runtime package.
  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  */
+
 #ifndef _INC_COMMCTRL
 #define _INC_COMMCTRL
 
+#include <_mingw_unicode.h>
+
 #ifndef _WINRESRC_
 #ifndef _WIN32_IE
 #define _WIN32_IE 0x0501
@@ -19,7 +22,7 @@
 
 #ifndef _HRESULT_DEFINED
 #define _HRESULT_DEFINED
-typedef LONG HRESULT;
+typedef _Return_type_success_(return >= 0) LONG HRESULT;
 #endif
 
 #ifndef NOUSER
@@ -68,7 +71,8 @@ extern "C" {
 #define ICC_NATIVEFNTCTL_CLASS 0x2000
 #define ICC_STANDARD_CLASSES 0x4000
 #define ICC_LINK_CLASS 0x8000
-  WINCOMMCTRLAPI WINBOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *);
+
+  WINCOMMCTRLAPI BOOL WINAPI InitCommonControlsEx(_In_ const INITCOMMONCONTROLSEX *);
 
 #define ODT_HEADER 100
 #define ODT_TAB 101
@@ -328,14 +332,57 @@ extern "C" {
 #define ILC_PERITEMMIRROR 0x8000
 
   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Create(int cx,int cy,UINT flags,int cInitial,int cGrow);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Destroy(HIMAGELIST himl);
-  WINCOMMCTRLAPI int WINAPI ImageList_GetImageCount(HIMAGELIST himl);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetImageCount(HIMAGELIST himl,UINT uNewCount);
-  WINCOMMCTRLAPI int WINAPI ImageList_Add(HIMAGELIST himl,HBITMAP hbmImage,HBITMAP hbmMask);
-  WINCOMMCTRLAPI int WINAPI ImageList_ReplaceIcon(HIMAGELIST himl,int i,HICON hicon);
-  WINCOMMCTRLAPI COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl,COLORREF clrBk);
-  WINCOMMCTRLAPI COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST himl);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST himl,int iImage,int iOverlay);
+  WINCOMMCTRLAPI BOOL WINAPI ImageList_Destroy(_In_opt_ HIMAGELIST himl);
+  WINCOMMCTRLAPI int WINAPI ImageList_GetImageCount(_In_ HIMAGELIST himl);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_SetImageCount(
+    _In_ HIMAGELIST himl,
+    _In_ UINT uNewCount);
+
+  WINCOMMCTRLAPI
+  int
+  WINAPI
+  ImageList_Add(
+    _In_ HIMAGELIST himl,
+    _In_ HBITMAP hbmImage,
+    _In_opt_ HBITMAP hbmMask);
+
+  WINCOMMCTRLAPI
+  int
+  WINAPI
+  ImageList_ReplaceIcon(
+    _In_ HIMAGELIST himl,
+    _In_ int i,
+    _In_ HICON hicon);
+
+  WINCOMMCTRLAPI
+  COLORREF
+  WINAPI
+  ImageList_SetBkColor(
+    _In_ HIMAGELIST himl,
+    _In_ COLORREF clrBk);
+
+  WINCOMMCTRLAPI COLORREF WINAPI ImageList_GetBkColor(_In_ HIMAGELIST himl);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_SetOverlayImage(
+    _In_ HIMAGELIST himl,
+    _In_ int iImage,
+    _In_ int iOverlay);
+
+  WINCOMMCTRLAPI
+  HRESULT
+  WINAPI
+  HIMAGELIST_QueryInterface(
+    _In_ HIMAGELIST,
+    _In_ REFIID,
+    _Outptr_ void **);
+
 #define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
 
 #define ILD_NORMAL 0x0
@@ -362,44 +409,132 @@ extern "C" {
 #define ILS_SATURATE 0x4
 #define ILS_ALPHA 0x8
 
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Draw(HIMAGELIST himl,int i,HDC hdcDst,int x,int y,UINT fStyle);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Replace(HIMAGELIST himl,int i,HBITMAP hbmImage,HBITMAP hbmMask);
-  WINCOMMCTRLAPI int WINAPI ImageList_AddMasked(HIMAGELIST himl,HBITMAP hbmImage,COLORREF crMask);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DrawEx(HIMAGELIST himl,int i,HDC hdcDst,int x,int y,int dx,int dy,COLORREF rgbBk,COLORREF rgbFg,UINT fStyle);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS *pimldp);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Remove(HIMAGELIST himl,int i);
-  WINCOMMCTRLAPI HICON WINAPI ImageList_GetIcon(HIMAGELIST himl,int i,UINT flags);
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_Draw(
+    _In_ HIMAGELIST himl,
+    _In_ int i,
+    _In_ HDC hdcDst,
+    _In_ int x,
+    _In_ int y,
+    _In_ UINT fStyle);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_Replace(
+    _In_ HIMAGELIST himl,
+    _In_ int i,
+    _In_ HBITMAP hbmImage,
+    _In_opt_ HBITMAP hbmMask);
+
+  WINCOMMCTRLAPI
+  int
+  WINAPI
+  ImageList_AddMasked(
+    _In_ HIMAGELIST himl,
+    _In_ HBITMAP hbmImage,
+    _In_ COLORREF crMask);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_DrawEx(
+    _In_ HIMAGELIST himl,
+    _In_ int i,
+    _In_ HDC hdcDst,
+    _In_ int x,
+    _In_ int y,
+    _In_ int dx,
+    _In_ int dy,
+    _In_ COLORREF rgbBk,
+    _In_ COLORREF rgbFg,
+    _In_ UINT fStyle);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_DrawIndirect(
+    _In_ IMAGELISTDRAWPARAMS *pimldp);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_Remove(
+    _In_ HIMAGELIST himl,
+    _In_ int i);
+
+  WINCOMMCTRLAPI
+  HICON
+  WINAPI
+  ImageList_GetIcon(
+    _In_ HIMAGELIST himl,
+    _In_ int i,
+    _In_ UINT flags);
+
   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE hi,LPCSTR lpbmp,int cx,int cGrow,COLORREF crMask,UINT uType,UINT uFlags);
   WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE hi,LPCWSTR lpbmp,int cx,int cGrow,COLORREF crMask,UINT uType,UINT uFlags);
 
-#ifdef UNICODE
-#define ImageList_LoadImage ImageList_LoadImageW
-#else
-#define ImageList_LoadImage ImageList_LoadImageA
-#endif
+#define ImageList_LoadImage __MINGW_NAME_AW(ImageList_LoadImage)
 
 #define ILCF_MOVE 0x0
 #define ILCF_SWAP 0x1
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Copy(HIMAGELIST himlDst,int iDst,HIMAGELIST himlSrc,int iSrc,UINT uFlags);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_BeginDrag(HIMAGELIST himlTrack,int iTrack,int dxHotspot,int dyHotspot);
-  WINCOMMCTRLAPI void WINAPI ImageList_EndDrag();
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragEnter(HWND hwndLock,int x,int y);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragLeave(HWND hwndLock);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragMove(int x,int y);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST himlDrag,int iDrag,int dxHotspot,int dyHotspot);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragShowNolock(WINBOOL fShow);
-  WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_GetDragImage(POINT *ppt,POINT *pptHotspot);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_Copy(
+    _In_ HIMAGELIST himlDst,
+    _In_ int iDst,
+    _In_ HIMAGELIST himlSrc,
+    _In_ int iSrc,
+    _In_ UINT uFlags);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_BeginDrag(
+    _In_ HIMAGELIST himlTrack,
+    _In_ int iTrack,
+    _In_ int dxHotspot,
+    _In_ int dyHotspot);
+
+  WINCOMMCTRLAPI void WINAPI ImageList_EndDrag(void);
+  WINCOMMCTRLAPI BOOL WINAPI ImageList_DragEnter(HWND hwndLock,int x,int y);
+  WINCOMMCTRLAPI BOOL WINAPI ImageList_DragLeave(HWND hwndLock);
+  WINCOMMCTRLAPI BOOL WINAPI ImageList_DragMove(int x,int y);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_SetDragCursorImage(
+    _In_ HIMAGELIST himlDrag,
+    _In_ int iDrag,
+    _In_ int dxHotspot,
+    _In_ int dyHotspot);
+
+  WINCOMMCTRLAPI BOOL WINAPI ImageList_DragShowNolock(BOOL fShow);
+
+  _Success_(return != NULL)
+  WINCOMMCTRLAPI
+  HIMAGELIST
+  WINAPI
+  ImageList_GetDragImage(
+    _Out_opt_ POINT *ppt,
+    _Out_opt_ POINT *pptHotspot);
+
 #define ImageList_RemoveAll(himl) ImageList_Remove(himl,-1)
 #define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
 #define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0)
 
 #ifdef __IStream_INTERFACE_DEFINED__
-  WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(LPSTREAM pstm);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Write(HIMAGELIST himl,LPSTREAM pstm);
+  WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(_In_ LPSTREAM pstm);
+  WINCOMMCTRLAPI BOOL WINAPI ImageList_Write(_In_ HIMAGELIST himl, _In_ LPSTREAM pstm);
 #define ILP_NORMAL 0
 #define ILP_DOWNLEVEL 1
-  WINCOMMCTRLAPI HRESULT WINAPI ImageList_ReadEx(DWORD dwFlags,LPSTREAM pstm,REFIID riid,PVOID *ppv);
-  WINCOMMCTRLAPI HRESULT WINAPI ImageList_WriteEx(HIMAGELIST himl,DWORD dwFlags,LPSTREAM pstm);
+  WINCOMMCTRLAPI HRESULT WINAPI ImageList_ReadEx(_In_ DWORD dwFlags, _In_ LPSTREAM pstm, _In_ REFIID riid, _Outptr_ PVOID *ppv);
+  WINCOMMCTRLAPI HRESULT WINAPI ImageList_WriteEx(_In_ HIMAGELIST himl, _In_ DWORD dwFlags, _In_ LPSTREAM pstm);
 #endif
 
 #ifndef IMAGEINFO
@@ -412,12 +547,45 @@ extern "C" {
   } IMAGEINFO,*LPIMAGEINFO;
 #endif
 
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl,int *cx,int *cy);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetIconSize(HIMAGELIST himl,int cx,int cy);
-  WINCOMMCTRLAPI WINBOOL WINAPI ImageList_GetImageInfo(HIMAGELIST himl,int i,IMAGEINFO *pImageInfo);
-  WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST himl1,int i1,HIMAGELIST himl2,int i2,int dx,int dy);
-  WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST himl);
-  WINCOMMCTRLAPI HRESULT WINAPI HIMAGELIST_QueryInterface(HIMAGELIST himl, REFIID riid, void **ppv);
+  _Success_(return != 0)
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_GetIconSize(
+    _In_ HIMAGELIST himl,
+    _Out_opt_ int *cx,
+    _Out_opt_ int *cy);
+
+  _Success_(return != 0)
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_SetIconSize(
+    _In_ HIMAGELIST himl,
+    _In_ int cx,
+    _In_ int cy);
+
+  _Success_(return != 0)
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ImageList_GetImageInfo(
+    _In_ HIMAGELIST himl,
+    _In_ int i,
+    _Out_ IMAGEINFO *pImageInfo);
+
+  WINCOMMCTRLAPI
+  HIMAGELIST
+  WINAPI
+  ImageList_Merge(
+    _In_ HIMAGELIST himl1,
+    _In_ int i1,
+    _In_ HIMAGELIST himl2,
+    _In_ int i2,
+    _In_ int dx,
+    _In_ int dy);
+
+  WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Duplicate(_In_ HIMAGELIST himl);
 
 #endif
 
@@ -426,11 +594,7 @@ extern "C" {
 #define WC_HEADERA "SysHeader32"
 #define WC_HEADERW L"SysHeader32"
 
-#ifdef UNICODE
-#define WC_HEADER WC_HEADERW
-#else
-#define WC_HEADER WC_HEADERA
-#endif
+#define WC_HEADER __MINGW_NAME_AW(WC_HEADER)
 
 #define HDS_HORZ 0x0
 #define HDS_BUTTONS 0x2
@@ -451,17 +615,10 @@ extern "C" {
 
 #define HDFT_HASNOVALUE 0x8000
 
-#ifdef UNICODE
-#define HD_TEXTFILTER HD_TEXTFILTERW
-#define HDTEXTFILTER HD_TEXTFILTERW
-#define LPHD_TEXTFILTER LPHD_TEXTFILTERW
-#define LPHDTEXTFILTER LPHD_TEXTFILTERW
-#else
-#define HD_TEXTFILTER HD_TEXTFILTERA
-#define HDTEXTFILTER HD_TEXTFILTERA
-#define LPHD_TEXTFILTER LPHD_TEXTFILTERA
-#define LPHDTEXTFILTER LPHD_TEXTFILTERA
-#endif
+#define HD_TEXTFILTER __MINGW_NAME_AW(HD_TEXTFILTER)
+#define HDTEXTFILTER __MINGW_NAME_AW(HD_TEXTFILTER)
+#define LPHD_TEXTFILTER __MINGW_NAME_AW(LPHD_TEXTFILTER)
+#define LPHDTEXTFILTER __MINGW_NAME_AW(LPHD_TEXTFILTER)
 
   typedef struct _HD_TEXTFILTERA {
     LPSTR pszText;
@@ -508,15 +665,10 @@ extern "C" {
     void *pvFilter;
   } HDITEMW,*LPHDITEMW;
 
-#ifdef UNICODE
-#define HDITEM HDITEMW
-#define LPHDITEM LPHDITEMW
-#define HDITEM_V1_SIZE HDITEMW_V1_SIZE
-#else
-#define HDITEM HDITEMA
-#define LPHDITEM LPHDITEMA
-#define HDITEM_V1_SIZE HDITEMA_V1_SIZE
-#endif
+#define HDITEM __MINGW_NAME_AW(HDITEM)
+#define LPHDITEM __MINGW_NAME_AW(LPHDITEM)
+
+#define HDITEM_V1_SIZE __MINGW_NAME_AW_EXT(HDITEM,_V1_SIZE)
 
 #define HDI_WIDTH 0x1
 #define HDI_HEIGHT HDI_WIDTH
@@ -555,38 +707,26 @@ extern "C" {
 #define HDM_INSERTITEMA (HDM_FIRST+1)
 #define HDM_INSERTITEMW (HDM_FIRST+10)
 
-#ifdef UNICODE
-#define HDM_INSERTITEM HDM_INSERTITEMW
-#else
-#define HDM_INSERTITEM HDM_INSERTITEMA
-#endif
+#define HDM_INSERTITEM __MINGW_NAME_AW(HDM_INSERTITEM)
 
 #define Header_InsertItem(hwndHD,i,phdi) (int)SNDMSG((hwndHD),HDM_INSERTITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM *)(phdi))
 
 #define HDM_DELETEITEM (HDM_FIRST+2)
-#define Header_DeleteItem(hwndHD,i) (WINBOOL)SNDMSG((hwndHD),HDM_DELETEITEM,(WPARAM)(int)(i),0L)
+#define Header_DeleteItem(hwndHD,i) (BOOL)SNDMSG((hwndHD),HDM_DELETEITEM,(WPARAM)(int)(i),0L)
 
 #define HDM_GETITEMA (HDM_FIRST+3)
 #define HDM_GETITEMW (HDM_FIRST+11)
 
-#ifdef UNICODE
-#define HDM_GETITEM HDM_GETITEMW
-#else
-#define HDM_GETITEM HDM_GETITEMA
-#endif
+#define HDM_GETITEM __MINGW_NAME_AW(HDM_GETITEM)
 
-#define Header_GetItem(hwndHD,i,phdi) (WINBOOL)SNDMSG((hwndHD),HDM_GETITEM,(WPARAM)(int)(i),(LPARAM)(HD_ITEM *)(phdi))
+#define Header_GetItem(hwndHD,i,phdi) (BOOL)SNDMSG((hwndHD),HDM_GETITEM,(WPARAM)(int)(i),(LPARAM)(HD_ITEM *)(phdi))
 
 #define HDM_SETITEMA (HDM_FIRST+4)
 #define HDM_SETITEMW (HDM_FIRST+12)
 
-#ifdef UNICODE
-#define HDM_SETITEM HDM_SETITEMW
-#else
-#define HDM_SETITEM HDM_SETITEMA
-#endif
+#define HDM_SETITEM __MINGW_NAME_AW(HDM_SETITEM)
 
-#define Header_SetItem(hwndHD,i,phdi) (WINBOOL)SNDMSG((hwndHD),HDM_SETITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM *)(phdi))
+#define Header_SetItem(hwndHD,i,phdi) (BOOL)SNDMSG((hwndHD),HDM_SETITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM *)(phdi))
 
 #define HD_LAYOUT HDLAYOUT
 
@@ -596,7 +736,7 @@ extern "C" {
   } HDLAYOUT,*LPHDLAYOUT;
 
 #define HDM_LAYOUT (HDM_FIRST+5)
-#define Header_Layout(hwndHD,playout) (WINBOOL)SNDMSG((hwndHD),HDM_LAYOUT,0,(LPARAM)(HD_LAYOUT *)(playout))
+#define Header_Layout(hwndHD,playout) (BOOL)SNDMSG((hwndHD),HDM_LAYOUT,0,(LPARAM)(HD_LAYOUT *)(playout))
 
 #define HHT_NOWHERE 0x1
 #define HHT_ONHEADER 0x2
@@ -620,7 +760,7 @@ extern "C" {
 #define HDM_HITTEST (HDM_FIRST+6)
 
 #define HDM_GETITEMRECT (HDM_FIRST+7)
-#define Header_GetItemRect(hwnd,iItem,lprc) (WINBOOL)SNDMSG((hwnd),HDM_GETITEMRECT,(WPARAM)(iItem),(LPARAM)(lprc))
+#define Header_GetItemRect(hwnd,iItem,lprc) (BOOL)SNDMSG((hwnd),HDM_GETITEMRECT,(WPARAM)(iItem),(LPARAM)(lprc))
 
 #define HDM_SETIMAGELIST (HDM_FIRST+8)
 #define Header_SetImageList(hwnd,himl) (HIMAGELIST)SNDMSG((hwnd),HDM_SETIMAGELIST,0,(LPARAM)(himl))
@@ -635,10 +775,10 @@ extern "C" {
 #define Header_CreateDragImage(hwnd,i) (HIMAGELIST)SNDMSG((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM)(i),0)
 
 #define HDM_GETORDERARRAY (HDM_FIRST+17)
-#define Header_GetOrderArray(hwnd,iCount,lpi) (WINBOOL)SNDMSG((hwnd),HDM_GETORDERARRAY,(WPARAM)(iCount),(LPARAM)(lpi))
+#define Header_GetOrderArray(hwnd,iCount,lpi) (BOOL)SNDMSG((hwnd),HDM_GETORDERARRAY,(WPARAM)(iCount),(LPARAM)(lpi))
 
 #define HDM_SETORDERARRAY (HDM_FIRST+18)
-#define Header_SetOrderArray(hwnd,iCount,lpi) (WINBOOL)SNDMSG((hwnd),HDM_SETORDERARRAY,(WPARAM)(iCount),(LPARAM)(lpi))
+#define Header_SetOrderArray(hwnd,iCount,lpi) (BOOL)SNDMSG((hwnd),HDM_SETORDERARRAY,(WPARAM)(iCount),(LPARAM)(lpi))
 
 #define HDM_SETHOTDIVIDER (HDM_FIRST+19)
 #define Header_SetHotDivider(hwnd,fPos,dw) (int)SNDMSG((hwnd),HDM_SETHOTDIVIDER,(WPARAM)(fPos),(LPARAM)(dw))
@@ -650,10 +790,10 @@ extern "C" {
 #define Header_GetBitmapMargin(hwnd) (int)SNDMSG((hwnd),HDM_GETBITMAPMARGIN,0,0)
 
 #define HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
-#define Header_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),HDM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
+#define Header_SetUnicodeFormat(hwnd,fUnicode) (BOOL)SNDMSG((hwnd),HDM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
 
 #define HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
-#define Header_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),HDM_GETUNICODEFORMAT,0,0)
+#define Header_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd),HDM_GETUNICODEFORMAT,0,0)
 
 #define HDM_SETFILTERCHANGETIMEOUT (HDM_FIRST+22)
 #define Header_SetFilterChangeTimeout(hwnd,i) (int)SNDMSG((hwnd),HDM_SETFILTERCHANGETIMEOUT,0,(LPARAM)(i))
@@ -687,28 +827,20 @@ extern "C" {
 #define HDN_ENDDRAG (HDN_FIRST-11)
 #define HDN_FILTERCHANGE (HDN_FIRST-12)
 #define HDN_FILTERBTNCLICK (HDN_FIRST-13)
-
-#ifdef UNICODE
-#define HDN_ITEMCHANGING HDN_ITEMCHANGINGW
-#define HDN_ITEMCHANGED HDN_ITEMCHANGEDW
-#define HDN_ITEMCLICK HDN_ITEMCLICKW
-#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKW
-#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKW
-#define HDN_BEGINTRACK HDN_BEGINTRACKW
-#define HDN_ENDTRACK HDN_ENDTRACKW
-#define HDN_TRACK HDN_TRACKW
-#define HDN_GETDISPINFO HDN_GETDISPINFOW
-#else
-#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
-#endif
+#define HDN_BEGINFILTEREDIT (HDN_FIRST-14)
+#define HDN_ENDFILTEREDIT (HDN_FIRST-15)
+#define HDN_ITEMSTATEICONCLICK (HDN_FIRST-16)
+#define HDN_ITEMKEYDOWN (HDN_FIRST-17)
+
+#define HDN_ITEMCHANGING __MINGW_NAME_AW(HDN_ITEMCHANGING)
+#define HDN_ITEMCHANGED __MINGW_NAME_AW(HDN_ITEMCHANGED)
+#define HDN_ITEMCLICK __MINGW_NAME_AW(HDN_ITEMCLICK)
+#define HDN_ITEMDBLCLICK __MINGW_NAME_AW(HDN_ITEMDBLCLICK)
+#define HDN_DIVIDERDBLCLICK __MINGW_NAME_AW(HDN_DIVIDERDBLCLICK)
+#define HDN_BEGINTRACK __MINGW_NAME_AW(HDN_BEGINTRACK)
+#define HDN_ENDTRACK __MINGW_NAME_AW(HDN_ENDTRACK)
+#define HDN_TRACK __MINGW_NAME_AW(HDN_TRACK)
+#define HDN_GETDISPINFO __MINGW_NAME_AW(HDN_GETDISPINFO)
 
 #define HD_NOTIFYA NMHEADERA
 #define HD_NOTIFYW NMHEADERW
@@ -728,13 +860,8 @@ extern "C" {
     HDITEMW *pitem;
   } NMHEADERW,*LPNMHEADERW;
 
-#ifdef UNICODE
-#define NMHEADER NMHEADERW
-#define LPNMHEADER LPNMHEADERW
-#else
-#define NMHEADER NMHEADERA
-#define LPNMHEADER LPNMHEADERA
-#endif
+#define NMHEADER __MINGW_NAME_AW(NMHEADER)
+#define LPNMHEADER __MINGW_NAME_AW(LPNMHEADER)
 
   typedef struct tagNMHDDISPINFOW {
     NMHDR hdr;
@@ -756,13 +883,8 @@ extern "C" {
     LPARAM lParam;
   } NMHDDISPINFOA,*LPNMHDDISPINFOA;
 
-#ifdef UNICODE
-#define NMHDDISPINFO NMHDDISPINFOW
-#define LPNMHDDISPINFO LPNMHDDISPINFOW
-#else
-#define NMHDDISPINFO NMHDDISPINFOA
-#define LPNMHDDISPINFO LPNMHDDISPINFOA
-#endif
+#define NMHDDISPINFO __MINGW_NAME_AW(NMHDDISPINFO)
+#define LPNMHDDISPINFO __MINGW_NAME_AW(LPNMHDDISPINFO)
 
   typedef struct tagNMHDFILTERBTNCLICK {
     NMHDR hdr;
@@ -776,11 +898,7 @@ extern "C" {
 #define TOOLBARCLASSNAMEW L"ToolbarWindow32"
 #define TOOLBARCLASSNAMEA "ToolbarWindow32"
 
-#ifdef UNICODE
-#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
-#else
-#define TOOLBARCLASSNAME TOOLBARCLASSNAMEA
-#endif
+#define TOOLBARCLASSNAME __MINGW_NAME_AW(TOOLBARCLASSNAME)
 
   typedef struct _TBBUTTON {
     int iBitmap;
@@ -831,7 +949,6 @@ extern "C" {
 #define TBSTYLE_CUSTOMERASE 0x2000
 #define TBSTYLE_REGISTERDROP 0x4000
 #define TBSTYLE_TRANSPARENT 0x8000
-#define TBSTYLE_EX_DRAWDDARROWS 0x1
 
 #define BTNS_BUTTON TBSTYLE_BUTTON
 #define BTNS_SEP TBSTYLE_SEP
@@ -844,9 +961,12 @@ extern "C" {
 #define BTNS_SHOWTEXT 0x40
 #define BTNS_WHOLEDROPDOWN 0x80
 
-#define TBSTYLE_EX_MIXEDBUTTONS 0x8
-#define TBSTYLE_EX_HIDECLIPPEDBUTTONS 0x10
-#define TBSTYLE_EX_DOUBLEBUFFER 0x80
+#define TBSTYLE_EX_DRAWDDARROWS         0x00000001
+#define TBSTYLE_EX_MULTICOLUMN          0x00000002
+#define TBSTYLE_EX_VERTICAL             0x00000004
+#define TBSTYLE_EX_MIXEDBUTTONS         0x00000008
+#define TBSTYLE_EX_HIDECLIPPEDBUTTONS   0x00000010 /* don't show partially obscured buttons */
+#define TBSTYLE_EX_DOUBLEBUFFER         0x00000080 /* Double Buffer the toolbar */
 
   typedef struct _NMTBCUSTOMDRAW {
     NMCUSTOMDRAW nmcd;
@@ -957,13 +1077,8 @@ extern "C" {
     LPCWSTR pszValueName;
   } TBSAVEPARAMSW,*LPTBSAVEPARAMW;
 
-#ifdef UNICODE
-#define TBSAVEPARAMS TBSAVEPARAMSW
-#define LPTBSAVEPARAMS LPTBSAVEPARAMSW
-#else
-#define TBSAVEPARAMS TBSAVEPARAMSA
-#define LPTBSAVEPARAMS LPTBSAVEPARAMSA
-#endif
+#define TBSAVEPARAMS __MINGW_NAME_AW(TBSAVEPARAMS)
+#define LPTBSAVEPARAMS __MINGW_NAME_AW(LPTBSAVEPARAMS)
 
 #define TB_SAVERESTOREA (WM_USER+26)
 #define TB_SAVERESTOREW (WM_USER+76)
@@ -1002,15 +1117,10 @@ extern "C" {
 #define TB_SETMAXTEXTROWS (WM_USER+60)
 #define TB_GETTEXTROWS (WM_USER+61)
 
-#ifdef UNICODE
-#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW
-#define TB_SAVERESTORE TB_SAVERESTOREW
-#define TB_ADDSTRING TB_ADDSTRINGW
-#else
-#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA
-#define TB_SAVERESTORE TB_SAVERESTOREA
-#define TB_ADDSTRING TB_ADDSTRINGA
-#endif
+#define TB_GETBUTTONTEXT __MINGW_NAME_AW(TB_GETBUTTONTEXT)
+#define TB_SAVERESTORE __MINGW_NAME_AW(TB_SAVERESTORE)
+#define TB_ADDSTRING __MINGW_NAME_AW(TB_ADDSTRING)
+
 #define TB_GETOBJECT (WM_USER+62)
 #define TB_GETHOTITEM (WM_USER+71)
 #define TB_SETHOTITEM (WM_USER+72)
@@ -1044,11 +1154,8 @@ extern "C" {
 #define TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
 
 #define TB_MAPACCELERATORW (WM_USER+90)
-#ifdef UNICODE
-#define TB_MAPACCELERATOR TB_MAPACCELERATORW
-#else
-#define TB_MAPACCELERATOR TB_MAPACCELERATORA
-#endif
+
+#define TB_MAPACCELERATOR __MINGW_NAME_AW(TB_MAPACCELERATOR)
 
   typedef struct {
     HINSTANCE hInstOld;
@@ -1097,48 +1204,31 @@ extern "C" {
     int cchText;
   } TBBUTTONINFOW,*LPTBBUTTONINFOW;
 
-#ifdef UNICODE
-#define TBBUTTONINFO TBBUTTONINFOW
-#define LPTBBUTTONINFO LPTBBUTTONINFOW
-#else
-#define TBBUTTONINFO TBBUTTONINFOA
-#define LPTBBUTTONINFO LPTBBUTTONINFOA
-#endif
+#define TBBUTTONINFO __MINGW_NAME_AW(TBBUTTONINFO)
+#define LPTBBUTTONINFO __MINGW_NAME_AW(LPTBBUTTONINFO)
 
 #define TB_GETBUTTONINFOW (WM_USER+63)
 #define TB_SETBUTTONINFOW (WM_USER+64)
 #define TB_GETBUTTONINFOA (WM_USER+65)
 #define TB_SETBUTTONINFOA (WM_USER+66)
-#ifdef UNICODE
-#define TB_GETBUTTONINFO TB_GETBUTTONINFOW
-#define TB_SETBUTTONINFO TB_SETBUTTONINFOW
-#else
-#define TB_GETBUTTONINFO TB_GETBUTTONINFOA
-#define TB_SETBUTTONINFO TB_SETBUTTONINFOA
-#endif
+
+#define TB_GETBUTTONINFO __MINGW_NAME_AW(TB_GETBUTTONINFO)
+#define TB_SETBUTTONINFO __MINGW_NAME_AW(TB_SETBUTTONINFO)
 
 #define TB_INSERTBUTTONW (WM_USER+67)
 #define TB_ADDBUTTONSW (WM_USER+68)
 
 #define TB_HITTEST (WM_USER+69)
 
-#ifdef UNICODE
-#define TB_INSERTBUTTON TB_INSERTBUTTONW
-#define TB_ADDBUTTONS TB_ADDBUTTONSW
-#else
-#define TB_INSERTBUTTON TB_INSERTBUTTONA
-#define TB_ADDBUTTONS TB_ADDBUTTONSA
-#endif
+#define TB_INSERTBUTTON __MINGW_NAME_AW(TB_INSERTBUTTON)
+#define TB_ADDBUTTONS __MINGW_NAME_AW(TB_ADDBUTTONS)
 
 #define TB_SETDRAWTEXTFLAGS (WM_USER+70)
 
 #define TB_GETSTRINGW (WM_USER+91)
 #define TB_GETSTRINGA (WM_USER+92)
-#ifdef UNICODE
-#define TB_GETSTRING TB_GETSTRINGW
-#else
-#define TB_GETSTRING TB_GETSTRINGA
-#endif
+
+#define TB_GETSTRING __MINGW_NAME_AW(TB_GETSTRING)
 
 #define TB_SETHOTITEM2 (WM_USER+94)
 #define TB_SETLISTGAP (WM_USER+96)
@@ -1251,15 +1341,9 @@ extern "C" {
     LPARAM lParam;
   } NMTBGETINFOTIPW,*LPNMTBGETINFOTIPW;
 
-#ifdef UNICODE
-#define TBN_GETINFOTIP TBN_GETINFOTIPW
-#define NMTBGETINFOTIP NMTBGETINFOTIPW
-#define LPNMTBGETINFOTIP LPNMTBGETINFOTIPW
-#else
-#define TBN_GETINFOTIP TBN_GETINFOTIPA
-#define NMTBGETINFOTIP NMTBGETINFOTIPA
-#define LPNMTBGETINFOTIP LPNMTBGETINFOTIPA
-#endif
+#define TBN_GETINFOTIP __MINGW_NAME_AW(TBN_GETINFOTIP)
+#define NMTBGETINFOTIP __MINGW_NAME_AW(NMTBGETINFOTIP)
+#define LPNMTBGETINFOTIP __MINGW_NAME_AW(LPNMTBGETINFOTIP)
 
 #define TBNF_IMAGE 0x1
 #define TBNF_TEXT 0x2
@@ -1285,25 +1369,15 @@ extern "C" {
     int cchText;
   } NMTBDISPINFOW,*LPNMTBDISPINFOW;
 
-#ifdef UNICODE
-#define TBN_GETDISPINFO TBN_GETDISPINFOW
-#define NMTBDISPINFO NMTBDISPINFOW
-#define LPNMTBDISPINFO LPNMTBDISPINFOW
-#else
-#define TBN_GETDISPINFO TBN_GETDISPINFOA
-#define NMTBDISPINFO NMTBDISPINFOA
-#define LPNMTBDISPINFO LPNMTBDISPINFOA
-#endif
+#define TBN_GETDISPINFO __MINGW_NAME_AW(TBN_GETDISPINFO)
+#define NMTBDISPINFO __MINGW_NAME_AW(NMTBDISPINFO)
+#define LPNMTBDISPINFO __MINGW_NAME_AW(LPNMTBDISPINFO)
 
 #define TBDDRET_DEFAULT 0
 #define TBDDRET_NODEFAULT 1
 #define TBDDRET_TREATPRESSED 2
 
-#ifdef UNICODE
-#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW
-#else
-#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA
-#endif
+#define TBN_GETBUTTONINFO __MINGW_NAME_AW(TBN_GETBUTTONINFO)
 
 #define TBNOTIFYA NMTOOLBARA
 #define TBNOTIFYW NMTOOLBARW
@@ -1331,13 +1405,9 @@ extern "C" {
     RECT rcButton;
   } NMTOOLBARW,*LPNMTOOLBARW;
 
-#ifdef UNICODE
-#define NMTOOLBAR NMTOOLBARW
-#define LPNMTOOLBAR LPNMTOOLBARW
-#else
-#define NMTOOLBAR NMTOOLBARA
-#define LPNMTOOLBAR LPNMTOOLBARA
-#endif
+#define NMTOOLBAR __MINGW_NAME_AW(NMTOOLBAR)
+#define LPNMTOOLBAR __MINGW_NAME_AW(LPNMTOOLBAR)
+
 #endif
 
 #ifndef NOREBAR
@@ -1345,11 +1415,7 @@ extern "C" {
 #define REBARCLASSNAMEW L"ReBarWindow32"
 #define REBARCLASSNAMEA "ReBarWindow32"
 
-#ifdef UNICODE
-#define REBARCLASSNAME REBARCLASSNAMEW
-#else
-#define REBARCLASSNAME REBARCLASSNAMEA
-#endif
+#define REBARCLASSNAME __MINGW_NAME_AW(REBARCLASSNAME)
 
 #define RBIM_IMAGELIST 0x1
 
@@ -1449,19 +1515,14 @@ extern "C" {
     LPARAM lParam;
     UINT cxHeader;
   } REBARBANDINFOW,*LPREBARBANDINFOW;
+
   typedef REBARBANDINFOW CONST *LPCREBARBANDINFOW;
 
-#ifdef UNICODE
-#define REBARBANDINFO REBARBANDINFOW
-#define LPREBARBANDINFO LPREBARBANDINFOW
-#define LPCREBARBANDINFO LPCREBARBANDINFOW
-#define REBARBANDINFO_V3_SIZE REBARBANDINFOW_V3_SIZE
-#else
-#define REBARBANDINFO REBARBANDINFOA
-#define LPREBARBANDINFO LPREBARBANDINFOA
-#define LPCREBARBANDINFO LPCREBARBANDINFOA
-#define REBARBANDINFO_V3_SIZE REBARBANDINFOA_V3_SIZE
-#endif
+#define REBARBANDINFO __MINGW_NAME_AW(REBARBANDINFO)
+#define LPREBARBANDINFO __MINGW_NAME_AW(LPREBARBANDINFO)
+#define LPCREBARBANDINFO __MINGW_NAME_AW(LPCREBARBANDINFO)
+
+#define REBARBANDINFO_V3_SIZE __MINGW_NAME_AW_EXT(REBARBANDINFO,_V3_SIZE)
 
 #define RB_INSERTBANDA (WM_USER+1)
 #define RB_DELETEBAND (WM_USER+2)
@@ -1490,13 +1551,8 @@ extern "C" {
 #define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME
 #define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME
 
-#ifdef UNICODE
-#define RB_INSERTBAND RB_INSERTBANDW
-#define RB_SETBANDINFO RB_SETBANDINFOW
-#else
-#define RB_INSERTBAND RB_INSERTBANDA
-#define RB_SETBANDINFO RB_SETBANDINFOA
-#endif
+#define RB_INSERTBAND __MINGW_NAME_AW(RB_INSERTBAND)
+#define RB_SETBANDINFO __MINGW_NAME_AW(RB_SETBANDINFO)
 
 #define RB_BEGINDRAG (WM_USER+24)
 #define RB_ENDDRAG (WM_USER+25)
@@ -1505,11 +1561,7 @@ extern "C" {
 #define RB_GETBANDINFOW (WM_USER+28)
 #define RB_GETBANDINFOA (WM_USER+29)
 
-#ifdef UNICODE
-#define RB_GETBANDINFO RB_GETBANDINFOW
-#else
-#define RB_GETBANDINFO RB_GETBANDINFOA
-#endif
+#define RB_GETBANDINFO __MINGW_NAME_AW(RB_GETBANDINFO)
 
 #define RB_MINIMIZEBAND (WM_USER+30)
 #define RB_MAXIMIZEBAND (WM_USER+31)
@@ -1561,7 +1613,7 @@ extern "C" {
 
   typedef struct tagNMRBAUTOSIZE {
     NMHDR hdr;
-    WINBOOL fChanged;
+    BOOL fChanged;
     RECT rcTarget;
     RECT rcActual;
   } NMRBAUTOSIZE,*LPNMRBAUTOSIZE;
@@ -1585,7 +1637,7 @@ extern "C" {
     LPARAM lParam;
     UINT uMsg;
     UINT fStyleCurrent;
-    WINBOOL fAutoBreak;
+    BOOL fAutoBreak;
   } NMREBARAUTOBREAK,*LPNMREBARAUTOBREAK;
 
 #define RBHT_NOWHERE 0x1
@@ -1605,11 +1657,8 @@ extern "C" {
 
 #define TOOLTIPS_CLASSW L"tooltips_class32"
 #define TOOLTIPS_CLASSA "tooltips_class32"
-#ifdef UNICODE
-#define TOOLTIPS_CLASS TOOLTIPS_CLASSW
-#else
-#define TOOLTIPS_CLASS TOOLTIPS_CLASSA
-#endif
+
+#define TOOLTIPS_CLASS __MINGW_NAME_AW(TOOLTIPS_CLASS)
 
 #define LPTOOLINFOA LPTTTOOLINFOA
 #define LPTOOLINFOW LPTTTOOLINFOW
@@ -1650,17 +1699,11 @@ extern "C" {
     void *lpReserved;
   } TTTOOLINFOW,NEAR *PTOOLINFOW,*LPTTTOOLINFOW;
 
-#ifdef UNICODE
-#define TTTOOLINFO TTTOOLINFOW
-#define PTOOLINFO PTOOLINFOW
-#define LPTTTOOLINFO LPTTTOOLINFOW
-#define TTTOOLINFO_V1_SIZE TTTOOLINFOW_V1_SIZE
-#else
-#define PTOOLINFO PTOOLINFOA
-#define TTTOOLINFO TTTOOLINFOA
-#define LPTTTOOLINFO LPTTTOOLINFOA
-#define TTTOOLINFO_V1_SIZE TTTOOLINFOA_V1_SIZE
-#endif
+#define TTTOOLINFO __MINGW_NAME_AW(TTTOOLINFO)
+#define PTOOLINFO __MINGW_NAME_AW(PTOOLINFO)
+#define LPTTTOOLINFO __MINGW_NAME_AW(LPTTTOOLINFO)
+
+#define TTTOOLINFO_V1_SIZE __MINGW_NAME_AW_EXT(TTTOOLINFO,_V1_SIZE)
 
 #define TTS_ALWAYSTIP 0x1
 #define TTS_NOPREFIX 0x2
@@ -1744,31 +1787,18 @@ extern "C" {
     WCHAR *pszTitle;
   } TTGETTITLE,*PTTGETTITLE;
 
-#ifdef UNICODE
-#define TTM_ADDTOOL TTM_ADDTOOLW
-#define TTM_DELTOOL TTM_DELTOOLW
-#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTW
-#define TTM_GETTOOLINFO TTM_GETTOOLINFOW
-#define TTM_SETTOOLINFO TTM_SETTOOLINFOW
-#define TTM_HITTEST TTM_HITTESTW
-#define TTM_GETTEXT TTM_GETTEXTW
-#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTW
-#define TTM_ENUMTOOLS TTM_ENUMTOOLSW
-#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLW
-#define TTM_SETTITLE TTM_SETTITLEW
-#else
-#define TTM_ADDTOOL TTM_ADDTOOLA
-#define TTM_DELTOOL TTM_DELTOOLA
-#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTA
-#define TTM_GETTOOLINFO TTM_GETTOOLINFOA
-#define TTM_SETTOOLINFO TTM_SETTOOLINFOA
-#define TTM_HITTEST TTM_HITTESTA
-#define TTM_GETTEXT TTM_GETTEXTA
-#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTA
-#define TTM_ENUMTOOLS TTM_ENUMTOOLSA
-#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA
-#define TTM_SETTITLE TTM_SETTITLEA
-#endif
+#define TTM_ADDTOOL __MINGW_NAME_AW(TTM_ADDTOOL)
+#define TTM_DELTOOL __MINGW_NAME_AW(TTM_DELTOOL)
+#define TTM_NEWTOOLRECT __MINGW_NAME_AW(TTM_NEWTOOLRECT)
+#define TTM_GETTOOLINFO __MINGW_NAME_AW(TTM_GETTOOLINFO)
+#define TTM_SETTOOLINFO __MINGW_NAME_AW(TTM_SETTOOLINFO)
+#define TTM_HITTEST __MINGW_NAME_AW(TTM_HITTEST)
+#define TTM_GETTEXT __MINGW_NAME_AW(TTM_GETTEXT)
+#define TTM_UPDATETIPTEXT __MINGW_NAME_AW(TTM_UPDATETIPTEXT)
+#define TTM_ENUMTOOLS __MINGW_NAME_AW(TTM_ENUMTOOLS)
+#define TTM_GETCURRENTTOOL __MINGW_NAME_AW(TTM_GETCURRENTTOOL)
+#define TTM_SETTITLE __MINGW_NAME_AW(TTM_SETTITLE)
+
 #define TTM_SETWINDOWTHEME CCM_SETWINDOWTHEME
 
 #define LPHITTESTINFOW LPTTHITTESTINFOW
@@ -1787,13 +1817,8 @@ extern "C" {
     TTTOOLINFOW ti;
   } TTHITTESTINFOW,*LPTTHITTESTINFOW;
 
-#ifdef UNICODE
-#define TTHITTESTINFO TTHITTESTINFOW
-#define LPTTHITTESTINFO LPTTHITTESTINFOW
-#else
-#define TTHITTESTINFO TTHITTESTINFOA
-#define LPTTHITTESTINFO LPTTHITTESTINFOA
-#endif
+#define TTHITTESTINFO __MINGW_NAME_AW(TTHITTESTINFO)
+#define LPTTHITTESTINFO __MINGW_NAME_AW(LPTTHITTESTINFO)
 
 #define TTN_GETDISPINFOA (TTN_FIRST - 0)
 #define TTN_GETDISPINFOW (TTN_FIRST - 10)
@@ -1801,11 +1826,7 @@ extern "C" {
 #define TTN_POP (TTN_FIRST - 2)
 #define TTN_LINKCLICK (TTN_FIRST - 3)
 
-#ifdef UNICODE
-#define TTN_GETDISPINFO TTN_GETDISPINFOW
-#else
-#define TTN_GETDISPINFO TTN_GETDISPINFOA
-#endif
+#define TTN_GETDISPINFO __MINGW_NAME_AW(TTN_GETDISPINFO)
 
 #define TTN_NEEDTEXT TTN_GETDISPINFO
 #define TTN_NEEDTEXTA TTN_GETDISPINFOA
@@ -1840,15 +1861,11 @@ extern "C" {
     LPARAM lParam;
   } NMTTDISPINFOW,*LPNMTTDISPINFOW;
 
-#ifdef UNICODE
-#define NMTTDISPINFO NMTTDISPINFOW
-#define LPNMTTDISPINFO LPNMTTDISPINFOW
-#define NMTTDISPINFO_V1_SIZE NMTTDISPINFOW_V1_SIZE
-#else
-#define NMTTDISPINFO NMTTDISPINFOA
-#define LPNMTTDISPINFO LPNMTTDISPINFOA
-#define NMTTDISPINFO_V1_SIZE NMTTDISPINFOA_V1_SIZE
-#endif
+
+#define NMTTDISPINFO __MINGW_NAME_AW(NMTTDISPINFO)
+#define LPNMTTDISPINFO __MINGW_NAME_AW(LPNMTTDISPINFO)
+
+#define NMTTDISPINFO_V1_SIZE __MINGW_NAME_AW_EXT(NMTTDISPINFO,_V1_SIZE)
 #endif
 
 #ifndef NOSTATUSBAR
@@ -1863,21 +1880,13 @@ extern "C" {
   WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowA(LONG style,LPCSTR lpszText,HWND hwndParent,UINT wID);
   WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowW(LONG style,LPCWSTR lpszText,HWND hwndParent,UINT wID);
 
-#ifdef UNICODE
-#define CreateStatusWindow CreateStatusWindowW
-#define DrawStatusText DrawStatusTextW
-#else
-#define CreateStatusWindow CreateStatusWindowA
-#define DrawStatusText DrawStatusTextA
-#endif
+#define CreateStatusWindow __MINGW_NAME_AW(CreateStatusWindow)
+#define DrawStatusText __MINGW_NAME_AW(DrawStatusText)
 
 #define STATUSCLASSNAMEW L"msctls_statusbar32"
 #define STATUSCLASSNAMEA "msctls_statusbar32"
-#ifdef UNICODE
-#define STATUSCLASSNAME STATUSCLASSNAMEW
-#else
-#define STATUSCLASSNAME STATUSCLASSNAMEA
-#endif
+
+#define STATUSCLASSNAME __MINGW_NAME_AW(STATUSCLASSNAME)
 
 #define SB_SETTEXTA (WM_USER+1)
 #define SB_SETTEXTW (WM_USER+11)
@@ -1886,19 +1895,11 @@ extern "C" {
 #define SB_GETTEXTLENGTHA (WM_USER+3)
 #define SB_GETTEXTLENGTHW (WM_USER+12)
 
-#ifdef UNICODE
-#define SB_GETTEXT SB_GETTEXTW
-#define SB_SETTEXT SB_SETTEXTW
-#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW
-#define SB_SETTIPTEXT SB_SETTIPTEXTW
-#define SB_GETTIPTEXT SB_GETTIPTEXTW
-#else
-#define SB_GETTEXT SB_GETTEXTA
-#define SB_SETTEXT SB_SETTEXTA
-#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA
-#define SB_SETTIPTEXT SB_SETTIPTEXTA
-#define SB_GETTIPTEXT SB_GETTIPTEXTA
-#endif
+#define SB_GETTEXT __MINGW_NAME_AW(SB_GETTEXT)
+#define SB_SETTEXT __MINGW_NAME_AW(SB_SETTEXT)
+#define SB_GETTEXTLENGTH __MINGW_NAME_AW(SB_GETTEXTLENGTH)
+#define SB_SETTIPTEXT __MINGW_NAME_AW(SB_SETTIPTEXT)
+#define SB_GETTIPTEXT __MINGW_NAME_AW(SB_GETTIPTEXT)
 
 #define SB_SETPARTS (WM_USER+4)
 #define SB_GETPARTS (WM_USER+6)
@@ -1932,8 +1933,22 @@ extern "C" {
 #ifndef NOMENUHELP
 
   WINCOMMCTRLAPI void WINAPI MenuHelp(UINT uMsg,WPARAM wParam,LPARAM lParam,HMENU hMainMenu,HINSTANCE hInst,HWND hwndStatus,UINT *lpwIDs);
-  WINCOMMCTRLAPI WINBOOL WINAPI ShowHideMenuCtl(HWND hWnd,UINT_PTR uFlags,LPINT lpInfo);
-  WINCOMMCTRLAPI void WINAPI GetEffectiveClientRect(HWND hWnd,LPRECT lprc,const INT *lpInfo);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  ShowHideMenuCtl(
+    _In_ HWND hWnd,
+    _In_ UINT_PTR uFlags,
+    _In_z_ LPINT lpInfo);
+
+  WINCOMMCTRLAPI
+  void
+  WINAPI
+  GetEffectiveClientRect(
+    _In_ HWND hWnd,
+    _Out_ LPRECT lprc,
+    _In_z_ const INT *lpInfo);
 
 #define MINSYSCOMMAND SC_SIZE
 #endif
@@ -1942,11 +1957,8 @@ extern "C" {
 
 #define TRACKBAR_CLASSA "msctls_trackbar32"
 #define TRACKBAR_CLASSW L"msctls_trackbar32"
-#ifdef UNICODE
-#define TRACKBAR_CLASS TRACKBAR_CLASSW
-#else
-#define TRACKBAR_CLASS TRACKBAR_CLASSA
-#endif
+
+#define TRACKBAR_CLASS __MINGW_NAME_AW(TRACKBAR_CLASS)
 
 #define TBS_AUTOTICKS 0x1
 #define TBS_VERT 0x2
@@ -2041,21 +2053,18 @@ extern "C" {
 
 #define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
 
-  WINCOMMCTRLAPI WINBOOL WINAPI MakeDragList(HWND hLB);
+  WINCOMMCTRLAPI BOOL WINAPI MakeDragList(HWND hLB);
   WINCOMMCTRLAPI void WINAPI DrawInsert(HWND handParent,HWND hLB,int nItem);
 
-  WINCOMMCTRLAPI int WINAPI LBItemFromPt(HWND hLB,POINT pt,WINBOOL bAutoScroll);
+  WINCOMMCTRLAPI int WINAPI LBItemFromPt(HWND hLB,POINT pt,BOOL bAutoScroll);
 #endif
 
 #ifndef NOUPDOWN
 
 #define UPDOWN_CLASSA "msctls_updown32"
 #define UPDOWN_CLASSW L"msctls_updown32"
-#ifdef UNICODE
-#define UPDOWN_CLASS UPDOWN_CLASSW
-#else
-#define UPDOWN_CLASS UPDOWN_CLASSA
-#endif
+
+#define UPDOWN_CLASS __MINGW_NAME_AW(UPDOWN_CLASS)
 
   typedef struct _UDACCEL {
     UINT nSec;
@@ -2110,11 +2119,8 @@ extern "C" {
 
 #define PROGRESS_CLASSA "msctls_progress32"
 #define PROGRESS_CLASSW L"msctls_progress32"
-#ifdef UNICODE
-#define PROGRESS_CLASS PROGRESS_CLASSW
-#else
-#define PROGRESS_CLASS PROGRESS_CLASSA
-#endif
+
+#define PROGRESS_CLASS __MINGW_NAME_AW(PROGRESS_CLASS)
 
 #define PBS_SMOOTH 0x1
 #define PBS_VERTICAL 0x4
@@ -2173,11 +2179,8 @@ extern "C" {
 
 #define HOTKEY_CLASSA "msctls_hotkey32"
 #define HOTKEY_CLASSW L"msctls_hotkey32"
-#ifdef UNICODE
-#define HOTKEY_CLASS HOTKEY_CLASSW
-#else
-#define HOTKEY_CLASS HOTKEY_CLASSA
-#endif
+
+#define HOTKEY_CLASS __MINGW_NAME_AW(HOTKEY_CLASS)
 #endif
 
 #define CCS_TOP 0x1L
@@ -2196,11 +2199,8 @@ extern "C" {
 
 #define WC_LISTVIEWA "SysListView32"
 #define WC_LISTVIEWW L"SysListView32"
-#ifdef UNICODE
-#define WC_LISTVIEW WC_LISTVIEWW
-#else
-#define WC_LISTVIEW WC_LISTVIEWA
-#endif
+
+#define WC_LISTVIEW __MINGW_NAME_AW(WC_LISTVIEW)
 
 #define LVS_ICON 0x0
 #define LVS_REPORT 0x1
@@ -2229,19 +2229,19 @@ extern "C" {
 #define LVS_NOSORTHEADER 0x8000
 
 #define LVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
-#define ListView_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),LVM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
+#define ListView_SetUnicodeFormat(hwnd,fUnicode) (BOOL)SNDMSG((hwnd),LVM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
 #define LVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
-#define ListView_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),LVM_GETUNICODEFORMAT,0,0)
+#define ListView_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd),LVM_GETUNICODEFORMAT,0,0)
 #define LVM_GETBKCOLOR (LVM_FIRST+0)
 #define ListView_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETBKCOLOR,0,0L)
 #define LVM_SETBKCOLOR (LVM_FIRST+1)
-#define ListView_SetBkColor(hwnd,clrBk) (WINBOOL)SNDMSG((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
+#define ListView_SetBkColor(hwnd,clrBk) (BOOL)SNDMSG((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
 #define LVM_GETIMAGELIST (LVM_FIRST+2)
 #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 LVSIL_NORMAL            0
+#define LVSIL_SMALL             1
+#define LVSIL_STATE             2
 #define LVSIL_GROUPHEADER       3
 
 #define LVM_SETIMAGELIST (LVM_FIRST+3)
@@ -2316,23 +2316,15 @@ extern "C" {
     PUINT puColumns;
   } LVITEMW,*LPLVITEMW;
 
-#ifdef UNICODE
-#define LVITEM LVITEMW
-#define LPLVITEM LPLVITEMW
-#define LVITEM_V1_SIZE LVITEMW_V1_SIZE
-#else
-#define LVITEM LVITEMA
-#define LPLVITEM LPLVITEMA
-#define LVITEM_V1_SIZE LVITEMA_V1_SIZE
-#endif
+#define LVITEM __MINGW_NAME_AW(LVITEM)
+#define LPLVITEM __MINGW_NAME_AW(LPLVITEM)
+
+#define LVITEM_V1_SIZE __MINGW_NAME_AW_EXT(LVITEM,_V1_SIZE)
 
 #define LPSTR_TEXTCALLBACKW ((LPWSTR)-1L)
 #define LPSTR_TEXTCALLBACKA ((LPSTR)-1L)
-#ifdef UNICODE
-#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW
-#else
-#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA
-#endif
+
+#define LPSTR_TEXTCALLBACK __MINGW_NAME_AW(LPSTR_TEXTCALLBACK)
 
 #define I_IMAGECALLBACK (-1)
 #define I_IMAGENONE (-2)
@@ -2340,44 +2332,36 @@ extern "C" {
 
 #define LVM_GETITEMA (LVM_FIRST+5)
 #define LVM_GETITEMW (LVM_FIRST+75)
-#ifdef UNICODE
-#define LVM_GETITEM LVM_GETITEMW
-#else
-#define LVM_GETITEM LVM_GETITEMA
-#endif
 
-#define ListView_GetItem(hwnd,pitem) (WINBOOL)SNDMSG((hwnd),LVM_GETITEM,0,(LPARAM)(LV_ITEM *)(pitem))
+#define LVM_GETITEM __MINGW_NAME_AW(LVM_GETITEM)
+
+#define ListView_GetItem(hwnd,pitem) (BOOL)SNDMSG((hwnd),LVM_GETITEM,0,(LPARAM)(LV_ITEM *)(pitem))
 
 #define LVM_SETITEMA (LVM_FIRST+6)
 #define LVM_SETITEMW (LVM_FIRST+76)
-#ifdef UNICODE
-#define LVM_SETITEM LVM_SETITEMW
-#else
-#define LVM_SETITEM LVM_SETITEMA
-#endif
 
-#define ListView_SetItem(hwnd,pitem) (WINBOOL)SNDMSG((hwnd),LVM_SETITEM,0,(LPARAM)(const LV_ITEM *)(pitem))
+#define LVM_SETITEM __MINGW_NAME_AW(LVM_SETITEM)
+
+#define ListView_SetItem(hwnd,pitem) (BOOL)SNDMSG((hwnd),LVM_SETITEM,0,(LPARAM)(const LV_ITEM *)(pitem))
 
 #define LVM_INSERTITEMA (LVM_FIRST+7)
 #define LVM_INSERTITEMW (LVM_FIRST+77)
-#ifdef UNICODE
-#define LVM_INSERTITEM LVM_INSERTITEMW
-#else
-#define LVM_INSERTITEM LVM_INSERTITEMA
-#endif
+
+#define LVM_INSERTITEM __MINGW_NAME_AW(LVM_INSERTITEM)
+
 #define ListView_InsertItem(hwnd,pitem) (int)SNDMSG((hwnd),LVM_INSERTITEM,0,(LPARAM)(const LV_ITEM *)(pitem))
 
 #define LVM_DELETEITEM (LVM_FIRST+8)
-#define ListView_DeleteItem(hwnd,i) (WINBOOL)SNDMSG((hwnd),LVM_DELETEITEM,(WPARAM)(int)(i),0L)
+#define ListView_DeleteItem(hwnd,i) (BOOL)SNDMSG((hwnd),LVM_DELETEITEM,(WPARAM)(int)(i),0L)
 
 #define LVM_DELETEALLITEMS (LVM_FIRST+9)
-#define ListView_DeleteAllItems(hwnd) (WINBOOL)SNDMSG((hwnd),LVM_DELETEALLITEMS,0,0L)
+#define ListView_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd),LVM_DELETEALLITEMS,0,0L)
 
 #define LVM_GETCALLBACKMASK (LVM_FIRST+10)
-#define ListView_GetCallbackMask(hwnd) (WINBOOL)SNDMSG((hwnd),LVM_GETCALLBACKMASK,0,0)
+#define ListView_GetCallbackMask(hwnd) (BOOL)SNDMSG((hwnd),LVM_GETCALLBACKMASK,0,0)
 
 #define LVM_SETCALLBACKMASK (LVM_FIRST+11)
-#define ListView_SetCallbackMask(hwnd,mask) (WINBOOL)SNDMSG((hwnd),LVM_SETCALLBACKMASK,(WPARAM)(UINT)(mask),0)
+#define ListView_SetCallbackMask(hwnd,mask) (BOOL)SNDMSG((hwnd),LVM_SETCALLBACKMASK,(WPARAM)(UINT)(mask),0)
 
 #define LVNI_ALL 0x0
 #define LVNI_FOCUSED 0x1
@@ -2393,12 +2377,12 @@ extern "C" {
 #define LVM_GETNEXTITEM (LVM_FIRST+12)
 #define ListView_GetNextItem(hwnd,i,flags) (int)SNDMSG((hwnd),LVM_GETNEXTITEM,(WPARAM)(int)(i),MAKELPARAM((flags),0))
 
-#define LVFI_PARAM 0x1
-#define LVFI_STRING 0x2
-#define LVFI_SUBSTRING 0x4
-#define LVFI_PARTIAL 0x8
-#define LVFI_WRAP 0x20
-#define LVFI_NEARESTXY 0x40
+#define LVFI_PARAM              0x0001
+#define LVFI_STRING             0x0002
+#define LVFI_SUBSTRING          0x0004
+#define LVFI_PARTIAL            0x0008
+#define LVFI_WRAP               0x0020
+#define LVFI_NEARESTXY          0x0040
 
 #define LV_FINDINFOA LVFINDINFOA
 #define LV_FINDINFOW LVFINDINFOW
@@ -2420,19 +2404,12 @@ extern "C" {
     UINT vkDirection;
   } LVFINDINFOW,*LPFINDINFOW;
 
-#ifdef UNICODE
-#define LVFINDINFO LVFINDINFOW
-#else
-#define LVFINDINFO LVFINDINFOA
-#endif
+#define LVFINDINFO __MINGW_NAME_AW(LVFINDINFO)
 
 #define LVM_FINDITEMA (LVM_FIRST+13)
 #define LVM_FINDITEMW (LVM_FIRST+83)
-#ifdef UNICODE
-#define LVM_FINDITEM LVM_FINDITEMW
-#else
-#define LVM_FINDITEM LVM_FINDITEMA
-#endif
+
+#define LVM_FINDITEM __MINGW_NAME_AW(LVM_FINDITEM)
 
 #define ListView_FindItem(hwnd,iStart,plvfi) (int)SNDMSG((hwnd),LVM_FINDITEM,(WPARAM)(int)(iStart),(LPARAM)(const LV_FINDINFO *)(plvfi))
 
@@ -2442,21 +2419,18 @@ extern "C" {
 #define LVIR_SELECTBOUNDS 3
 
 #define LVM_GETITEMRECT (LVM_FIRST+14)
-#define ListView_GetItemRect(hwnd,i,prc,code) (WINBOOL)SNDMSG((hwnd),LVM_GETITEMRECT,(WPARAM)(int)(i),((prc) ? (((RECT *)(prc))->left = (code),(LPARAM)(RECT *)(prc)) : (LPARAM)(RECT *)NULL))
+#define ListView_GetItemRect(hwnd,i,prc,code) (BOOL)SNDMSG((hwnd),LVM_GETITEMRECT,(WPARAM)(int)(i),((prc) ? (((RECT *)(prc))->left = (code),(LPARAM)(RECT *)(prc)) : (LPARAM)(RECT *)NULL))
 
 #define LVM_SETITEMPOSITION (LVM_FIRST+15)
-#define ListView_SetItemPosition(hwndLV,i,x,y) (WINBOOL)SNDMSG((hwndLV),LVM_SETITEMPOSITION,(WPARAM)(int)(i),MAKELPARAM((x),(y)))
+#define ListView_SetItemPosition(hwndLV,i,x,y) (BOOL)SNDMSG((hwndLV),LVM_SETITEMPOSITION,(WPARAM)(int)(i),MAKELPARAM((x),(y)))
 
 #define LVM_GETITEMPOSITION (LVM_FIRST+16)
-#define ListView_GetItemPosition(hwndLV,i,ppt) (WINBOOL)SNDMSG((hwndLV),LVM_GETITEMPOSITION,(WPARAM)(int)(i),(LPARAM)(POINT *)(ppt))
+#define ListView_GetItemPosition(hwndLV,i,ppt) (BOOL)SNDMSG((hwndLV),LVM_GETITEMPOSITION,(WPARAM)(int)(i),(LPARAM)(POINT *)(ppt))
 
 #define LVM_GETSTRINGWIDTHA (LVM_FIRST+17)
 #define LVM_GETSTRINGWIDTHW (LVM_FIRST+87)
-#ifdef UNICODE
-#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW
-#else
-#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA
-#endif
+
+#define LVM_GETSTRINGWIDTH __MINGW_NAME_AW(LVM_GETSTRINGWIDTH)
 
 #define ListView_GetStringWidth(hwndLV,psz) (int)SNDMSG((hwndLV),LVM_GETSTRINGWIDTH,0,(LPARAM)(LPCTSTR)(psz))
 
@@ -2486,13 +2460,13 @@ extern "C" {
 #define ListView_HitTest(hwndLV,pinfo) (int)SNDMSG((hwndLV),LVM_HITTEST,0,(LPARAM)(LV_HITTESTINFO *)(pinfo))
 
 #define LVM_ENSUREVISIBLE (LVM_FIRST+19)
-#define ListView_EnsureVisible(hwndLV,i,fPartialOK) (WINBOOL)SNDMSG((hwndLV),LVM_ENSUREVISIBLE,(WPARAM)(int)(i),MAKELPARAM((fPartialOK),0))
+#define ListView_EnsureVisible(hwndLV,i,fPartialOK) (BOOL)SNDMSG((hwndLV),LVM_ENSUREVISIBLE,(WPARAM)(int)(i),MAKELPARAM((fPartialOK),0))
 
 #define LVM_SCROLL (LVM_FIRST+20)
-#define ListView_Scroll(hwndLV,dx,dy) (WINBOOL)SNDMSG((hwndLV),LVM_SCROLL,(WPARAM)(int)(dx),(LPARAM)(int)(dy))
+#define ListView_Scroll(hwndLV,dx,dy) (BOOL)SNDMSG((hwndLV),LVM_SCROLL,(WPARAM)(int)(dx),(LPARAM)(int)(dy))
 
 #define LVM_REDRAWITEMS (LVM_FIRST+21)
-#define ListView_RedrawItems(hwndLV,iFirst,iLast) (WINBOOL)SNDMSG((hwndLV),LVM_REDRAWITEMS,(WPARAM)(int)(iFirst),(LPARAM)(int)(iLast))
+#define ListView_RedrawItems(hwndLV,iFirst,iLast) (BOOL)SNDMSG((hwndLV),LVM_REDRAWITEMS,(WPARAM)(int)(iFirst),(LPARAM)(int)(iLast))
 
 #define LVA_DEFAULT 0x0
 #define LVA_ALIGNLEFT 0x1
@@ -2500,15 +2474,12 @@ extern "C" {
 #define LVA_SNAPTOGRID 0x5
 
 #define LVM_ARRANGE (LVM_FIRST+22)
-#define ListView_Arrange(hwndLV,code) (WINBOOL)SNDMSG((hwndLV),LVM_ARRANGE,(WPARAM)(UINT)(code),0L)
+#define ListView_Arrange(hwndLV,code) (BOOL)SNDMSG((hwndLV),LVM_ARRANGE,(WPARAM)(UINT)(code),0L)
 
 #define LVM_EDITLABELA (LVM_FIRST+23)
 #define LVM_EDITLABELW (LVM_FIRST+118)
-#ifdef UNICODE
-#define LVM_EDITLABEL LVM_EDITLABELW
-#else
-#define LVM_EDITLABEL LVM_EDITLABELA
-#endif
+
+#define LVM_EDITLABEL __MINGW_NAME_AW(LVM_EDITLABEL)
 
 #define ListView_EditLabel(hwndLV,i) (HWND)SNDMSG((hwndLV),LVM_EDITLABEL,(WPARAM)(int)(i),0L)
 
@@ -2533,33 +2504,28 @@ extern "C" {
     int iOrder;
   } LVCOLUMNA,*LPLVCOLUMNA;
 
- typedef struct tagLVCOLUMNW {
-   UINT mask;
-   int fmt;
-   int cx;
-   LPWSTR pszText;
-   int cchTextMax;
-   int iSubItem;
-  #if (_WIN32_IE >= 0x0300)
-   int iImage;
-   int iOrder;
-  #endif
-  #if (_WIN32_WINNT >= 0x0600)
-   int cxMin;
-   int cxDefault;
-   int cxIdeal;
-  #endif
 typedef struct tagLVCOLUMNW {
+    UINT mask;
+    int fmt;
+    int cx;
+    LPWSTR pszText;
+    int cchTextMax;
+    int iSubItem;
+if (_WIN32_IE >= 0x0300)
+    int iImage;
+    int iOrder;
+endif
+if (_WIN32_WINNT >= 0x0600)
+    int cxMin;
+    int cxDefault;
+    int cxIdeal;
+endif
   } LVCOLUMNW,*LPLVCOLUMNW;
 
-#ifdef UNICODE
-#define LVCOLUMN LVCOLUMNW
-#define LPLVCOLUMN LPLVCOLUMNW
-#define LVCOLUMN_V1_SIZE LVCOLUMNW_V1_SIZE
-#else
-#define LVCOLUMN LVCOLUMNA
-#define LPLVCOLUMN LPLVCOLUMNA
-#define LVCOLUMN_V1_SIZE LVCOLUMNA_V1_SIZE
-#endif
+#define LVCOLUMN __MINGW_NAME_AW(LVCOLUMN)
+#define LPLVCOLUMN __MINGW_NAME_AW(LPLVCOLUMN)
+
+#define LVCOLUMN_V1_SIZE __MINGW_NAME_AW_EXT(LVCOLUMN,_V1_SIZE)
 
 #define LVCF_FMT 0x1
 #define LVCF_WIDTH 0x2
@@ -2594,36 +2560,27 @@ extern "C" {
 
 #define LVM_GETCOLUMNA (LVM_FIRST+25)
 #define LVM_GETCOLUMNW (LVM_FIRST+95)
-#ifdef UNICODE
-#define LVM_GETCOLUMN LVM_GETCOLUMNW
-#else
-#define LVM_GETCOLUMN LVM_GETCOLUMNA
-#endif
 
-#define ListView_GetColumn(hwnd,iCol,pcol) (WINBOOL)SNDMSG((hwnd),LVM_GETCOLUMN,(WPARAM)(int)(iCol),(LPARAM)(LV_COLUMN *)(pcol))
+#define LVM_GETCOLUMN __MINGW_NAME_AW(LVM_GETCOLUMN)
+
+#define ListView_GetColumn(hwnd,iCol,pcol) (BOOL)SNDMSG((hwnd),LVM_GETCOLUMN,(WPARAM)(int)(iCol),(LPARAM)(LV_COLUMN *)(pcol))
 
 #define LVM_SETCOLUMNA (LVM_FIRST+26)
 #define LVM_SETCOLUMNW (LVM_FIRST+96)
-#ifdef UNICODE
-#define LVM_SETCOLUMN LVM_SETCOLUMNW
-#else
-#define LVM_SETCOLUMN LVM_SETCOLUMNA
-#endif
 
-#define ListView_SetColumn(hwnd,iCol,pcol) (WINBOOL)SNDMSG((hwnd),LVM_SETCOLUMN,(WPARAM)(int)(iCol),(LPARAM)(const LV_COLUMN *)(pcol))
+#define LVM_SETCOLUMN __MINGW_NAME_AW(LVM_SETCOLUMN)
+
+#define ListView_SetColumn(hwnd,iCol,pcol) (BOOL)SNDMSG((hwnd),LVM_SETCOLUMN,(WPARAM)(int)(iCol),(LPARAM)(const LV_COLUMN *)(pcol))
 
 #define LVM_INSERTCOLUMNA (LVM_FIRST+27)
 #define LVM_INSERTCOLUMNW (LVM_FIRST+97)
-#ifdef UNICODE
-#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
-#else
-#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
-#endif
+
+#define LVM_INSERTCOLUMN __MINGW_NAME_AW(LVM_INSERTCOLUMN)
 
 #define ListView_InsertColumn(hwnd,iCol,pcol) (int)SNDMSG((hwnd),LVM_INSERTCOLUMN,(WPARAM)(int)(iCol),(LPARAM)(const LV_COLUMN *)(pcol))
 
 #define LVM_DELETECOLUMN (LVM_FIRST+28)
-#define ListView_DeleteColumn(hwnd,iCol) (WINBOOL)SNDMSG((hwnd),LVM_DELETECOLUMN,(WPARAM)(int)(iCol),0)
+#define ListView_DeleteColumn(hwnd,iCol) (BOOL)SNDMSG((hwnd),LVM_DELETECOLUMN,(WPARAM)(int)(iCol),0)
 
 #define LVM_GETCOLUMNWIDTH (LVM_FIRST+29)
 #define ListView_GetColumnWidth(hwnd,iCol) (int)SNDMSG((hwnd),LVM_GETCOLUMNWIDTH,(WPARAM)(int)(iCol),0)
@@ -2632,30 +2589,30 @@ extern "C" {
 #define LVSCW_AUTOSIZE_USEHEADER -2
 #define LVM_SETCOLUMNWIDTH (LVM_FIRST+30)
 
-#define ListView_SetColumnWidth(hwnd,iCol,cx) (WINBOOL)SNDMSG((hwnd),LVM_SETCOLUMNWIDTH,(WPARAM)(int)(iCol),MAKELPARAM((cx),0))
+#define ListView_SetColumnWidth(hwnd,iCol,cx) (BOOL)SNDMSG((hwnd),LVM_SETCOLUMNWIDTH,(WPARAM)(int)(iCol),MAKELPARAM((cx),0))
 
 #define LVM_GETHEADER (LVM_FIRST+31)
 #define ListView_GetHeader(hwnd) (HWND)SNDMSG((hwnd),LVM_GETHEADER,0,0L)
 #define LVM_CREATEDRAGIMAGE (LVM_FIRST+33)
 #define ListView_CreateDragImage(hwnd,i,lpptUpLeft) (HIMAGELIST)SNDMSG((hwnd),LVM_CREATEDRAGIMAGE,(WPARAM)(int)(i),(LPARAM)(LPPOINT)(lpptUpLeft))
 #define LVM_GETVIEWRECT (LVM_FIRST+34)
-#define ListView_GetViewRect(hwnd,prc) (WINBOOL)SNDMSG((hwnd),LVM_GETVIEWRECT,0,(LPARAM)(RECT *)(prc))
+#define ListView_GetViewRect(hwnd,prc) (BOOL)SNDMSG((hwnd),LVM_GETVIEWRECT,0,(LPARAM)(RECT *)(prc))
 #define LVM_GETTEXTCOLOR (LVM_FIRST+35)
 #define ListView_GetTextColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETTEXTCOLOR,0,0L)
 #define LVM_SETTEXTCOLOR (LVM_FIRST+36)
-#define ListView_SetTextColor(hwnd,clrText) (WINBOOL)SNDMSG((hwnd),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(clrText))
+#define ListView_SetTextColor(hwnd,clrText) (BOOL)SNDMSG((hwnd),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(clrText))
 #define LVM_GETTEXTBKCOLOR (LVM_FIRST+37)
 #define ListView_GetTextBkColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETTEXTBKCOLOR,0,0L)
 #define LVM_SETTEXTBKCOLOR (LVM_FIRST+38)
-#define ListView_SetTextBkColor(hwnd,clrTextBk) (WINBOOL)SNDMSG((hwnd),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(clrTextBk))
+#define ListView_SetTextBkColor(hwnd,clrTextBk) (BOOL)SNDMSG((hwnd),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(clrTextBk))
 #define LVM_GETTOPINDEX (LVM_FIRST+39)
 #define ListView_GetTopIndex(hwndLV) (int)SNDMSG((hwndLV),LVM_GETTOPINDEX,0,0)
 #define LVM_GETCOUNTPERPAGE (LVM_FIRST+40)
 #define ListView_GetCountPerPage(hwndLV) (int)SNDMSG((hwndLV),LVM_GETCOUNTPERPAGE,0,0)
 #define LVM_GETORIGIN (LVM_FIRST+41)
-#define ListView_GetOrigin(hwndLV,ppt) (WINBOOL)SNDMSG((hwndLV),LVM_GETORIGIN,(WPARAM)0,(LPARAM)(POINT *)(ppt))
+#define ListView_GetOrigin(hwndLV,ppt) (BOOL)SNDMSG((hwndLV),LVM_GETORIGIN,(WPARAM)0,(LPARAM)(POINT *)(ppt))
 #define LVM_UPDATE (LVM_FIRST+42)
-#define ListView_Update(hwndLV,i) (WINBOOL)SNDMSG((hwndLV),LVM_UPDATE,(WPARAM)(i),0L)
+#define ListView_Update(hwndLV,i) (BOOL)SNDMSG((hwndLV),LVM_UPDATE,(WPARAM)(i),0L)
 #define LVM_SETITEMSTATE (LVM_FIRST+43)
 #define ListView_SetItemState(hwndLV,i,data,mask) { LV_ITEM _ms_lvi; _ms_lvi.stateMask = mask; _ms_lvi.state = data; SNDMSG((hwndLV),LVM_SETITEMSTATE,(WPARAM)(i),(LPARAM)(LV_ITEM *)&_ms_lvi);}
 #define ListView_SetCheckState(hwndLV,i,fCheck) ListView_SetItemState(hwndLV,i,INDEXTOSTATEIMAGEMASK((fCheck)?2:1),LVIS_STATEIMAGEMASK)
@@ -2666,22 +2623,14 @@ extern "C" {
 #define LVM_GETITEMTEXTA (LVM_FIRST+45)
 #define LVM_GETITEMTEXTW (LVM_FIRST+115)
 
-#ifdef UNICODE
-#define LVM_GETITEMTEXT LVM_GETITEMTEXTW
-#else
-#define LVM_GETITEMTEXT LVM_GETITEMTEXTA
-#endif
+#define LVM_GETITEMTEXT __MINGW_NAME_AW(LVM_GETITEMTEXT)
 
 #define ListView_GetItemText(hwndLV,i,iSubItem_,pszText_,cchTextMax_) { LV_ITEM _ms_lvi; _ms_lvi.iSubItem = iSubItem_; _ms_lvi.cchTextMax = cchTextMax_; _ms_lvi.pszText = pszText_; SNDMSG((hwndLV),LVM_GETITEMTEXT,(WPARAM)(i),(LPARAM)(LV_ITEM *)&_ms_lvi);}
 
 #define LVM_SETITEMTEXTA (LVM_FIRST+46)
 #define LVM_SETITEMTEXTW (LVM_FIRST+116)
 
-#ifdef UNICODE
-#define LVM_SETITEMTEXT LVM_SETITEMTEXTW
-#else
-#define LVM_SETITEMTEXT LVM_SETITEMTEXTA
-#endif
+#define LVM_SETITEMTEXT __MINGW_NAME_AW(LVM_SETITEMTEXT)
 
 #define ListView_SetItemText(hwndLV,i,iSubItem_,pszText_) { LV_ITEM _ms_lvi; _ms_lvi.iSubItem = iSubItem_; _ms_lvi.pszText = pszText_; SNDMSG((hwndLV),LVM_SETITEMTEXT,(WPARAM)(i),(LPARAM)(LV_ITEM *)&_ms_lvi);}
 
@@ -2695,7 +2644,7 @@ extern "C" {
   typedef int (CALLBACK *PFNLVCOMPARE)(LPARAM,LPARAM,LPARAM);
 
 #define LVM_SORTITEMS (LVM_FIRST+48)
-#define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) (WINBOOL)SNDMSG((hwndLV),LVM_SORTITEMS,(WPARAM)(LPARAM)(_lPrm),(LPARAM)(PFNLVCOMPARE)(_pfnCompare))
+#define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) (BOOL)SNDMSG((hwndLV),LVM_SORTITEMS,(WPARAM)(LPARAM)(_lPrm),(LPARAM)(PFNLVCOMPARE)(_pfnCompare))
 
 #define LVM_SETITEMPOSITION32 (LVM_FIRST+49)
 #define ListView_SetItemPosition32(hwndLV,i,x0,y0) { POINT ptNewPos; ptNewPos.x = x0; ptNewPos.y = y0; SNDMSG((hwndLV),LVM_SETITEMPOSITION32,(WPARAM)(int)(i),(LPARAM)&ptNewPos); }
@@ -2709,13 +2658,9 @@ extern "C" {
 #define LVM_GETISEARCHSTRINGA (LVM_FIRST+52)
 #define LVM_GETISEARCHSTRINGW (LVM_FIRST+117)
 
-#ifdef UNICODE
-#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW
-#else
-#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA
-#endif
+#define LVM_GETISEARCHSTRING __MINGW_NAME_AW(LVM_GETISEARCHSTRING)
 
-#define ListView_GetISearchString(hwndLV,lpsz) (WINBOOL)SNDMSG((hwndLV),LVM_GETISEARCHSTRING,0,(LPARAM)(LPTSTR)(lpsz))
+#define ListView_GetISearchString(hwndLV,lpsz) (BOOL)SNDMSG((hwndLV),LVM_GETISEARCHSTRING,0,(LPARAM)(LPTSTR)(lpsz))
 
 #define LVM_SETICONSPACING (LVM_FIRST+53)
 
@@ -2759,13 +2704,13 @@ extern "C" {
 #endif
 
 #define LVM_GETSUBITEMRECT (LVM_FIRST+56)
-#define ListView_GetSubItemRect(hwnd,iItem,iSubItem,code,prc) (WINBOOL)SNDMSG((hwnd),LVM_GETSUBITEMRECT,(WPARAM)(int)(iItem),((prc) ? ((((LPRECT)(prc))->top = iSubItem),(((LPRECT)(prc))->left = code),(LPARAM)(prc)) : (LPARAM)(LPRECT)NULL))
+#define ListView_GetSubItemRect(hwnd,iItem,iSubItem,code,prc) (BOOL)SNDMSG((hwnd),LVM_GETSUBITEMRECT,(WPARAM)(int)(iItem),((prc) ? ((((LPRECT)(prc))->top = iSubItem),(((LPRECT)(prc))->left = code),(LPARAM)(prc)) : (LPARAM)(LPRECT)NULL))
 #define LVM_SUBITEMHITTEST (LVM_FIRST+57)
 #define ListView_SubItemHitTest(hwnd,plvhti) (int)SNDMSG((hwnd),LVM_SUBITEMHITTEST,0,(LPARAM)(LPLVHITTESTINFO)(plvhti))
 #define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
-#define ListView_SetColumnOrderArray(hwnd,iCount,pi) (WINBOOL)SNDMSG((hwnd),LVM_SETCOLUMNORDERARRAY,(WPARAM)(iCount),(LPARAM)(LPINT)(pi))
+#define ListView_SetColumnOrderArray(hwnd,iCount,pi) (BOOL)SNDMSG((hwnd),LVM_SETCOLUMNORDERARRAY,(WPARAM)(iCount),(LPARAM)(LPINT)(pi))
 #define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
-#define ListView_GetColumnOrderArray(hwnd,iCount,pi) (WINBOOL)SNDMSG((hwnd),LVM_GETCOLUMNORDERARRAY,(WPARAM)(iCount),(LPARAM)(LPINT)(pi))
+#define ListView_GetColumnOrderArray(hwnd,iCount,pi) (BOOL)SNDMSG((hwnd),LVM_GETCOLUMNORDERARRAY,(WPARAM)(iCount),(LPARAM)(LPINT)(pi))
 #define LVM_SETHOTITEM (LVM_FIRST+60)
 #define ListView_SetHotItem(hwnd,i) (int)SNDMSG((hwnd),LVM_SETHOTITEM,(WPARAM)(i),0)
 #define LVM_GETHOTITEM (LVM_FIRST+61)
@@ -2779,11 +2724,11 @@ extern "C" {
 
 #define LV_MAX_WORKAREAS 16
 #define LVM_SETWORKAREAS (LVM_FIRST+65)
-#define ListView_SetWorkAreas(hwnd,nWorkAreas,prc) (WINBOOL)SNDMSG((hwnd),LVM_SETWORKAREAS,(WPARAM)(int)(nWorkAreas),(LPARAM)(RECT *)(prc))
+#define ListView_SetWorkAreas(hwnd,nWorkAreas,prc) (BOOL)SNDMSG((hwnd),LVM_SETWORKAREAS,(WPARAM)(int)(nWorkAreas),(LPARAM)(RECT *)(prc))
 #define LVM_GETWORKAREAS (LVM_FIRST+70)
-#define ListView_GetWorkAreas(hwnd,nWorkAreas,prc) (WINBOOL)SNDMSG((hwnd),LVM_GETWORKAREAS,(WPARAM)(int)(nWorkAreas),(LPARAM)(RECT *)(prc))
+#define ListView_GetWorkAreas(hwnd,nWorkAreas,prc) (BOOL)SNDMSG((hwnd),LVM_GETWORKAREAS,(WPARAM)(int)(nWorkAreas),(LPARAM)(RECT *)(prc))
 #define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73)
-#define ListView_GetNumberOfWorkAreas(hwnd,pnWorkAreas) (WINBOOL)SNDMSG((hwnd),LVM_GETNUMBEROFWORKAREAS,0,(LPARAM)(UINT *)(pnWorkAreas))
+#define ListView_GetNumberOfWorkAreas(hwnd,pnWorkAreas) (BOOL)SNDMSG((hwnd),LVM_GETNUMBEROFWORKAREAS,0,(LPARAM)(UINT *)(pnWorkAreas))
 #define LVM_GETSELECTIONMARK (LVM_FIRST+66)
 #define ListView_GetSelectionMark(hwnd) (int)SNDMSG((hwnd),LVM_GETSELECTIONMARK,0,0)
 #define LVM_SETSELECTIONMARK (LVM_FIRST+67)
@@ -2797,7 +2742,7 @@ extern "C" {
 #define LVM_GETTOOLTIPS (LVM_FIRST+78)
 #define ListView_GetToolTips(hwndLV) (HWND)SNDMSG((hwndLV),LVM_GETTOOLTIPS,0,0)
 #define LVM_SORTITEMSEX (LVM_FIRST+81)
-#define ListView_SortItemsEx(hwndLV,_pfnCompare,_lPrm) (WINBOOL)SNDMSG((hwndLV),LVM_SORTITEMSEX,(WPARAM)(LPARAM)(_lPrm),(LPARAM)(PFNLVCOMPARE)(_pfnCompare))
+#define ListView_SortItemsEx(hwndLV,_pfnCompare,_lPrm) (BOOL)SNDMSG((hwndLV),LVM_SORTITEMSEX,(WPARAM)(LPARAM)(_lPrm),(LPARAM)(PFNLVCOMPARE)(_pfnCompare))
 
   typedef struct tagLVBKIMAGEA {
     ULONG ulFlags;
@@ -2978,9 +2923,9 @@ extern "C" {
 #define LVIM_AFTER 0x1
 
 #define LVM_SETINSERTMARK (LVM_FIRST+166)
-#define ListView_SetInsertMark(hwnd,lvim) (WINBOOL)SNDMSG((hwnd),LVM_SETINSERTMARK,(WPARAM) 0,(LPARAM) (lvim))
+#define ListView_SetInsertMark(hwnd,lvim) (BOOL)SNDMSG((hwnd),LVM_SETINSERTMARK,(WPARAM) 0,(LPARAM) (lvim))
 #define LVM_GETINSERTMARK (LVM_FIRST+167)
-#define ListView_GetInsertMark(hwnd,lvim) (WINBOOL)SNDMSG((hwnd),LVM_GETINSERTMARK,(WPARAM) 0,(LPARAM) (lvim))
+#define ListView_GetInsertMark(hwnd,lvim) (BOOL)SNDMSG((hwnd),LVM_GETINSERTMARK,(WPARAM) 0,(LPARAM) (lvim))
 #define LVM_INSERTMARKHITTEST (LVM_FIRST+168)
 #define ListView_InsertMarkHitTest(hwnd,point,lvim) (int)SNDMSG((hwnd),LVM_INSERTMARKHITTEST,(WPARAM)(LPPOINT)(point),(LPARAM)(LPLVINSERTMARK)(lvim))
 #define LVM_GETINSERTMARKRECT (LVM_FIRST+169)
@@ -2999,11 +2944,11 @@ extern "C" {
   } LVSETINFOTIP,*PLVSETINFOTIP;
 
 #define LVM_SETINFOTIP (LVM_FIRST+173)
-#define ListView_SetInfoTip(hwndLV,plvInfoTip) (WINBOOL)SNDMSG((hwndLV),LVM_SETINFOTIP,(WPARAM)0,(LPARAM)plvInfoTip)
+#define ListView_SetInfoTip(hwndLV,plvInfoTip) (BOOL)SNDMSG((hwndLV),LVM_SETINFOTIP,(WPARAM)0,(LPARAM)plvInfoTip)
 #define LVM_GETSELECTEDCOLUMN (LVM_FIRST+174)
 #define ListView_GetSelectedColumn(hwnd) (UINT)SNDMSG((hwnd),LVM_GETSELECTEDCOLUMN,0,0)
 #define LVM_ISGROUPVIEWENABLED (LVM_FIRST+175)
-#define ListView_IsGroupViewEnabled(hwnd) (WINBOOL)SNDMSG((hwnd),LVM_ISGROUPVIEWENABLED,0,0)
+#define ListView_IsGroupViewEnabled(hwnd) (BOOL)SNDMSG((hwnd),LVM_ISGROUPVIEWENABLED,0,0)
 #define LVM_GETOUTLINECOLOR (LVM_FIRST+176)
 #define ListView_GetOutlineColor(hwnd) (COLORREF)SNDMSG((hwnd),LVM_GETOUTLINECOLOR,0,0)
 #define LVM_SETOUTLINECOLOR (LVM_FIRST+177)
@@ -3017,20 +2962,13 @@ extern "C" {
 #define LVM_ISITEMVISIBLE (LVM_FIRST+182)
 #define ListView_IsItemVisible(hwnd,index) (UINT)SNDMSG((hwnd),LVM_ISITEMVISIBLE,(WPARAM)(index),(LPARAM)0)
 
-#ifdef UNICODE
-#define LVBKIMAGE LVBKIMAGEW
-#define LPLVBKIMAGE LPLVBKIMAGEW
-#define LVM_SETBKIMAGE LVM_SETBKIMAGEW
-#define LVM_GETBKIMAGE LVM_GETBKIMAGEW
-#else
-#define LVBKIMAGE LVBKIMAGEA
-#define LPLVBKIMAGE LPLVBKIMAGEA
-#define LVM_SETBKIMAGE LVM_SETBKIMAGEA
-#define LVM_GETBKIMAGE LVM_GETBKIMAGEA
-#endif
+#define LVBKIMAGE __MINGW_NAME_AW(LVBKIMAGE)
+#define LPLVBKIMAGE __MINGW_NAME_AW(LPLVBKIMAGE)
+#define LVM_SETBKIMAGE __MINGW_NAME_AW(LVM_SETBKIMAGE)
+#define LVM_GETBKIMAGE __MINGW_NAME_AW(LVM_GETBKIMAGE)
 
-#define ListView_SetBkImage(hwnd,plvbki) (WINBOOL)SNDMSG((hwnd),LVM_SETBKIMAGE,0,(LPARAM)(plvbki))
-#define ListView_GetBkImage(hwnd,plvbki) (WINBOOL)SNDMSG((hwnd),LVM_GETBKIMAGE,0,(LPARAM)(plvbki))
+#define ListView_SetBkImage(hwnd,plvbki) (BOOL)SNDMSG((hwnd),LVM_SETBKIMAGE,0,(LPARAM)(plvbki))
+#define ListView_GetBkImage(hwnd,plvbki) (BOOL)SNDMSG((hwnd),LVM_GETBKIMAGE,0,(LPARAM)(plvbki))
 
 #define LPNM_LISTVIEW LPNMLISTVIEW
 #define NM_LISTVIEW NMLISTVIEW
@@ -3115,19 +3053,11 @@ extern "C" {
 #define LPNM_FINDITEMW LPNMLVFINDITEMW
 #define NM_FINDITEMW NMLVFINDITEMW
 
-#ifdef UNICODE
-#define PNM_FINDITEM PNM_FINDITEMW
-#define LPNM_FINDITEM LPNM_FINDITEMW
-#define NM_FINDITEM NM_FINDITEMW
-#define NMLVFINDITEM NMLVFINDITEMW
-#define LPNMLVFINDITEM LPNMLVFINDITEMW
-#else
-#define PNM_FINDITEM PNM_FINDITEMA
-#define LPNM_FINDITEM LPNM_FINDITEMA
-#define NM_FINDITEM NM_FINDITEMA
-#define NMLVFINDITEM NMLVFINDITEMA
-#define LPNMLVFINDITEM LPNMLVFINDITEMA
-#endif
+#define PNM_FINDITEM __MINGW_NAME_AW(PNM_FINDITEM)
+#define LPNM_FINDITEM __MINGW_NAME_AW(LPNM_FINDITEM)
+#define NM_FINDITEM __MINGW_NAME_AW(NM_FINDITEM)
+#define NMLVFINDITEM __MINGW_NAME_AW(NMLVFINDITEM)
+#define LPNMLVFINDITEM __MINGW_NAME_AW(LPNMLVFINDITEM)
 
   typedef struct tagNMLVODSTATECHANGE {
     NMHDR hdr;
@@ -3161,11 +3091,7 @@ extern "C" {
 #define LVN_ITEMACTIVATE (LVN_FIRST-14)
 #define LVN_ODSTATECHANGED (LVN_FIRST-15)
 
-#ifdef UNICODE
-#define LVN_ODFINDITEM LVN_ODFINDITEMW
-#else
-#define LVN_ODFINDITEM LVN_ODFINDITEMA
-#endif
+#define LVN_ODFINDITEM __MINGW_NAME_AW(LVN_ODFINDITEM)
 
 #define LVN_HOTTRACK (LVN_FIRST-21)
 #define LVN_GETDISPINFOA (LVN_FIRST-50)
@@ -3173,17 +3099,10 @@ extern "C" {
 #define LVN_SETDISPINFOA (LVN_FIRST-51)
 #define LVN_SETDISPINFOW (LVN_FIRST-78)
 
-#ifdef UNICODE
-#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW
-#define LVN_ENDLABELEDIT LVN_ENDLABELEDITW
-#define LVN_GETDISPINFO LVN_GETDISPINFOW
-#define LVN_SETDISPINFO LVN_SETDISPINFOW
-#else
-#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA
-#define LVN_ENDLABELEDIT LVN_ENDLABELEDITA
-#define LVN_GETDISPINFO LVN_GETDISPINFOA
-#define LVN_SETDISPINFO LVN_SETDISPINFOA
-#endif
+#define LVN_BEGINLABELEDIT __MINGW_NAME_AW(LVN_BEGINLABELEDIT)
+#define LVN_ENDLABELEDIT __MINGW_NAME_AW(LVN_ENDLABELEDIT)
+#define LVN_GETDISPINFO __MINGW_NAME_AW(LVN_GETDISPINFO)
+#define LVN_SETDISPINFO __MINGW_NAME_AW(LVN_SETDISPINFO)
 
 #define LVIF_DI_SETITEM 0x1000
 
@@ -3201,11 +3120,7 @@ extern "C" {
     LVITEMW item;
   } NMLVDISPINFOW,*LPNMLVDISPINFOW;
 
-#ifdef UNICODE
-#define NMLVDISPINFO NMLVDISPINFOW
-#else
-#define NMLVDISPINFO NMLVDISPINFOA
-#endif
+#define NMLVDISPINFO __MINGW_NAME_AW(NMLVDISPINFO)
 
 #define LVN_KEYDOWN (LVN_FIRST-55)
 
@@ -3248,15 +3163,9 @@ extern "C" {
 #define LVN_GETINFOTIPA (LVN_FIRST-57)
 #define LVN_GETINFOTIPW (LVN_FIRST-58)
 
-#ifdef UNICODE
-#define LVN_GETINFOTIP LVN_GETINFOTIPW
-#define NMLVGETINFOTIP NMLVGETINFOTIPW
-#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPW
-#else
-#define LVN_GETINFOTIP LVN_GETINFOTIPA
-#define NMLVGETINFOTIP NMLVGETINFOTIPA
-#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPA
-#endif
+#define LVN_GETINFOTIP __MINGW_NAME_AW(LVN_GETINFOTIP)
+#define NMLVGETINFOTIP __MINGW_NAME_AW(NMLVGETINFOTIP)
+#define LPNMLVGETINFOTIP __MINGW_NAME_AW(LPNMLVGETINFOTIP)
 
   typedef struct tagNMLVSCROLL {
     NMHDR hdr;
@@ -3272,11 +3181,8 @@ extern "C" {
 
 #define WC_TREEVIEWA "SysTreeView32"
 #define WC_TREEVIEWW L"SysTreeView32"
-#ifdef UNICODE
-#define WC_TREEVIEW WC_TREEVIEWW
-#else
-#define WC_TREEVIEW WC_TREEVIEWA
-#endif
+
+#define WC_TREEVIEW __MINGW_NAME_AW(WC_TREEVIEW)
 
 #define TVS_HASBUTTONS 0x1
 #define TVS_HASLINES 0x2
@@ -3304,10 +3210,13 @@ extern "C" {
 #define TVIF_HANDLE 0x10
 #define TVIF_SELECTEDIMAGE 0x20
 #define TVIF_CHILDREN 0x40
+#if(_WIN32_IE >= 0x0400)
 #define TVIF_INTEGRAL 0x80
-#define TVIF_STATEEX  0x100
+#endif
+#if(_WIN32_IE >= 0x0600)
+#define TVIF_STATEEX 0x100
+#endif
 #define TVIF_EXPANDEDIMAGE 0x200
-#define TVIF_DI_SETITEM        0x1000
 #define TVIS_SELECTED 0x2
 #define TVIS_CUT 0x4
 #define TVIS_DROPHILITED 0x8
@@ -3319,6 +3228,8 @@ extern "C" {
 #define TVIS_STATEIMAGEMASK 0xF000
 #define TVIS_USERMASK 0xF000
 
+#define TVIS_FOCUSED 0x0001
+
 #define I_CHILDRENCALLBACK (-1)
 
 #define LPTV_ITEMW LPTVITEMW
@@ -3366,39 +3277,33 @@ extern "C" {
     int cChildren;
     LPARAM lParam;
     int iIntegral;
-  } TVITEMEXA,*LPTVITEMEXA;
-
-typedef struct tagTVITEMEXW {
-      UINT mask;
-      HTREEITEM hItem;
-      UINT state;
-      UINT stateMask;
-      LPWSTR pszText;
-      INT cchTextMax;
-      INT iImage;
-      INT iSelectedImage;
-      INT cChildren;
-      LPARAM lParam;
-      INT iIntegral;
-      UINT uStateEx;        /* _WIN32_IE >= 0x600 */
-      HWND hwnd;            /* _WIN32_IE >= 0x600 */
-      INT iExpandedImage;   /* _WIN32_IE >= 0x600 */
-} TVITEMEXW, *LPTVITEMEXW;
-#ifdef UNICODE
-  typedef TVITEMEXW TVITEMEX;
-  typedef LPTVITEMEXW LPTVITEMEX;
-#else
-  typedef TVITEMEXA TVITEMEX;
-  typedef LPTVITEMEXA LPTVITEMEX;
-#endif
+    UINT uStateEx;        /* _WIN32_IE >= 0x600 */
+    HWND hwnd;            /* _WIN32_IE >= 0x600 */
+    int iExpandedImage;   /* _WIN32_IE >= 0x600 */
+  } TVITEMEXA, *LPTVITEMEXA;
 
-#ifdef UNICODE
-#define TVITEM TVITEMW
-#define LPTVITEM LPTVITEMW
-#else
-#define TVITEM TVITEMA
-#define LPTVITEM LPTVITEMA
-#endif
+  typedef struct tagTVITEMEXW {
+    UINT mask;
+    HTREEITEM hItem;
+    UINT state;
+    UINT stateMask;
+    LPWSTR pszText;
+    int cchTextMax;
+    int iImage;
+    int iSelectedImage;
+    int cChildren;
+    LPARAM lParam;
+    int iIntegral;
+    UINT uStateEx;        /* _WIN32_IE >= 0x600 */
+    HWND hwnd;            /* _WIN32_IE >= 0x600 */
+    int iExpandedImage;   /* _WIN32_IE >= 0x600 */
+  } TVITEMEXW, *LPTVITEMEXW;
+
+  __MINGW_TYPEDEF_AW(TVITEMEX)
+  __MINGW_TYPEDEF_AW(LPTVITEMEX)
+
+#define TVITEM __MINGW_NAME_AW(TVITEM)
+#define LPTVITEM __MINGW_NAME_AW(LPTVITEM)
 
 #define TVI_ROOT ((HTREEITEM)(ULONG_PTR)-0x10000)
 #define TVI_FIRST ((HTREEITEM)(ULONG_PTR)-0xffff)
@@ -3418,7 +3323,7 @@ typedef struct tagTVITEMEXW {
   typedef struct tagTVINSERTSTRUCTA {
     HTREEITEM hParent;
     HTREEITEM hInsertAfter;
-    __MINGW_EXTENSION union {
+    __C89_NAMELESS union {
       TVITEMEXA itemex;
       TV_ITEMA item;
     } DUMMYUNIONNAME;
@@ -3427,39 +3332,32 @@ typedef struct tagTVITEMEXW {
   typedef struct tagTVINSERTSTRUCTW {
     HTREEITEM hParent;
     HTREEITEM hInsertAfter;
-    __MINGW_EXTENSION union {
+    __C89_NAMELESS union {
       TVITEMEXW itemex;
       TV_ITEMW item;
     } DUMMYUNIONNAME;
   } TVINSERTSTRUCTW,*LPTVINSERTSTRUCTW;
 
-#ifdef UNICODE
-#define TVINSERTSTRUCT TVINSERTSTRUCTW
-#define LPTVINSERTSTRUCT LPTVINSERTSTRUCTW
-#define TVINSERTSTRUCT_V1_SIZE TVINSERTSTRUCTW_V1_SIZE
-#else
-#define TVINSERTSTRUCT TVINSERTSTRUCTA
-#define LPTVINSERTSTRUCT LPTVINSERTSTRUCTA
-#define TVINSERTSTRUCT_V1_SIZE TVINSERTSTRUCTA_V1_SIZE
-#endif
+
+#define TVINSERTSTRUCT __MINGW_NAME_AW(TVINSERTSTRUCT)
+#define LPTVINSERTSTRUCT __MINGW_NAME_AW(LPTVINSERTSTRUCT)
+
+#define TVINSERTSTRUCT_V1_SIZE __MINGW_NAME_AW_EXT(TVINSERTSTRUCT,_V1_SIZE)
 
 #define TVM_INSERTITEMA (TV_FIRST+0)
 #define TVM_INSERTITEMW (TV_FIRST+50)
-#ifdef UNICODE
-#define TVM_INSERTITEM TVM_INSERTITEMW
-#else
-#define TVM_INSERTITEM TVM_INSERTITEMA
-#endif
+
+#define TVM_INSERTITEM __MINGW_NAME_AW(TVM_INSERTITEM)
 
 #define TreeView_InsertItem(hwnd,lpis) (HTREEITEM)SNDMSG((hwnd),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(lpis))
 
 #define TVM_DELETEITEM (TV_FIRST+1)
-#define TreeView_DeleteItem(hwnd,hitem) (WINBOOL)SNDMSG((hwnd),TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)(hitem))
+#define TreeView_DeleteItem(hwnd,hitem) (BOOL)SNDMSG((hwnd),TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)(hitem))
 
-#define TreeView_DeleteAllItems(hwnd) (WINBOOL)SNDMSG((hwnd),TVM_DELETEITEM,0,(LPARAM)TVI_ROOT)
+#define TreeView_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd),TVM_DELETEITEM,0,(LPARAM)TVI_ROOT)
 
 #define TVM_EXPAND (TV_FIRST+2)
-#define TreeView_Expand(hwnd,hitem,code) (WINBOOL)SNDMSG((hwnd),TVM_EXPAND,(WPARAM)(code),(LPARAM)(HTREEITEM)(hitem))
+#define TreeView_Expand(hwnd,hitem,code) (BOOL)SNDMSG((hwnd),TVM_EXPAND,(WPARAM)(code),(LPARAM)(HTREEITEM)(hitem))
 
 #define TVE_COLLAPSE 0x1
 #define TVE_EXPAND 0x2
@@ -3468,7 +3366,7 @@ typedef struct tagTVITEMEXW {
 #define TVE_COLLAPSERESET 0x8000
 
 #define TVM_GETITEMRECT (TV_FIRST+4)
-#define TreeView_GetItemRect(hwnd,hitem,prc,code) (*(HTREEITEM *)prc = (hitem),(WINBOOL)SNDMSG((hwnd),TVM_GETITEMRECT,(WPARAM)(code),(LPARAM)(RECT *)(prc)))
+#define TreeView_GetItemRect(hwnd,hitem,prc,code) (*(HTREEITEM *)prc = (hitem),(BOOL)SNDMSG((hwnd),TVM_GETITEMRECT,(WPARAM)(code),(LPARAM)(RECT *)(prc)))
 
 #define TVM_GETCOUNT (TV_FIRST+5)
 #define TreeView_GetCount(hwnd) (UINT)SNDMSG((hwnd),TVM_GETCOUNT,0,0)
@@ -3477,7 +3375,7 @@ typedef struct tagTVITEMEXW {
 #define TreeView_GetIndent(hwnd) (UINT)SNDMSG((hwnd),TVM_GETINDENT,0,0)
 
 #define TVM_SETINDENT (TV_FIRST+7)
-#define TreeView_SetIndent(hwnd,indent) (WINBOOL)SNDMSG((hwnd),TVM_SETINDENT,(WPARAM)(indent),0)
+#define TreeView_SetIndent(hwnd,indent) (BOOL)SNDMSG((hwnd),TVM_SETINDENT,(WPARAM)(indent),0)
 
 #define TVM_GETIMAGELIST (TV_FIRST+8)
 #define TreeView_GetImageList(hwnd,iImage) (HIMAGELIST)SNDMSG((hwnd),TVM_GETIMAGELIST,iImage,0)
@@ -3518,7 +3416,7 @@ typedef struct tagTVITEMEXW {
 #define TreeView_GetLastVisible(hwnd) TreeView_GetNextItem(hwnd,NULL,TVGN_LASTVISIBLE)
 
 #define TVM_SELECTITEM (TV_FIRST+11)
-#define TreeView_Select(hwnd,hitem,code) (WINBOOL)SNDMSG((hwnd),TVM_SELECTITEM,(WPARAM)(code),(LPARAM)(HTREEITEM)(hitem))
+#define TreeView_Select(hwnd,hitem,code) (BOOL)SNDMSG((hwnd),TVM_SELECTITEM,(WPARAM)(code),(LPARAM)(HTREEITEM)(hitem))
 
 #define TreeView_SelectItem(hwnd,hitem) TreeView_Select(hwnd,hitem,TVGN_CARET)
 #define TreeView_SelectDropTarget(hwnd,hitem) TreeView_Select(hwnd,hitem,TVGN_DROPHILITE)
@@ -3527,32 +3425,21 @@ typedef struct tagTVITEMEXW {
 #define TVM_GETITEMA (TV_FIRST+12)
 #define TVM_GETITEMW (TV_FIRST+62)
 
-#ifdef UNICODE
-#define TVM_GETITEM TVM_GETITEMW
-#else
-#define TVM_GETITEM TVM_GETITEMA
-#endif
+#define TVM_GETITEM __MINGW_NAME_AW(TVM_GETITEM)
 
-#define TreeView_GetItem(hwnd,pitem) (WINBOOL)SNDMSG((hwnd),TVM_GETITEM,0,(LPARAM)(TV_ITEM *)(pitem))
+#define TreeView_GetItem(hwnd,pitem) (BOOL)SNDMSG((hwnd),TVM_GETITEM,0,(LPARAM)(TV_ITEM *)(pitem))
 
 #define TVM_SETITEMA (TV_FIRST+13)
 #define TVM_SETITEMW (TV_FIRST+63)
 
-#ifdef UNICODE
-#define TVM_SETITEM TVM_SETITEMW
-#else
-#define TVM_SETITEM TVM_SETITEMA
-#endif
+#define TVM_SETITEM __MINGW_NAME_AW(TVM_SETITEM)
 
-#define TreeView_SetItem(hwnd,pitem) (WINBOOL)SNDMSG((hwnd),TVM_SETITEM,0,(LPARAM)(const TV_ITEM *)(pitem))
+#define TreeView_SetItem(hwnd,pitem) (BOOL)SNDMSG((hwnd),TVM_SETITEM,0,(LPARAM)(const TV_ITEM *)(pitem))
 
 #define TVM_EDITLABELA (TV_FIRST+14)
 #define TVM_EDITLABELW (TV_FIRST+65)
-#ifdef UNICODE
-#define TVM_EDITLABEL TVM_EDITLABELW
-#else
-#define TVM_EDITLABEL TVM_EDITLABELA
-#endif
+
+#define TVM_EDITLABEL __MINGW_NAME_AW(TVM_EDITLABEL)
 
 #define TreeView_EditLabel(hwnd,hitem) (HWND)SNDMSG((hwnd),TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)(hitem))
 
@@ -3592,38 +3479,34 @@ typedef struct tagTVITEMEXW {
 #define TreeView_CreateDragImage(hwnd,hitem) (HIMAGELIST)SNDMSG((hwnd),TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)(hitem))
 
 #define TVM_SORTCHILDREN (TV_FIRST+19)
-#define TreeView_SortChildren(hwnd,hitem,recurse) (WINBOOL)SNDMSG((hwnd),TVM_SORTCHILDREN,(WPARAM)(recurse),(LPARAM)(HTREEITEM)(hitem))
+#define TreeView_SortChildren(hwnd,hitem,recurse) (BOOL)SNDMSG((hwnd),TVM_SORTCHILDREN,(WPARAM)(recurse),(LPARAM)(HTREEITEM)(hitem))
 
 #define TVM_ENSUREVISIBLE (TV_FIRST+20)
-#define TreeView_EnsureVisible(hwnd,hitem) (WINBOOL)SNDMSG((hwnd),TVM_ENSUREVISIBLE,0,(LPARAM)(HTREEITEM)(hitem))
+#define TreeView_EnsureVisible(hwnd,hitem) (BOOL)SNDMSG((hwnd),TVM_ENSUREVISIBLE,0,(LPARAM)(HTREEITEM)(hitem))
 
 #define TVM_SORTCHILDRENCB (TV_FIRST+21)
-#define TreeView_SortChildrenCB(hwnd,psort,recurse) (WINBOOL)SNDMSG((hwnd),TVM_SORTCHILDRENCB,(WPARAM)(recurse),(LPARAM)(LPTV_SORTCB)(psort))
+#define TreeView_SortChildrenCB(hwnd,psort,recurse) (BOOL)SNDMSG((hwnd),TVM_SORTCHILDRENCB,(WPARAM)(recurse),(LPARAM)(LPTV_SORTCB)(psort))
 
 #define TVM_ENDEDITLABELNOW (TV_FIRST+22)
-#define TreeView_EndEditLabelNow(hwnd,fCancel) (WINBOOL)SNDMSG((hwnd),TVM_ENDEDITLABELNOW,(WPARAM)(fCancel),0)
+#define TreeView_EndEditLabelNow(hwnd,fCancel) (BOOL)SNDMSG((hwnd),TVM_ENDEDITLABELNOW,(WPARAM)(fCancel),0)
 
 #define TVM_GETISEARCHSTRINGA (TV_FIRST+23)
 #define TVM_GETISEARCHSTRINGW (TV_FIRST+64)
 
-#ifdef UNICODE
-#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW
-#else
-#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA
-#endif
+#define TVM_GETISEARCHSTRING __MINGW_NAME_AW(TVM_GETISEARCHSTRING)
 
 #define TVM_SETTOOLTIPS (TV_FIRST+24)
 #define TreeView_SetToolTips(hwnd,hwndTT) (HWND)SNDMSG((hwnd),TVM_SETTOOLTIPS,(WPARAM)(hwndTT),0)
 #define TVM_GETTOOLTIPS (TV_FIRST+25)
 #define TreeView_GetToolTips(hwnd) (HWND)SNDMSG((hwnd),TVM_GETTOOLTIPS,0,0)
-#define TreeView_GetISearchString(hwndTV,lpsz) (WINBOOL)SNDMSG((hwndTV),TVM_GETISEARCHSTRING,0,(LPARAM)(LPTSTR)(lpsz))
+#define TreeView_GetISearchString(hwndTV,lpsz) (BOOL)SNDMSG((hwndTV),TVM_GETISEARCHSTRING,0,(LPARAM)(LPTSTR)(lpsz))
 
 #define TVM_SETINSERTMARK (TV_FIRST+26)
-#define TreeView_SetInsertMark(hwnd,hItem,fAfter) (WINBOOL)SNDMSG((hwnd),TVM_SETINSERTMARK,(WPARAM) (fAfter),(LPARAM) (hItem))
+#define TreeView_SetInsertMark(hwnd,hItem,fAfter) (BOOL)SNDMSG((hwnd),TVM_SETINSERTMARK,(WPARAM) (fAfter),(LPARAM) (hItem))
 #define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
-#define TreeView_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),TVM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
+#define TreeView_SetUnicodeFormat(hwnd,fUnicode) (BOOL)SNDMSG((hwnd),TVM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
 #define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
-#define TreeView_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),TVM_GETUNICODEFORMAT,0,0)
+#define TreeView_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd),TVM_GETUNICODEFORMAT,0,0)
 
 #define TVM_SETITEMHEIGHT (TV_FIRST+27)
 #define TreeView_SetItemHeight(hwnd,iHeight) (int)SNDMSG((hwnd),TVM_SETITEMHEIGHT,(WPARAM)(iHeight),0)
@@ -3696,13 +3579,8 @@ typedef struct tagTVITEMEXW {
     POINT ptDrag;
   } NMTREEVIEWW,*LPNMTREEVIEWW;
 
-#ifdef UNICODE
-#define NMTREEVIEW NMTREEVIEWW
-#define LPNMTREEVIEW LPNMTREEVIEWW
-#else
-#define NMTREEVIEW NMTREEVIEWA
-#define LPNMTREEVIEW LPNMTREEVIEWA
-#endif
+#define NMTREEVIEW __MINGW_NAME_AW(NMTREEVIEW)
+#define LPNMTREEVIEW __MINGW_NAME_AW(LPNMTREEVIEW)
 
 #define TVN_SELCHANGINGA (TVN_FIRST-1)
 #define TVN_SELCHANGINGW (TVN_FIRST-50)
@@ -3734,13 +3612,8 @@ typedef struct tagTVITEMEXW {
     TVITEMW item;
   } NMTVDISPINFOW,*LPNMTVDISPINFOW;
 
-#ifdef UNICODE
-#define NMTVDISPINFO NMTVDISPINFOW
-#define LPNMTVDISPINFO LPNMTVDISPINFOW
-#else
-#define NMTVDISPINFO NMTVDISPINFOA
-#define LPNMTVDISPINFO LPNMTVDISPINFOA
-#endif
+#define NMTVDISPINFO __MINGW_NAME_AW(NMTVDISPINFO)
+#define LPNMTVDISPINFO __MINGW_NAME_AW(LPNMTVDISPINFO)
 
 #if (_WIN32_IE >= 0x0600)
 
@@ -3754,13 +3627,8 @@ typedef struct tagTVDISPINFOEXW {
     TVITEMEXW item;
 } NMTVDISPINFOEXW, *LPNMTVDISPINFOEXW;
 
-#ifdef UNICODE
-#define NMTVDISPINFOEX   NMTVDISPINFOEXW
-#define LPNMTVDISPINFOEX LPNMTVDISPINFOEXW
-#else
-#define NMTVDISPINFOEX   NMTVDISPINFOEXA
-#define LPNMTVDISPINFOEX LPNMTVDISPINFOEXA
-#endif /* UNICODE */
+#define NMTVDISPINFOEX   __MINGW_NAME_AW(NMTVDISPINFOEX)
+#define LPNMTVDISPINFOEX __MINGW_NAME_AW(LPNMTVDISPINFOEX)
 
 #define TV_DISPINFOEXA NMTVDISPINFOEXA
 #define TV_DISPINFOEXW NMTVDISPINFOEXW
@@ -3803,31 +3671,17 @@ typedef struct tagTVDISPINFOEXW {
 
 #include <poppack.h>
 
-#ifdef UNICODE
-#define TVN_SELCHANGING TVN_SELCHANGINGW
-#define TVN_SELCHANGED TVN_SELCHANGEDW
-#define TVN_GETDISPINFO TVN_GETDISPINFOW
-#define TVN_SETDISPINFO TVN_SETDISPINFOW
-#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
-#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
-#define TVN_BEGINDRAG TVN_BEGINDRAGW
-#define TVN_BEGINRDRAG TVN_BEGINRDRAGW
-#define TVN_DELETEITEM TVN_DELETEITEMW
-#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
-#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
-#else
-#define TVN_SELCHANGING TVN_SELCHANGINGA
-#define TVN_SELCHANGED TVN_SELCHANGEDA
-#define TVN_GETDISPINFO TVN_GETDISPINFOA
-#define TVN_SETDISPINFO TVN_SETDISPINFOA
-#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
-#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
-#define TVN_BEGINDRAG TVN_BEGINDRAGA
-#define TVN_BEGINRDRAG TVN_BEGINRDRAGA
-#define TVN_DELETEITEM TVN_DELETEITEMA
-#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
-#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
-#endif
+#define TVN_SELCHANGING __MINGW_NAME_AW(TVN_SELCHANGING)
+#define TVN_SELCHANGED __MINGW_NAME_AW(TVN_SELCHANGED)
+#define TVN_GETDISPINFO __MINGW_NAME_AW(TVN_GETDISPINFO)
+#define TVN_SETDISPINFO __MINGW_NAME_AW(TVN_SETDISPINFO)
+#define TVN_ITEMEXPANDING __MINGW_NAME_AW(TVN_ITEMEXPANDING)
+#define TVN_ITEMEXPANDED __MINGW_NAME_AW(TVN_ITEMEXPANDED)
+#define TVN_BEGINDRAG __MINGW_NAME_AW(TVN_BEGINDRAG)
+#define TVN_BEGINRDRAG __MINGW_NAME_AW(TVN_BEGINRDRAG)
+#define TVN_DELETEITEM __MINGW_NAME_AW(TVN_DELETEITEM)
+#define TVN_BEGINLABELEDIT __MINGW_NAME_AW(TVN_BEGINLABELEDIT)
+#define TVN_ENDLABELEDIT __MINGW_NAME_AW(TVN_ENDLABELEDIT)
 
 #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW,clrTextBk)
 
@@ -3854,15 +3708,9 @@ typedef struct tagTVDISPINFOEXW {
     LPARAM lParam;
   } NMTVGETINFOTIPW,*LPNMTVGETINFOTIPW;
 
-#ifdef UNICODE
-#define TVN_GETINFOTIP TVN_GETINFOTIPW
-#define NMTVGETINFOTIP NMTVGETINFOTIPW
-#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPW
-#else
-#define TVN_GETINFOTIP TVN_GETINFOTIPA
-#define NMTVGETINFOTIP NMTVGETINFOTIPA
-#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPA
-#endif
+#define TVN_GETINFOTIP __MINGW_NAME_AW(TVN_GETINFOTIP)
+#define NMTVGETINFOTIP __MINGW_NAME_AW(NMTVGETINFOTIP)
+#define LPNMTVGETINFOTIP __MINGW_NAME_AW(LPNMTVGETINFOTIP)
 
 #define TVCDRF_NOIMAGES 0x10000
 #endif
@@ -3872,11 +3720,7 @@ typedef struct tagTVDISPINFOEXW {
 #define WC_COMBOBOXEXW L"ComboBoxEx32"
 #define WC_COMBOBOXEXA "ComboBoxEx32"
 
-#ifdef UNICODE
-#define WC_COMBOBOXEX WC_COMBOBOXEXW
-#else
-#define WC_COMBOBOXEX WC_COMBOBOXEXA
-#endif
+#define WC_COMBOBOXEX __MINGW_NAME_AW(WC_COMBOBOXEX)
 
 #define CBEIF_TEXT 0x1
 #define CBEIF_IMAGE 0x2
@@ -3914,15 +3758,9 @@ typedef struct tagTVDISPINFOEXW {
   } COMBOBOXEXITEMW,*PCOMBOBOXEXITEMW;
   typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW;
 
-#ifdef UNICODE
-#define COMBOBOXEXITEM COMBOBOXEXITEMW
-#define PCOMBOBOXEXITEM PCOMBOBOXEXITEMW
-#define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMW
-#else
-#define COMBOBOXEXITEM COMBOBOXEXITEMA
-#define PCOMBOBOXEXITEM PCOMBOBOXEXITEMA
-#define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMA
-#endif
+#define COMBOBOXEXITEM __MINGW_NAME_AW(COMBOBOXEXITEM)
+#define PCOMBOBOXEXITEM __MINGW_NAME_AW(PCOMBOBOXEXITEM)
+#define PCCOMBOBOXEXITEM __MINGW_NAME_AW(PCCOMBOBOXEXITEM)
 
 #define CBEM_INSERTITEMA (WM_USER+1)
 #define CBEM_SETIMAGELIST (WM_USER+2)
@@ -3943,15 +3781,9 @@ typedef struct tagTVDISPINFOEXW {
 #define CBEM_SETITEMW (WM_USER+12)
 #define CBEM_GETITEMW (WM_USER+13)
 
-#ifdef UNICODE
-#define CBEM_INSERTITEM CBEM_INSERTITEMW
-#define CBEM_SETITEM CBEM_SETITEMW
-#define CBEM_GETITEM CBEM_GETITEMW
-#else
-#define CBEM_INSERTITEM CBEM_INSERTITEMA
-#define CBEM_SETITEM CBEM_SETITEMA
-#define CBEM_GETITEM CBEM_GETITEMA
-#endif
+#define CBEM_INSERTITEM __MINGW_NAME_AW(CBEM_INSERTITEM)
+#define CBEM_SETITEM __MINGW_NAME_AW(CBEM_SETITEM)
+#define CBEM_GETITEM __MINGW_NAME_AW(CBEM_GETITEM)
 
 #define CBEM_SETWINDOWTHEME CCM_SETWINDOWTHEME
 
@@ -3971,15 +3803,9 @@ typedef struct tagTVDISPINFOEXW {
     COMBOBOXEXITEMW ceItem;
   } NMCOMBOBOXEXW,*PNMCOMBOBOXEXW;
 
-#ifdef UNICODE
-#define NMCOMBOBOXEX NMCOMBOBOXEXW
-#define PNMCOMBOBOXEX PNMCOMBOBOXEXW
-#define CBEN_GETDISPINFO CBEN_GETDISPINFOW
-#else
-#define NMCOMBOBOXEX NMCOMBOBOXEXA
-#define PNMCOMBOBOXEX PNMCOMBOBOXEXA
-#define CBEN_GETDISPINFO CBEN_GETDISPINFOA
-#endif
+#define NMCOMBOBOXEX __MINGW_NAME_AW(NMCOMBOBOXEX)
+#define PNMCOMBOBOXEX __MINGW_NAME_AW(PNMCOMBOBOXEX)
+#define CBEN_GETDISPINFO __MINGW_NAME_AW(CBEN_GETDISPINFO)
 
 #define CBEN_GETDISPINFOA (CBEN_FIRST - 0)
 #define CBEN_INSERTITEM (CBEN_FIRST - 1)
@@ -3993,17 +3819,9 @@ typedef struct tagTVDISPINFOEXW {
 #define CBEN_DRAGBEGINA (CBEN_FIRST - 8)
 #define CBEN_DRAGBEGINW (CBEN_FIRST - 9)
 
-#ifdef UNICODE
-#define CBEN_DRAGBEGIN CBEN_DRAGBEGINW
-#else
-#define CBEN_DRAGBEGIN CBEN_DRAGBEGINA
-#endif
+#define CBEN_DRAGBEGIN __MINGW_NAME_AW(CBEN_DRAGBEGIN)
 
-#ifdef UNICODE
-#define CBEN_ENDEDIT CBEN_ENDEDITW
-#else
-#define CBEN_ENDEDIT CBEN_ENDEDITA
-#endif
+#define CBEN_ENDEDIT __MINGW_NAME_AW(CBEN_ENDEDIT)
 
 #define CBENF_KILLFOCUS 1
 #define CBENF_RETURN 2
@@ -4024,19 +3842,13 @@ typedef struct tagTVDISPINFOEXW {
     char szText[CBEMAXSTRLEN];
   }NMCBEDRAGBEGINA,*LPNMCBEDRAGBEGINA,*PNMCBEDRAGBEGINA;
 
-#ifdef UNICODE
-#define NMCBEDRAGBEGIN NMCBEDRAGBEGINW
-#define LPNMCBEDRAGBEGIN LPNMCBEDRAGBEGINW
-#define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINW
-#else
-#define NMCBEDRAGBEGIN NMCBEDRAGBEGINA
-#define LPNMCBEDRAGBEGIN LPNMCBEDRAGBEGINA
-#define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINA
-#endif
+#define NMCBEDRAGBEGIN __MINGW_NAME_AW(NMCBEDRAGBEGIN)
+#define LPNMCBEDRAGBEGIN __MINGW_NAME_AW(LPNMCBEDRAGBEGIN)
+#define PNMCBEDRAGBEGIN __MINGW_NAME_AW(PNMCBEDRAGBEGIN)
 
   typedef struct {
     NMHDR hdr;
-    WINBOOL fChanged;
+    BOOL fChanged;
     int iNewSelection;
     WCHAR szText[CBEMAXSTRLEN];
     int iWhy;
@@ -4044,32 +3856,23 @@ typedef struct tagTVDISPINFOEXW {
 
   typedef struct {
     NMHDR hdr;
-    WINBOOL fChanged;
+    BOOL fChanged;
     int iNewSelection;
     char szText[CBEMAXSTRLEN];
     int iWhy;
   } NMCBEENDEDITA,*LPNMCBEENDEDITA,*PNMCBEENDEDITA;
 
-#ifdef UNICODE
-#define NMCBEENDEDIT NMCBEENDEDITW
-#define LPNMCBEENDEDIT LPNMCBEENDEDITW
-#define PNMCBEENDEDIT PNMCBEENDEDITW
-#else
-#define NMCBEENDEDIT NMCBEENDEDITA
-#define LPNMCBEENDEDIT LPNMCBEENDEDITA
-#define PNMCBEENDEDIT PNMCBEENDEDITA
-#endif
+#define NMCBEENDEDIT __MINGW_NAME_AW(NMCBEENDEDIT)
+#define LPNMCBEENDEDIT __MINGW_NAME_AW(LPNMCBEENDEDIT)
+#define PNMCBEENDEDIT __MINGW_NAME_AW(PNMCBEENDEDIT)
+
 #endif
 
 #ifndef NOTABCONTROL
 
 #define WC_TABCONTROLA "SysTabControl32"
 #define WC_TABCONTROLW L"SysTabControl32"
-#ifdef UNICODE
-#define WC_TABCONTROL WC_TABCONTROLW
-#else
-#define WC_TABCONTROL WC_TABCONTROLA
-#endif
+#define WC_TABCONTROL __MINGW_NAME_AW(WC_TABCONTROL)
 
 #define TCS_SCROLLOPPOSITE 0x1
 #define TCS_BOTTOM 0x2
@@ -4135,13 +3938,8 @@ typedef struct tagTVDISPINFOEXW {
     int iImage;
   } TCITEMHEADERW,*LPTCITEMHEADERW;
 
-#ifdef UNICODE
-#define TCITEMHEADER TCITEMHEADERW
-#define LPTCITEMHEADER LPTCITEMHEADERW
-#else
-#define TCITEMHEADER TCITEMHEADERA
-#define LPTCITEMHEADER LPTCITEMHEADERA
-#endif
+#define TCITEMHEADER __MINGW_NAME_AW(TCITEMHEADER)
+#define LPTCITEMHEADER __MINGW_NAME_AW(LPTCITEMHEADER)
 
 #define TC_ITEMA TCITEMA
 #define TC_ITEMW TCITEMW
@@ -4167,55 +3965,38 @@ typedef struct tagTVDISPINFOEXW {
     LPARAM lParam;
   } TCITEMW,*LPTCITEMW;
 
-#ifdef UNICODE
-#define TCITEM TCITEMW
-#define LPTCITEM LPTCITEMW
-#else
-#define TCITEM TCITEMA
-#define LPTCITEM LPTCITEMA
-#endif
+#define TCITEM __MINGW_NAME_AW(TCITEM)
+#define LPTCITEM __MINGW_NAME_AW(LPTCITEM)
 
 #define TCM_GETITEMA (TCM_FIRST+5)
 #define TCM_GETITEMW (TCM_FIRST+60)
 
-#ifdef UNICODE
-#define TCM_GETITEM TCM_GETITEMW
-#else
-#define TCM_GETITEM TCM_GETITEMA
-#endif
+#define TCM_GETITEM __MINGW_NAME_AW(TCM_GETITEM)
 
-#define TabCtrl_GetItem(hwnd,iItem,pitem) (WINBOOL)SNDMSG((hwnd),TCM_GETITEM,(WPARAM)(int)(iItem),(LPARAM)(TC_ITEM *)(pitem))
+#define TabCtrl_GetItem(hwnd,iItem,pitem) (BOOL)SNDMSG((hwnd),TCM_GETITEM,(WPARAM)(int)(iItem),(LPARAM)(TC_ITEM *)(pitem))
 
 #define TCM_SETITEMA (TCM_FIRST+6)
 #define TCM_SETITEMW (TCM_FIRST+61)
 
-#ifdef UNICODE
-#define TCM_SETITEM TCM_SETITEMW
-#else
-#define TCM_SETITEM TCM_SETITEMA
-#endif
+#define TCM_SETITEM __MINGW_NAME_AW(TCM_SETITEM)
 
-#define TabCtrl_SetItem(hwnd,iItem,pitem) (WINBOOL)SNDMSG((hwnd),TCM_SETITEM,(WPARAM)(int)(iItem),(LPARAM)(TC_ITEM *)(pitem))
+#define TabCtrl_SetItem(hwnd,iItem,pitem) (BOOL)SNDMSG((hwnd),TCM_SETITEM,(WPARAM)(int)(iItem),(LPARAM)(TC_ITEM *)(pitem))
 
 #define TCM_INSERTITEMA (TCM_FIRST+7)
 #define TCM_INSERTITEMW (TCM_FIRST+62)
 
-#ifdef UNICODE
-#define TCM_INSERTITEM TCM_INSERTITEMW
-#else
-#define TCM_INSERTITEM TCM_INSERTITEMA
-#endif
+#define TCM_INSERTITEM __MINGW_NAME_AW(TCM_INSERTITEM)
 
 #define TabCtrl_InsertItem(hwnd,iItem,pitem) (int)SNDMSG((hwnd),TCM_INSERTITEM,(WPARAM)(int)(iItem),(LPARAM)(const TC_ITEM *)(pitem))
 
 #define TCM_DELETEITEM (TCM_FIRST+8)
-#define TabCtrl_DeleteItem(hwnd,i) (WINBOOL)SNDMSG((hwnd),TCM_DELETEITEM,(WPARAM)(int)(i),0L)
+#define TabCtrl_DeleteItem(hwnd,i) (BOOL)SNDMSG((hwnd),TCM_DELETEITEM,(WPARAM)(int)(i),0L)
 
 #define TCM_DELETEALLITEMS (TCM_FIRST+9)
-#define TabCtrl_DeleteAllItems(hwnd) (WINBOOL)SNDMSG((hwnd),TCM_DELETEALLITEMS,0,0L)
+#define TabCtrl_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd),TCM_DELETEALLITEMS,0,0L)
 
 #define TCM_GETITEMRECT (TCM_FIRST+10)
-#define TabCtrl_GetItemRect(hwnd,i,prc) (WINBOOL)SNDMSG((hwnd),TCM_GETITEMRECT,(WPARAM)(int)(i),(LPARAM)(RECT *)(prc))
+#define TabCtrl_GetItemRect(hwnd,i,prc) (BOOL)SNDMSG((hwnd),TCM_GETITEMRECT,(WPARAM)(int)(i),(LPARAM)(RECT *)(prc))
 
 #define TCM_GETCURSEL (TCM_FIRST+11)
 #define TabCtrl_GetCurSel(hwnd) (int)SNDMSG((hwnd),TCM_GETCURSEL,0,0)
@@ -4239,9 +4020,9 @@ typedef struct tagTVDISPINFOEXW {
 #define TCM_HITTEST (TCM_FIRST+13)
 #define TabCtrl_HitTest(hwndTC,pinfo) (int)SNDMSG((hwndTC),TCM_HITTEST,0,(LPARAM)(TC_HITTESTINFO *)(pinfo))
 #define TCM_SETITEMEXTRA (TCM_FIRST+14)
-#define TabCtrl_SetItemExtra(hwndTC,cb) (WINBOOL)SNDMSG((hwndTC),TCM_SETITEMEXTRA,(WPARAM)(cb),0L)
+#define TabCtrl_SetItemExtra(hwndTC,cb) (BOOL)SNDMSG((hwndTC),TCM_SETITEMEXTRA,(WPARAM)(cb),0L)
 #define TCM_ADJUSTRECT (TCM_FIRST+40)
-#define TabCtrl_AdjustRect(hwnd,bLarger,prc) (int)SNDMSG(hwnd,TCM_ADJUSTRECT,(WPARAM)(WINBOOL)(bLarger),(LPARAM)(RECT *)prc)
+#define TabCtrl_AdjustRect(hwnd,bLarger,prc) (int)SNDMSG(hwnd,TCM_ADJUSTRECT,(WPARAM)(BOOL)(bLarger),(LPARAM)(RECT *)prc)
 #define TCM_SETITEMSIZE (TCM_FIRST+41)
 #define TabCtrl_SetItemSize(hwnd,x,y) (DWORD)SNDMSG((hwnd),TCM_SETITEMSIZE,0,MAKELPARAM(x,y))
 #define TCM_REMOVEIMAGE (TCM_FIRST+42)
@@ -4263,15 +4044,15 @@ typedef struct tagTVDISPINFOEXW {
 #define TCM_DESELECTALL (TCM_FIRST+50)
 #define TabCtrl_DeselectAll(hwnd,fExcludeFocus) (void)SNDMSG((hwnd),TCM_DESELECTALL,fExcludeFocus,0)
 #define TCM_HIGHLIGHTITEM (TCM_FIRST+51)
-#define TabCtrl_HighlightItem(hwnd,i,fHighlight) (WINBOOL)SNDMSG((hwnd),TCM_HIGHLIGHTITEM,(WPARAM)(i),(LPARAM)MAKELONG (fHighlight,0))
+#define TabCtrl_HighlightItem(hwnd,i,fHighlight) (BOOL)SNDMSG((hwnd),TCM_HIGHLIGHTITEM,(WPARAM)(i),(LPARAM)MAKELONG (fHighlight,0))
 #define TCM_SETEXTENDEDSTYLE (TCM_FIRST+52)
 #define TabCtrl_SetExtendedStyle(hwnd,dw) (DWORD)SNDMSG((hwnd),TCM_SETEXTENDEDSTYLE,0,dw)
 #define TCM_GETEXTENDEDSTYLE (TCM_FIRST+53)
 #define TabCtrl_GetExtendedStyle(hwnd) (DWORD)SNDMSG((hwnd),TCM_GETEXTENDEDSTYLE,0,0)
 #define TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
-#define TabCtrl_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),TCM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
+#define TabCtrl_SetUnicodeFormat(hwnd,fUnicode) (BOOL)SNDMSG((hwnd),TCM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
 #define TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
-#define TabCtrl_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),TCM_GETUNICODEFORMAT,0,0)
+#define TabCtrl_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd),TCM_GETUNICODEFORMAT,0,0)
 
 #define TCN_KEYDOWN (TCN_FIRST - 0)
 
@@ -4297,11 +4078,8 @@ typedef struct tagTVDISPINFOEXW {
 
 #define ANIMATE_CLASSW L"SysAnimate32"
 #define ANIMATE_CLASSA "SysAnimate32"
-#ifdef UNICODE
-#define ANIMATE_CLASS ANIMATE_CLASSW
-#else
-#define ANIMATE_CLASS ANIMATE_CLASSA
-#endif
+
+#define ANIMATE_CLASS __MINGW_NAME_AW(ANIMATE_CLASS)
 
 #define ACS_CENTER 0x1
 #define ACS_TRANSPARENT 0x2
@@ -4310,11 +4088,8 @@ typedef struct tagTVDISPINFOEXW {
 
 #define ACM_OPENA (WM_USER+100)
 #define ACM_OPENW (WM_USER+103)
-#ifdef UNICODE
-#define ACM_OPEN ACM_OPENW
-#else
-#define ACM_OPEN ACM_OPENA
-#endif
+
+#define ACM_OPEN __MINGW_NAME_AW(ACM_OPEN)
 
 #define ACM_PLAY (WM_USER+101)
 #define ACM_STOP (WM_USER+102)
@@ -4324,10 +4099,10 @@ typedef struct tagTVDISPINFOEXW {
 
 #define Animate_Create(hwndP,id,dwStyle,hInstance) CreateWindow(ANIMATE_CLASS,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
 
-#define Animate_Open(hwnd,szName) (WINBOOL)SNDMSG(hwnd,ACM_OPEN,0,(LPARAM)(LPTSTR)(szName))
-#define Animate_OpenEx(hwnd,hInst,szName) (WINBOOL)SNDMSG(hwnd,ACM_OPEN,(WPARAM)(hInst),(LPARAM)(LPTSTR)(szName))
-#define Animate_Play(hwnd,from,to,rep) (WINBOOL)SNDMSG(hwnd,ACM_PLAY,(WPARAM)(rep),(LPARAM)MAKELONG(from,to))
-#define Animate_Stop(hwnd) (WINBOOL)SNDMSG(hwnd,ACM_STOP,0,0)
+#define Animate_Open(hwnd,szName) (BOOL)SNDMSG(hwnd,ACM_OPEN,0,(LPARAM)(LPTSTR)(szName))
+#define Animate_OpenEx(hwnd,hInst,szName) (BOOL)SNDMSG(hwnd,ACM_OPEN,(WPARAM)(hInst),(LPARAM)(LPTSTR)(szName))
+#define Animate_Play(hwnd,from,to,rep) (BOOL)SNDMSG(hwnd,ACM_PLAY,(WPARAM)(rep),(LPARAM)MAKELONG(from,to))
+#define Animate_Stop(hwnd) (BOOL)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
@@ -4335,24 +4110,21 @@ typedef struct tagTVDISPINFOEXW {
 #ifndef NOMONTHCAL
 #define MONTHCAL_CLASSW L"SysMonthCal32"
 #define MONTHCAL_CLASSA "SysMonthCal32"
-#ifdef UNICODE
-#define MONTHCAL_CLASS MONTHCAL_CLASSW
-#else
-#define MONTHCAL_CLASS MONTHCAL_CLASSA
-#endif
+
+#define MONTHCAL_CLASS __MINGW_NAME_AW(MONTHCAL_CLASS)
 
   typedef DWORD MONTHDAYSTATE,*LPMONTHDAYSTATE;
 
 #define MCM_FIRST 0x1000
 
 #define MCM_GETCURSEL (MCM_FIRST+1)
-#define MonthCal_GetCurSel(hmc,pst) (WINBOOL)SNDMSG(hmc,MCM_GETCURSEL,0,(LPARAM)(pst))
+#define MonthCal_GetCurSel(hmc,pst) (BOOL)SNDMSG(hmc,MCM_GETCURSEL,0,(LPARAM)(pst))
 #define MCM_SETCURSEL (MCM_FIRST+2)
-#define MonthCal_SetCurSel(hmc,pst) (WINBOOL)SNDMSG(hmc,MCM_SETCURSEL,0,(LPARAM)(pst))
+#define MonthCal_SetCurSel(hmc,pst) (BOOL)SNDMSG(hmc,MCM_SETCURSEL,0,(LPARAM)(pst))
 #define MCM_GETMAXSELCOUNT (MCM_FIRST+3)
 #define MonthCal_GetMaxSelCount(hmc) (DWORD)SNDMSG(hmc,MCM_GETMAXSELCOUNT,0,0L)
 #define MCM_SETMAXSELCOUNT (MCM_FIRST+4)
-#define MonthCal_SetMaxSelCount(hmc,n) (WINBOOL)SNDMSG(hmc,MCM_SETMAXSELCOUNT,(WPARAM)(n),0L)
+#define MonthCal_SetMaxSelCount(hmc,n) (BOOL)SNDMSG(hmc,MCM_SETMAXSELCOUNT,(WPARAM)(n),0L)
 #define MCM_GETSELRANGE (MCM_FIRST+5)
 #define MonthCal_GetSelRange(hmc,rgst) SNDMSG(hmc,MCM_GETSELRANGE,0,(LPARAM)(rgst))
 #define MCM_SETSELRANGE (MCM_FIRST+6)
@@ -4378,17 +4150,22 @@ typedef struct tagTVDISPINFOEXW {
 #define MCM_SETTODAY (MCM_FIRST+12)
 #define MonthCal_SetToday(hmc,pst) SNDMSG(hmc,MCM_SETTODAY,0,(LPARAM)(pst))
 #define MCM_GETTODAY (MCM_FIRST+13)
-#define MonthCal_GetToday(hmc,pst) (WINBOOL)SNDMSG(hmc,MCM_GETTODAY,0,(LPARAM)(pst))
+#define MonthCal_GetToday(hmc,pst) (BOOL)SNDMSG(hmc,MCM_GETTODAY,0,(LPARAM)(pst))
 #define MCM_HITTEST (MCM_FIRST+14)
 #define MonthCal_HitTest(hmc,pinfo) SNDMSG(hmc,MCM_HITTEST,0,(LPARAM)(PMCHITTESTINFO)(pinfo))
 
-  typedef struct {
-    UINT cbSize;
-    POINT pt;
-
-    UINT uHit;
-    SYSTEMTIME st;
-  } MCHITTESTINFO,*PMCHITTESTINFO;
+typedef struct {
+  UINT cbSize;
+  POINT pt;
+  UINT uHit;
+  SYSTEMTIME st;
+#if(NTDDI_VERSION >= NTDDI_VISTA)
+  RECT rc;
+  int iOffset;
+  int iRow;
+  int iCol;
+#endif
+} MCHITTESTINFO, *PMCHITTESTINFO;
 
 #define MCHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(MCHITTESTINFO, st)
 
@@ -4421,17 +4198,25 @@ typedef struct tagTVDISPINFOEXW {
 #define MCM_GETRANGE (MCM_FIRST+17)
 #define MonthCal_GetRange(hmc,rgst) (DWORD)SNDMSG(hmc,MCM_GETRANGE,0,(LPARAM)(rgst))
 #define MCM_SETRANGE (MCM_FIRST+18)
-#define MonthCal_SetRange(hmc,gd,rgst) (WINBOOL)SNDMSG(hmc,MCM_SETRANGE,(WPARAM)(gd),(LPARAM)(rgst))
+#define MonthCal_SetRange(hmc,gd,rgst) (BOOL)SNDMSG(hmc,MCM_SETRANGE,(WPARAM)(gd),(LPARAM)(rgst))
 #define MCM_GETMONTHDELTA (MCM_FIRST+19)
 #define MonthCal_GetMonthDelta(hmc) (int)SNDMSG(hmc,MCM_GETMONTHDELTA,0,0)
 #define MCM_SETMONTHDELTA (MCM_FIRST+20)
 #define MonthCal_SetMonthDelta(hmc,n) (int)SNDMSG(hmc,MCM_SETMONTHDELTA,n,0)
 #define MCM_GETMAXTODAYWIDTH (MCM_FIRST+21)
 #define MonthCal_GetMaxTodayWidth(hmc) (DWORD)SNDMSG(hmc,MCM_GETMAXTODAYWIDTH,0,0)
+#define MCM_GETCURRENTVIEW (MCM_FIRST + 22)
+#define MonthCal_GetCurrentView(hmc) (DWORD)SNDMSG(hmc, MCM_GETCURRENTVIEW, 0, 0)
+#define MCM_GETCALENDARCOUNT (MCM_FIRST + 23)
+#define MonthCal_GetCalendarCount(hmc) (DWORD)SNDMSG(hmc, MCM_GETCALENDARCOUNT, 0, 0)
 #define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
-#define MonthCal_SetUnicodeFormat(hwnd,fUnicode) (WINBOOL)SNDMSG((hwnd),MCM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
+#define MonthCal_SetUnicodeFormat(hwnd,fUnicode) (BOOL)SNDMSG((hwnd),MCM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
 #define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
-#define MonthCal_GetUnicodeFormat(hwnd) (WINBOOL)SNDMSG((hwnd),MCM_GETUNICODEFORMAT,0,0)
+#define MonthCal_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd),MCM_GETUNICODEFORMAT,0,0)
+#define MCM_SIZERECTTOMIN (MCM_FIRST + 29)
+#define MonthCal_SizeRectToMin(hmc, prc) SNDMSG(hmc, MCM_SIZERECTTOMIN, 0, (LPARAM)(prc))
+#define MCM_SETCALENDARBORDER (MCM_FIRST + 30)
+#define MCM_GETCALENDARBORDER (MCM_FIRST + 31)
 
   typedef struct tagNMSELCHANGE {
     NMHDR nmhdr;
@@ -4455,16 +4240,12 @@ typedef struct tagTVDISPINFOEXW {
 
 #define MCN_SELECT (MCN_FIRST+4)
 
-#define MCS_DAYSTATE         0x0001
-#define MCS_MULTISELECT      0x0002
-#define MCS_WEEKNUMBERS      0x0004
-#define MCS_NOTODAYCIRCLE    0x0008
-#define MCS_NOTODAY          0x0010
-#if (NTDDI_VERSION >= NTDDI_VISTA)
-#define MCS_NOTRAILINGDATES  0x0040
-#define MCS_SHORTDAYSOFWEEK  0x0080
-#define MCS_NOSELCHANGEONNAV 0x0100
-#endif
+#define MCS_DAYSTATE           0x0001
+#define MCS_MULTISELECT        0x0002
+#define MCS_WEEKNUMBERS        0x0004
+#define MCS_NOTODAYCIRCLE      0x0008
+#define MCS_NOTODAY            0x0010
+#define MCS_NOTRAILINGDATES    0x0040
 
 #define GMR_VISIBLE 0
 #define GMR_DAYSTATE 1
@@ -4473,31 +4254,25 @@ typedef struct tagTVDISPINFOEXW {
 #ifndef NODATETIMEPICK
 #define DATETIMEPICK_CLASSW L"SysDateTimePick32"
 #define DATETIMEPICK_CLASSA "SysDateTimePick32"
-#ifdef UNICODE
-#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW
-#else
-#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA
-#endif
+
+#define DATETIMEPICK_CLASS __MINGW_NAME_AW(DATETIMEPICK_CLASS)
+
 #define DTM_FIRST 0x1000
 
 #define DTM_GETSYSTEMTIME (DTM_FIRST+1)
 #define DateTime_GetSystemtime(hdp,pst) (DWORD)SNDMSG(hdp,DTM_GETSYSTEMTIME,0,(LPARAM)(pst))
 #define DTM_SETSYSTEMTIME (DTM_FIRST+2)
-#define DateTime_SetSystemtime(hdp,gd,pst) (WINBOOL)SNDMSG(hdp,DTM_SETSYSTEMTIME,(WPARAM)(gd),(LPARAM)(pst))
+#define DateTime_SetSystemtime(hdp,gd,pst) (BOOL)SNDMSG(hdp,DTM_SETSYSTEMTIME,(WPARAM)(gd),(LPARAM)(pst))
 #define DTM_GETRANGE (DTM_FIRST+3)
 #define DateTime_GetRange(hdp,rgst) (DWORD)SNDMSG(hdp,DTM_GETRANGE,0,(LPARAM)(rgst))
 #define DTM_SETRANGE (DTM_FIRST+4)
-#define DateTime_SetRange(hdp,gd,rgst) (WINBOOL)SNDMSG(hdp,DTM_SETRANGE,(WPARAM)(gd),(LPARAM)(rgst))
+#define DateTime_SetRange(hdp,gd,rgst) (BOOL)SNDMSG(hdp,DTM_SETRANGE,(WPARAM)(gd),(LPARAM)(rgst))
 #define DTM_SETFORMATA (DTM_FIRST+5)
 #define DTM_SETFORMATW (DTM_FIRST+50)
 
-#ifdef UNICODE
-#define DTM_SETFORMAT DTM_SETFORMATW
-#else
-#define DTM_SETFORMAT DTM_SETFORMATA
-#endif
+#define DTM_SETFORMAT __MINGW_NAME_AW(DTM_SETFORMAT)
 
-#define DateTime_SetFormat(hdp,sz) (WINBOOL)SNDMSG(hdp,DTM_SETFORMAT,0,(LPARAM)(sz))
+#define DateTime_SetFormat(hdp,sz) (BOOL)SNDMSG(hdp,DTM_SETFORMAT,0,(LPARAM)(sz))
 
 #define DTM_SETMCCOLOR (DTM_FIRST+6)
 #define DateTime_SetMonthCalColor(hdp,iColor,clr) SNDMSG(hdp,DTM_SETMCCOLOR,iColor,clr)
@@ -4542,15 +4317,9 @@ typedef struct tagTVDISPINFOEXW {
     DWORD dwFlags;
   } NMDATETIMESTRINGW,*LPNMDATETIMESTRINGW;
 
-#ifdef UNICODE
-#define DTN_USERSTRING DTN_USERSTRINGW
-#define NMDATETIMESTRING NMDATETIMESTRINGW
-#define LPNMDATETIMESTRING LPNMDATETIMESTRINGW
-#else
-#define DTN_USERSTRING DTN_USERSTRINGA
-#define NMDATETIMESTRING NMDATETIMESTRINGA
-#define LPNMDATETIMESTRING LPNMDATETIMESTRINGA
-#endif
+#define DTN_USERSTRING __MINGW_NAME_AW(DTN_USERSTRING)
+#define NMDATETIMESTRING __MINGW_NAME_AW(NMDATETIMESTRING)
+#define LPNMDATETIMESTRING __MINGW_NAME_AW(LPNMDATETIMESTRING)
 
 #define DTN_WMKEYDOWNA (DTN_FIRST+3)
 #define DTN_WMKEYDOWNW (DTN_FIRST+16)
@@ -4568,15 +4337,9 @@ typedef struct tagTVDISPINFOEXW {
     SYSTEMTIME st;
   } NMDATETIMEWMKEYDOWNW,*LPNMDATETIMEWMKEYDOWNW;
 
-#ifdef UNICODE
-#define DTN_WMKEYDOWN DTN_WMKEYDOWNW
-#define NMDATETIMEWMKEYDOWN NMDATETIMEWMKEYDOWNW
-#define LPNMDATETIMEWMKEYDOWN LPNMDATETIMEWMKEYDOWNW
-#else
-#define DTN_WMKEYDOWN DTN_WMKEYDOWNA
-#define NMDATETIMEWMKEYDOWN NMDATETIMEWMKEYDOWNA
-#define LPNMDATETIMEWMKEYDOWN LPNMDATETIMEWMKEYDOWNA
-#endif
+#define DTN_WMKEYDOWN __MINGW_NAME_AW(DTN_WMKEYDOWN)
+#define NMDATETIMEWMKEYDOWN __MINGW_NAME_AW(NMDATETIMEWMKEYDOWN)
+#define LPNMDATETIMEWMKEYDOWN __MINGW_NAME_AW(LPNMDATETIMEWMKEYDOWN)
 
 #define DTN_FORMATA (DTN_FIRST+4)
 #define DTN_FORMATW (DTN_FIRST+17)
@@ -4596,15 +4359,9 @@ typedef struct tagTVDISPINFOEXW {
     WCHAR szDisplay[64];
   } NMDATETIMEFORMATW,*LPNMDATETIMEFORMATW;
 
-#ifdef UNICODE
-#define DTN_FORMAT DTN_FORMATW
-#define NMDATETIMEFORMAT NMDATETIMEFORMATW
-#define LPNMDATETIMEFORMAT LPNMDATETIMEFORMATW
-#else
-#define DTN_FORMAT DTN_FORMATA
-#define NMDATETIMEFORMAT NMDATETIMEFORMATA
-#define LPNMDATETIMEFORMAT LPNMDATETIMEFORMATA
-#endif
+#define DTN_FORMAT __MINGW_NAME_AW(DTN_FORMAT)
+#define NMDATETIMEFORMAT __MINGW_NAME_AW(NMDATETIMEFORMAT)
+#define LPNMDATETIMEFORMAT __MINGW_NAME_AW(LPNMDATETIMEFORMAT)
 
 #define DTN_FORMATQUERYA (DTN_FIRST+5)
 #define DTN_FORMATQUERYW (DTN_FIRST+18)
@@ -4620,15 +4377,9 @@ typedef struct tagTVDISPINFOEXW {
     SIZE szMax;
   } NMDATETIMEFORMATQUERYW,*LPNMDATETIMEFORMATQUERYW;
 
-#ifdef UNICODE
-#define DTN_FORMATQUERY DTN_FORMATQUERYW
-#define NMDATETIMEFORMATQUERY NMDATETIMEFORMATQUERYW
-#define LPNMDATETIMEFORMATQUERY LPNMDATETIMEFORMATQUERYW
-#else
-#define DTN_FORMATQUERY DTN_FORMATQUERYA
-#define NMDATETIMEFORMATQUERY NMDATETIMEFORMATQUERYA
-#define LPNMDATETIMEFORMATQUERY LPNMDATETIMEFORMATQUERYA
-#endif
+#define DTN_FORMATQUERY __MINGW_NAME_AW(DTN_FORMATQUERY)
+#define NMDATETIMEFORMATQUERY __MINGW_NAME_AW(NMDATETIMEFORMATQUERY)
+#define LPNMDATETIMEFORMATQUERY __MINGW_NAME_AW(LPNMDATETIMEFORMATQUERY)
 
 #define DTN_DROPDOWN (DTN_FIRST+6)
 #define DTN_CLOSEUP (DTN_FIRST+7)
@@ -4651,11 +4402,7 @@ typedef struct tagTVDISPINFOEXW {
 #define WC_IPADDRESSW L"SysIPAddress32"
 #define WC_IPADDRESSA "SysIPAddress32"
 
-#ifdef UNICODE
-#define WC_IPADDRESS WC_IPADDRESSW
-#else
-#define WC_IPADDRESS WC_IPADDRESSA
-#endif
+#define WC_IPADDRESS __MINGW_NAME_AW(WC_IPADDRESS)
 
 #define IPN_FIELDCHANGED (IPN_FIRST - 0)
   typedef struct tagNMIPADDRESS {
@@ -4678,11 +4425,7 @@ typedef struct tagTVDISPINFOEXW {
 #define WC_PAGESCROLLERW L"SysPager"
 #define WC_PAGESCROLLERA "SysPager"
 
-#ifdef UNICODE
-#define WC_PAGESCROLLER WC_PAGESCROLLERW
-#else
-#define WC_PAGESCROLLER WC_PAGESCROLLERA
-#endif
+#define WC_PAGESCROLLER __MINGW_NAME_AW(WC_PAGESCROLLER)
 
 #define PGS_VERT 0x0
 #define PGS_HORZ 0x1
@@ -4790,11 +4533,7 @@ typedef struct tagTVDISPINFOEXW {
 #define WC_NATIVEFONTCTLW L"NativeFontCtl"
 #define WC_NATIVEFONTCTLA "NativeFontCtl"
 
-#ifdef UNICODE
-#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLW
-#else
-#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLA
-#endif
+#define WC_NATIVEFONTCTL __MINGW_NAME_AW(WC_NATIVEFONTCTL)
 
 #define NFS_EDIT 0x1
 #define NFS_STATIC 0x2
@@ -4807,11 +4546,8 @@ typedef struct tagTVDISPINFOEXW {
 #ifndef NOBUTTON
 #define WC_BUTTONA "Button"
 #define WC_BUTTONW L"Button"
-#ifdef UNICODE
-#define WC_BUTTON WC_BUTTONW
-#else
-#define WC_BUTTON WC_BUTTONA
-#endif
+
+#define WC_BUTTON __MINGW_NAME_AW(WC_BUTTON)
 
 #define BUTTON_IMAGELIST_ALIGN_LEFT 0
 #define BUTTON_IMAGELIST_ALIGN_RIGHT 1
@@ -4826,18 +4562,18 @@ typedef struct tagTVDISPINFOEXW {
   } BUTTON_IMAGELIST,*PBUTTON_IMAGELIST;
 
 #define BCM_GETIDEALSIZE (BCM_FIRST+0x1)
-#define Button_GetIdealSize(hwnd,psize) (WINBOOL)SNDMSG((hwnd),BCM_GETIDEALSIZE,0,(LPARAM)(psize))
+#define Button_GetIdealSize(hwnd,psize) (BOOL)SNDMSG((hwnd),BCM_GETIDEALSIZE,0,(LPARAM)(psize))
 
 #define BCM_SETIMAGELIST (BCM_FIRST+0x2)
-#define Button_SetImageList(hwnd,pbuttonImagelist) (WINBOOL)SNDMSG((hwnd),BCM_SETIMAGELIST,0,(LPARAM)(pbuttonImagelist))
+#define Button_SetImageList(hwnd,pbuttonImagelist) (BOOL)SNDMSG((hwnd),BCM_SETIMAGELIST,0,(LPARAM)(pbuttonImagelist))
 
 #define BCM_GETIMAGELIST (BCM_FIRST+0x3)
-#define Button_GetImageList(hwnd,pbuttonImagelist) (WINBOOL)SNDMSG((hwnd),BCM_GETIMAGELIST,0,(LPARAM)(pbuttonImagelist))
+#define Button_GetImageList(hwnd,pbuttonImagelist) (BOOL)SNDMSG((hwnd),BCM_GETIMAGELIST,0,(LPARAM)(pbuttonImagelist))
 
 #define BCM_SETTEXTMARGIN (BCM_FIRST+0x4)
-#define Button_SetTextMargin(hwnd,pmargin) (WINBOOL)SNDMSG((hwnd),BCM_SETTEXTMARGIN,0,(LPARAM)(pmargin))
+#define Button_SetTextMargin(hwnd,pmargin) (BOOL)SNDMSG((hwnd),BCM_SETTEXTMARGIN,0,(LPARAM)(pmargin))
 #define BCM_GETTEXTMARGIN (BCM_FIRST+0x5)
-#define Button_GetTextMargin(hwnd,pmargin) (WINBOOL)SNDMSG((hwnd),BCM_GETTEXTMARGIN,0,(LPARAM)(pmargin))
+#define Button_GetTextMargin(hwnd,pmargin) (BOOL)SNDMSG((hwnd),BCM_GETTEXTMARGIN,0,(LPARAM)(pmargin))
 
   typedef struct tagNMBCHOTITEM {
     NMHDR hdr;
@@ -4853,25 +4589,19 @@ typedef struct tagTVDISPINFOEXW {
 #ifndef NOSTATIC
 #define WC_STATICA "Static"
 #define WC_STATICW L"Static"
-#ifdef UNICODE
-#define WC_STATIC WC_STATICW
-#else
-#define WC_STATIC WC_STATICA
-#endif
+
+#define WC_STATIC __MINGW_NAME_AW(WC_STATIC)
 
 #ifndef NOEDIT
 #define WC_EDITA "Edit"
 #define WC_EDITW L"Edit"
-#ifdef UNICODE
-#define WC_EDIT WC_EDITW
-#else
-#define WC_EDIT WC_EDITA
-#endif
+
+#define WC_EDIT __MINGW_NAME_AW(WC_EDIT)
 
 #define EM_SETCUEBANNER (ECM_FIRST+1)
-#define Edit_SetCueBannerText(hwnd,lpcwText) (WINBOOL)SNDMSG((hwnd),EM_SETCUEBANNER,0,(LPARAM)(lpcwText))
+#define Edit_SetCueBannerText(hwnd,lpcwText) (BOOL)SNDMSG((hwnd),EM_SETCUEBANNER,0,(LPARAM)(lpcwText))
 #define EM_GETCUEBANNER (ECM_FIRST+2)
-#define Edit_GetCueBannerText(hwnd,lpwText,cchText) (WINBOOL)SNDMSG((hwnd),EM_GETCUEBANNER,(WPARAM)(lpwText),(LPARAM)(cchText))
+#define Edit_GetCueBannerText(hwnd,lpwText,cchText) (BOOL)SNDMSG((hwnd),EM_GETCUEBANNER,(WPARAM)(lpwText),(LPARAM)(cchText))
 
   typedef struct _tagEDITBALLOONTIP {
     DWORD cbStruct;
@@ -4880,45 +4610,39 @@ typedef struct tagTVDISPINFOEXW {
     INT ttiIcon;
   } EDITBALLOONTIP,*PEDITBALLOONTIP;
 #define EM_SHOWBALLOONTIP (ECM_FIRST+3)
-#define Edit_ShowBalloonTip(hwnd,peditballoontip) (WINBOOL)SNDMSG((hwnd),EM_SHOWBALLOONTIP,0,(LPARAM)(peditballoontip))
+#define Edit_ShowBalloonTip(hwnd,peditballoontip) (BOOL)SNDMSG((hwnd),EM_SHOWBALLOONTIP,0,(LPARAM)(peditballoontip))
 #define EM_HIDEBALLOONTIP (ECM_FIRST+4)
-#define Edit_HideBalloonTip(hwnd) (WINBOOL)SNDMSG((hwnd),EM_HIDEBALLOONTIP,0,0)
+#define Edit_HideBalloonTip(hwnd) (BOOL)SNDMSG((hwnd),EM_HIDEBALLOONTIP,0,0)
 #endif
 
 #ifndef NOLISTBOX
 #define WC_LISTBOXA "ListBox"
 #define WC_LISTBOXW L"ListBox"
-#ifdef UNICODE
-#define WC_LISTBOX WC_LISTBOXW
-#else
-#define WC_LISTBOX WC_LISTBOXA
-#endif
+
+#define WC_LISTBOX __MINGW_NAME_AW(WC_LISTBOX)
+
 #endif
 
 #ifndef NOCOMBOBOX
 #define WC_COMBOBOXA "ComboBox"
 #define WC_COMBOBOXW L"ComboBox"
-#ifdef UNICODE
-#define WC_COMBOBOX WC_COMBOBOXW
-#else
-#define WC_COMBOBOX WC_COMBOBOXA
-#endif
+
+#define WC_COMBOBOX __MINGW_NAME_AW(WC_COMBOBOX)
+
 #endif
 
 #define CB_SETMINVISIBLE (CBM_FIRST+1)
 #define CB_GETMINVISIBLE (CBM_FIRST+2)
 
-#define ComboBox_SetMinVisible(hwnd,iMinVisible) (WINBOOL)SNDMSG((hwnd),CB_SETMINVISIBLE,(WPARAM)iMinVisible,0)
+#define ComboBox_SetMinVisible(hwnd,iMinVisible) (BOOL)SNDMSG((hwnd),CB_SETMINVISIBLE,(WPARAM)iMinVisible,0)
 #define ComboBox_GetMinVisible(hwnd) (int)SNDMSG((hwnd),CB_GETMINVISIBLE,0,0)
 
 #ifndef NOSCROLLBAR
 #define WC_SCROLLBARA "ScrollBar"
 #define WC_SCROLLBARW L"ScrollBar"
-#ifdef UNICODE
-#define WC_SCROLLBAR WC_SCROLLBARW
-#else
-#define WC_SCROLLBAR WC_SCROLLBARA
-#endif
+
+#define WC_SCROLLBAR __MINGW_NAME_AW(WC_SCROLLBAR)
+
 #endif
 
 #define INVALID_LINK_INDEX (-1)
@@ -4982,33 +4706,167 @@ typedef struct tagTVDISPINFOEXW {
   typedef int (CALLBACK *PFNDSAENUMCALLBACK)(void *p,void *pData);
 
   WINCOMMCTRLAPI HDSA WINAPI DSA_Create(int cbItem,int cItemGrow);
-  WINCOMMCTRLAPI WINBOOL WINAPI DSA_Destroy(HDSA hdsa);
-  WINCOMMCTRLAPI void WINAPI DSA_DestroyCallback(HDSA hdsa,PFNDSAENUMCALLBACK pfnCB,void *pData);
-  WINCOMMCTRLAPI PVOID WINAPI DSA_GetItemPtr(HDSA hdsa,int i);
-  WINCOMMCTRLAPI int WINAPI DSA_InsertItem(HDSA hdsa,int i,void *pitem);
+  WINCOMMCTRLAPI BOOL WINAPI DSA_Destroy(_Inout_opt_ HDSA hdsa);
+
+  WINCOMMCTRLAPI
+  void
+  WINAPI
+  DSA_DestroyCallback(
+    _Inout_opt_ HDSA hdsa,
+    _In_ PFNDSAENUMCALLBACK pfnCB,
+    _In_opt_ void *pData);
+
+  WINCOMMCTRLAPI PVOID WINAPI DSA_GetItemPtr(_In_ HDSA hdsa, int i);
+
+  WINCOMMCTRLAPI
+  int
+  WINAPI
+  DSA_InsertItem(
+    _Inout_ HDSA hdsa,
+    _In_ int i,
+    _In_ void *pitem);
 
   typedef struct _DPA *HDPA;
 
   WINCOMMCTRLAPI HDPA WINAPI DPA_Create(int cItemGrow);
-  WINCOMMCTRLAPI WINBOOL WINAPI DPA_Destroy(HDPA hdpa);
-  WINCOMMCTRLAPI PVOID WINAPI DPA_DeletePtr(HDPA hdpa,int i);
-  WINCOMMCTRLAPI WINBOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa);
-  WINCOMMCTRLAPI void WINAPI DPA_EnumCallback(HDPA hdpa,PFNDPAENUMCALLBACK pfnCB,void *pData);
-  WINCOMMCTRLAPI void WINAPI DPA_DestroyCallback(HDPA hdpa,PFNDPAENUMCALLBACK pfnCB,void *pData);
-  WINCOMMCTRLAPI WINBOOL WINAPI DPA_SetPtr(HDPA hdpa,int i,void *p);
-  WINCOMMCTRLAPI int WINAPI DPA_InsertPtr(HDPA hdpa,int i,void *p);
-  WINCOMMCTRLAPI PVOID WINAPI DPA_GetPtr(HDPA hdpa,INT_PTR i);
+  WINCOMMCTRLAPI BOOL WINAPI DPA_Destroy(_Inout_opt_ HDPA hdpa);
+  WINCOMMCTRLAPI PVOID WINAPI DPA_DeletePtr(_Inout_ HDPA hdpa, _In_ int i);
+  WINCOMMCTRLAPI BOOL WINAPI DPA_DeleteAllPtrs(_Inout_ HDPA hdpa);
+
+  WINCOMMCTRLAPI
+  void
+  WINAPI
+  DPA_EnumCallback(
+    _In_opt_ HDPA hdpa,
+    _In_opt_ PFNDPAENUMCALLBACK pfnCB,
+    _In_opt_ void *pData);
+
+  WINCOMMCTRLAPI
+  void
+  WINAPI
+  DPA_DestroyCallback(
+    _Inout_opt_ HDPA hdpa,
+    _In_ PFNDPAENUMCALLBACK pfnCB,
+    _In_opt_ void *pData);
 
   typedef int (CALLBACK *PFNDPACOMPARE)(void *p1,void *p2,LPARAM lParam);
 
-  WINCOMMCTRLAPI WINBOOL WINAPI DPA_Sort(HDPA hdpa,PFNDPACOMPARE pfnCompare,LPARAM lParam);
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  DPA_Sort(
+    _Inout_ HDPA hdpa,
+    _In_ PFNDPACOMPARE pfnCompare,
+    _In_ LPARAM lParam);
 
 #define DPAS_SORTED 0x1
 #define DPAS_INSERTBEFORE 0x2
 #define DPAS_INSERTAFTER 0x4
 
-  WINCOMMCTRLAPI int WINAPI DPA_Search(HDPA hdpa,void *pFind,int iStart,PFNDPACOMPARE pfnCompare,LPARAM lParam,UINT options);
-  WINCOMMCTRLAPI WINBOOL WINAPI Str_SetPtrW(LPWSTR *ppsz,LPCWSTR psz);
+  WINCOMMCTRLAPI
+  int
+  WINAPI
+  DPA_Search(
+    _In_ HDPA hdpa,
+    _In_opt_ void *pFind,
+    _In_ int iStart,
+    _In_ PFNDPACOMPARE pfnCompare,
+    _In_ LPARAM lParam,
+    _In_ UINT options);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI Str_SetPtrW(
+    _Inout_ LPWSTR *ppsz,
+    _In_opt_ LPCWSTR psz);
+
+typedef struct _DPASTREAMINFO {
+  int iPos;
+  void *pvItem;
+} DPASTREAMINFO;
+
+struct IStream;
+
+typedef HRESULT
+(CALLBACK *PFNDPASTREAM)(
+  _In_ DPASTREAMINFO*,
+  _In_ struct IStream*,
+  _In_opt_ void*);
+
+typedef void*
+(CALLBACK *PFNDPAMERGE)(
+  _In_ UINT,
+  _In_ void*,
+  _In_ void*,
+  _In_ LPARAM);
+
+typedef const void*
+(CALLBACK *PFNDPAMERGECONST)(
+  _In_ UINT,
+  _In_ const void*,
+  _In_ const void*,
+  _In_ LPARAM);
+
+  WINCOMMCTRLAPI
+  HRESULT
+  WINAPI
+  DPA_LoadStream(
+    _Outptr_ HDPA * phdpa,
+    _In_ PFNDPASTREAM pfn,
+    _In_ struct IStream * pstream,
+    _In_opt_ void *pvInstData);
+
+  WINCOMMCTRLAPI
+  HRESULT
+  WINAPI
+  DPA_SaveStream(
+    _In_ HDPA hdpa,
+    _In_ PFNDPASTREAM pfn,
+    _In_ struct IStream * pstream,
+    _In_opt_ void *pvInstData);
+
+  WINCOMMCTRLAPI BOOL WINAPI DPA_Grow(_Inout_ HDPA pdpa, _In_ int cp);
+
+  WINCOMMCTRLAPI
+  int
+  WINAPI
+  DPA_InsertPtr(
+    _Inout_ HDPA hdpa,
+    _In_ int i,
+    _In_opt_ void *p);
+
+  WINCOMMCTRLAPI PVOID WINAPI DPA_GetPtr(_In_ HDPA hdpa, _In_ INT_PTR i);
+
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  DPA_SetPtr(
+    _Inout_ HDPA hdpa,
+    _In_ int i,
+    _In_opt_ void *p);
+
+  WINCOMMCTRLAPI
+  int
+  WINAPI
+  DPA_GetPtrIndex(
+    _In_ HDPA hdpa,
+    _In_opt_ const void *p);
+
+#define DPA_GetPtrCount(hdpa) (*(int *)(hdpa))
+#define DPA_SetPtrCount(hdpa, cItems) (*(int *)(hdpa) = (cItems))
+#define DPA_GetPtrPtr(hdpa) (*((void * **)((BYTE *)(hdpa) + sizeof(void *))))
+#define DPA_AppendPtr(hdpa, pitem) DPA_InsertPtr(hdpa, DA_LAST, pitem)
+#define DPA_FastDeleteLastPtr(hdpa) (--*(int *)(hdpa))
+#define DPA_FastGetPtr(hdpa, i) (DPA_GetPtrPtr(hdpa)[i])
+
+#define DPAM_SORTED    1
+#define DPAM_NORMAL    2
+#define DPAM_UNION     4
+#define DPAM_INTERSECT 8
+
+#define DPAMM_MERGE    1
+#define DPAMM_DELETE   2
+#define DPAMM_INSERT   3
 
 #ifndef NOTRACKMOUSEEVENT
 
@@ -5035,7 +4893,12 @@ typedef struct tagTVDISPINFOEXW {
   } TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
 #endif
 
-  WINCOMMCTRLAPI WINBOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
+  WINCOMMCTRLAPI
+  BOOL
+  WINAPI
+  _TrackMouseEvent(
+    _Inout_ LPTRACKMOUSEEVENT lpEventTrack);
+
 #endif
 
 #ifndef NOFLATSBAPIS
@@ -5058,72 +4921,172 @@ typedef struct tagTVDISPINFOEXW {
 #define FSB_ENCARTA_MODE 1
 #define FSB_REGULAR_MODE 0
 
-  WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_EnableScrollBar(HWND,int,UINT);
-  WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_ShowScrollBar(HWND,int code,WINBOOL);
-  WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_GetScrollRange(HWND,int code,LPINT,LPINT);
-  WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_GetScrollInfo(HWND,int code,LPSCROLLINFO);
+  WINCOMMCTRLAPI BOOL WINAPI FlatSB_EnableScrollBar(HWND,int,UINT);
+  WINCOMMCTRLAPI BOOL WINAPI FlatSB_ShowScrollBar(HWND,int code,BOOL);
+  WINCOMMCTRLAPI BOOL WINAPI FlatSB_GetScrollRange(HWND,int code,LPINT,LPINT);
+  WINCOMMCTRLAPI BOOL WINAPI FlatSB_GetScrollInfo(HWND,int code,LPSCROLLINFO);
   WINCOMMCTRLAPI int WINAPI FlatSB_GetScrollPos(HWND,int code);
-  WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_GetScrollProp(HWND,int propIndex,LPINT);
+  WINCOMMCTRLAPI BOOL WINAPI FlatSB_GetScrollProp(HWND,int propIndex,LPINT);
 #ifdef _WIN64
-  WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_GetScrollPropPtr(HWND,int propIndex,PINT_PTR);
+  WINCOMMCTRLAPI BOOL WINAPI FlatSB_GetScrollPropPtr(HWND,int propIndex,PINT_PTR);
 #else
 #define FlatSB_GetScrollPropPtr FlatSB_GetScrollProp
 #endif
 
-  WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollPos(HWND,int code,int pos,WINBOOL fRedraw);
-  WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollInfo(HWND,int code,LPSCROLLINFO,WINBOOL fRedraw);
-  WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollRange(HWND,int code,int min,int max,WINBOOL fRedraw);
-  WINCOMMCTRLAPI WINBOOL WINAPI FlatSB_SetScrollProp(HWND,UINT index,INT_PTR newValue,WINBOOL);
+  WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollPos(HWND,int code,int pos,BOOL fRedraw);
+  WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollInfo(HWND,int code,LPSCROLLINFO,BOOL fRedraw);
+  WINCOMMCTRLAPI int WINAPI FlatSB_SetScrollRange(HWND,int code,int min,int max,BOOL fRedraw);
+  WINCOMMCTRLAPI BOOL WINAPI FlatSB_SetScrollProp(HWND,UINT index,INT_PTR newValue,BOOL);
 #define FlatSB_SetScrollPropPtr FlatSB_SetScrollProp
-  WINCOMMCTRLAPI WINBOOL WINAPI InitializeFlatSB(HWND);
+  WINCOMMCTRLAPI BOOL WINAPI InitializeFlatSB(HWND);
   WINCOMMCTRLAPI HRESULT WINAPI UninitializeFlatSB(HWND);
 #endif
 #endif
 
   typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam,UINT_PTR uIdSubclass,DWORD_PTR dwRefData);
 
-  WINBOOL WINAPI SetWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass,DWORD_PTR dwRefData);
-  WINBOOL WINAPI GetWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass,DWORD_PTR *pdwRefData);
-  WINBOOL WINAPI RemoveWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass);
+  _Success_(return != 0)
+  BOOL
+  WINAPI
+  SetWindowSubclass(
+    _In_ HWND hWnd,
+    _In_ SUBCLASSPROC pfnSubclass,
+    _In_ UINT_PTR uIdSubclass,
+    _In_ DWORD_PTR dwRefData);
+
+  _Success_(return != 0)
+  BOOL
+  WINAPI
+  GetWindowSubclass(
+    _In_ HWND hWnd,
+    _In_ SUBCLASSPROC pfnSubclass,
+    _In_ UINT_PTR uIdSubclass,
+    _Out_opt_ DWORD_PTR *pdwRefData);
+
+  _Success_(return != 0)
+  BOOL
+  WINAPI
+  RemoveWindowSubclass(
+    _In_ HWND hWnd,
+    _In_ SUBCLASSPROC pfnSubclass,
+    _In_ UINT_PTR uIdSubclass);
+
   LRESULT WINAPI DefSubclassProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
-  int WINAPI DrawShadowText(HDC hdc,LPCWSTR pszText,UINT cch,RECT *prc,DWORD dwFlags,COLORREF crText,COLORREF crShadow,int ixOffset,int iyOffset);
 
-typedef struct _DPASTREAMINFO {
-  int iPos;
-  void *pvItem;
-} DPASTREAMINFO;
+  int
+  WINAPI
+  DrawShadowText(
+    _In_ HDC hdc,
+    _In_reads_(cch) LPCWSTR pszText,
+    _In_ UINT cch,
+    _In_ RECT *prc,
+    _In_ DWORD dwFlags,
+    _In_ COLORREF crText,
+    _In_ COLORREF crShadow,
+    _In_ int ixOffset,
+    _In_ int iyOffset);
+
+#ifndef NOTASKDIALOG
 
-struct IStream;
-typedef HRESULT (CALLBACK *PFNDPASTREAM)(DPASTREAMINFO*, struct IStream*, void*);
-typedef void* (CALLBACK *PFNDPAMERGE)(UINT, void*, void*, LPARAM);
-typedef const void* (CALLBACK *PFNDPAMERGECONST)(UINT, const void*, const void*, LPARAM);
-
-  WINCOMMCTRLAPI HRESULT WINAPI DPA_LoadStream(HDPA * phdpa, PFNDPASTREAM pfn, struct IStream * pstream, void *pvInstData);
-  WINCOMMCTRLAPI HRESULT WINAPI DPA_SaveStream(HDPA hdpa, PFNDPASTREAM pfn, struct IStream * pstream, void *pvInstData);
-  WINCOMMCTRLAPI BOOL WINAPI DPA_Grow(HDPA pdpa, IN int cp);
-  WINCOMMCTRLAPI int WINAPI DPA_InsertPtr(HDPA hdpa, IN int i, void *p);
-  WINCOMMCTRLAPI PVOID WINAPI DPA_GetPtr(HDPA hdpa, INT_PTR i);
-  WINCOMMCTRLAPI BOOL WINAPI DPA_SetPtr(HDPA hdpa, IN int i, void *p);
-  WINCOMMCTRLAPI int WINAPI DPA_GetPtrIndex(HDPA hdpa, const void *p);
+#include <pshpack1.h>
 
-#define DPA_GetPtrCount(hdpa) (*(int *)(hdpa))
-#define DPA_SetPtrCount(hdpa, cItems) (*(int *)(hdpa) = (cItems))
-#define DPA_GetPtrPtr(hdpa) (*((void * **)((BYTE *)(hdpa) + sizeof(void *))))
-#define DPA_AppendPtr(hdpa, pitem) DPA_InsertPtr(hdpa, DA_LAST, pitem)
-#define DPA_FastDeleteLastPtr(hdpa) (--*(int *)(hdpa))
-#define DPA_FastGetPtr(hdpa, i) (DPA_GetPtrPtr(hdpa)[i])
+enum _TASKDIALOG_FLAGS
+{
+    TDF_ENABLE_HYPERLINKS           = 0x0001,
+    TDF_USE_HICON_MAIN              = 0x0002,
+    TDF_USE_HICON_FOOTER            = 0x0004,
+    TDF_ALLOW_DIALOG_CANCELLATION   = 0x0008,
+    TDF_USE_COMMAND_LINKS           = 0x0010,
+    TDF_USE_COMMAND_LINKS_NO_ICON   = 0x0020,
+    TDF_EXPAND_FOOTER_AREA          = 0x0040,
+    TDF_EXPANDED_BY_DEFAULT         = 0x0080,
+    TDF_VERIFICATION_FLAG_CHECKED   = 0x0100,
+    TDF_SHOW_PROGRESS_BAR           = 0x0200,
+    TDF_SHOW_MARQUEE_PROGRESS_BAR   = 0x0400,
+    TDF_CALLBACK_TIMER              = 0x0800,
+    TDF_POSITION_RELATIVE_TO_WINDOW = 0x1000,
+    TDF_RTL_LAYOUT                  = 0x2000,
+    TDF_NO_DEFAULT_RADIO_BUTTON     = 0x4000,
+    TDF_CAN_BE_MINIMIZED            = 0x8000
+};
+typedef int TASKDIALOG_FLAGS;
+
+enum _TASKDIALOG_COMMON_BUTTON_FLAGS
+{
+    TDCBF_OK_BUTTON     = 0x0001,
+    TDCBF_YES_BUTTON    = 0x0002,
+    TDCBF_NO_BUTTON     = 0x0004,
+    TDCBF_CANCEL_BUTTON = 0x0008,
+    TDCBF_RETRY_BUTTON  = 0x0010,
+    TDCBF_CLOSE_BUTTON  = 0x0020
+};
+typedef int TASKDIALOG_COMMON_BUTTON_FLAGS;
+
+typedef struct _TASKDIALOG_BUTTON
+{
+    int     nButtonID;
+    PCWSTR  pszButtonText;
+} TASKDIALOG_BUTTON;
+
+typedef HRESULT
+(CALLBACK *PFTASKDIALOGCALLBACK)(
+  _In_ HWND,
+  _In_ UINT,
+  _In_ WPARAM,
+  _In_ LPARAM,
+  _In_ LONG_PTR);
+
+typedef struct _TASKDIALOGCONFIG
+{
+    UINT        cbSize;
+    HWND        hwndParent;
+    HINSTANCE   hInstance;
+    TASKDIALOG_FLAGS    dwFlags;
+    TASKDIALOG_COMMON_BUTTON_FLAGS  dwCommonButtons;
+    PCWSTR      pszWindowTitle;
+    union
+    {
+        HICON   hMainIcon;
+        PCWSTR  pszMainIcon;
+    } DUMMYUNIONNAME;
+    PCWSTR      pszMainInstruction;
+    PCWSTR      pszContent;
+    UINT        cButtons;
+    const TASKDIALOG_BUTTON *pButtons;
+    int         nDefaultButton;
+    UINT        cRadioButtons;
+    const TASKDIALOG_BUTTON *pRadioButtons;
+    int         nDefaultRadioButton;
+    PCWSTR      pszVerificationText;
+    PCWSTR      pszExpandedInformation;
+    PCWSTR      pszExpandedControlText;
+    PCWSTR      pszCollapsedControlText;
+    union
+    {
+        HICON   hFooterIcon;
+        PCWSTR  pszFooterIcon;
+    } DUMMYUNIONNAME2;
+    PCWSTR      pszFooter;
+    PFTASKDIALOGCALLBACK pfCallback;
+    LONG_PTR    lpCallbackData;
+    UINT        cxWidth;
+} TASKDIALOGCONFIG;
+
+HRESULT
+WINAPI
+TaskDialogIndirect(
+  _In_ const TASKDIALOGCONFIG *,
+  _Out_opt_ int *,
+  _Out_opt_ int *,
+  _Out_opt_ BOOL *);
 
-#define DPAM_SORTED    1
-#define DPAM_NORMAL    2
-#define DPAM_UNION     4
-#define DPAM_INTERSECT 8
+#include <poppack.h>
 
-#define DPAMM_MERGE    1
-#define DPAMM_DELETE   2
-#define DPAMM_INSERT   3
+#endif /* NOTASKDIALOG */
 
 #ifdef __cplusplus
 }
 #endif
+
 #endif
 #endif