/*
 * Copyright (C) 2008 Vijay Kiran Kamuju
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

/* Macro to deal with LP64 <=> LLP64 differences in numeric constants with 'l' modifier */
#ifndef __MSABI_LONG
# if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__)
#  define __MSABI_LONG(x)         x ## l
# else
#  define __MSABI_LONG(x)         x
# endif
#endif

/* Header Control */
#define HDS_HORZ            0x0000
#define HDS_BUTTONS         0x0002
#define HDS_HOTTRACK        0x0004
#define HDS_HIDDEN          0x0008
#define HDS_DRAGDROP        0x0040
#define HDS_FULLDRAG        0x0080
#define HDS_FILTERBAR       0x0100
#define HDS_FLAT            0x0200
#define HDS_CHECKBOXES      0x0400
#define HDS_NOSIZING        0x0800
#define HDS_OVERFLOW        0x1000

/* Rebar Control */
#define RBS_TOOLTIPS        0x0100
#define RBS_VARHEIGHT       0x0200
#define RBS_BANDBORDERS     0x0400
#define RBS_FIXEDORDER      0x0800
#define RBS_REGISTERDROP    0x1000
#define RBS_AUTOSIZE        0x2000
#define RBS_VERTICALGRIPPER 0x4000
#define RBS_DBLCLKTOGGLE    0x8000

/* Tool tips */
#define TTS_ALWAYSTIP       0x01
#define TTS_NOPREFIX        0x02
#define TTS_NOANIMATE       0x10
#define TTS_NOFADE          0x20
#define TTS_BALLOON         0x40
#define TTS_CLOSE           0x80
#define TTS_USEVISUALSTYLE  0x100

/* Statusbar Control */
#define SBARS_SIZEGRIP      0x0100
#define SBARS_TOOLTIPS      0x0800
#define SBT_TOOLTIPS        0x0800

/* Toolbar Control */
#define TBS_AUTOTICKS       0x0001
#define TBS_VERT            0x0002
#define TBS_HORZ            0x0000
#define TBS_TOP             0x0004
#define TBS_BOTTOM          0x0000
#define TBS_LEFT            0x0004
#define TBS_RIGHT           0x0000
#define TBS_BOTH            0x0008
#define TBS_NOTICKS         0x0010
#define TBS_ENABLESELRANGE  0x0020
#define TBS_FIXEDLENGTH     0x0040
#define TBS_NOTHUMB         0x0080
#define TBS_TOOLTIPS        0x0100
#define TBS_REVERSED        0x0200
#define TBS_DOWNISLEFT      0x0400
#define TBS_NOTIFYBEFOREREMOVE 0x0800
#define TBS_TRANSPARENTBKGND 0x1000

/* UpDown Control */
#define UDS_WRAP            0x0001
#define UDS_SETBUDDYINT     0x0002
#define UDS_ALIGNRIGHT      0x0004
#define UDS_ALIGNLEFT       0x0008
#define UDS_AUTOBUDDY       0x0010
#define UDS_ARROWKEYS       0x0020
#define UDS_HORZ            0x0040
#define UDS_NOTHOUSANDS     0x0080
#define UDS_HOTTRACK        0x0100

/* Progressbar Control */
#define PBS_SMOOTH          0x01
#define PBS_VERTICAL        0x04
#define PBS_MARQUEE         0x08
#define PBS_SMOOTHREVERSE   0x10

/* Common Control Styles */
#define CCS_TOP             __MSABI_LONG(0x00000001)
#define CCS_NOMOVEY         __MSABI_LONG(0x00000002)
#define CCS_BOTTOM          __MSABI_LONG(0x00000003)
#define CCS_NORESIZE        __MSABI_LONG(0x00000004)
#define CCS_NOPARENTALIGN   __MSABI_LONG(0x00000008)
#define CCS_ADJUSTABLE      __MSABI_LONG(0x00000020)
#define CCS_NODIVIDER       __MSABI_LONG(0x00000040)
#define CCS_VERT            __MSABI_LONG(0x00000080)
#define CCS_LEFT            (CCS_VERT | CCS_TOP)
#define CCS_RIGHT           (CCS_VERT | CCS_BOTTOM)
#define CCS_NOMOVEX         (CCS_VERT | CCS_NOMOVEY)

/* Listview Control */
#define LVS_ICON            0x0000
#define LVS_REPORT          0x0001
#define LVS_SMALLICON       0x0002
#define LVS_LIST            0x0003
#define LVS_TYPEMASK        0x0003
#define LVS_SINGLESEL       0x0004
#define LVS_SHOWSELALWAYS   0x0008
#define LVS_SORTASCENDING   0x0010
#define LVS_SORTDESCENDING  0x0020
#define LVS_SHAREIMAGELISTS 0x0040
#define LVS_NOLABELWRAP     0x0080
#define LVS_AUTOARRANGE     0x0100
#define LVS_EDITLABELS      0x0200
#define LVS_OWNERDATA       0x1000
#define LVS_NOSCROLL        0x2000
#define LVS_TYPESTYLEMASK   0xfc00
#define LVS_ALIGNTOP        0x0000
#define LVS_ALIGNLEFT       0x0800
#define LVS_ALIGNMASK       0x0c00
#define LVS_OWNERDRAWFIXED  0x0400
#define LVS_NOCOLUMNHEADER  0x4000
#define LVS_NOSORTHEADER    0x8000

/* Treeview Control */
#define TVS_HASBUTTONS      0x0001
#define TVS_HASLINES        0x0002
#define TVS_LINESATROOT     0x0004
#define TVS_EDITLABELS      0x0008
#define TVS_DISABLEDRAGDROP 0x0010
#define TVS_SHOWSELALWAYS   0x0020
#define TVS_RTLREADING      0x0040
#define TVS_NOTOOLTIPS      0x0080
#define TVS_CHECKBOXES      0x0100
#define TVS_TRACKSELECT     0x0200
#define TVS_SINGLEEXPAND    0x0400
#define TVS_INFOTIP         0x0800
#define TVS_FULLROWSELECT   0x1000
#define TVS_NOSCROLL        0x2000
#define TVS_NONEVENHEIGHT   0x4000
#define TVS_NOHSCROLL       0x8000

/* Tab Control */
#define TCS_SCROLLOPPOSITE  0x0001   /* assumes multiline tab */
#define TCS_BOTTOM          0x0002
#define TCS_RIGHT           0x0002
#define TCS_MULTISELECT     0x0004  /* allow multi-select in button mode */
#define TCS_FLATBUTTONS     0x0008
#define TCS_FORCEICONLEFT   0x0010
#define TCS_FORCELABELLEFT  0x0020
#define TCS_HOTTRACK        0x0040
#define TCS_VERTICAL        0x0080
#define TCS_TABS            0x0000
#define TCS_BUTTONS         0x0100
#define TCS_SINGLELINE      0x0000
#define TCS_MULTILINE       0x0200
#define TCS_RIGHTJUSTIFY    0x0000
#define TCS_FIXEDWIDTH      0x0400
#define TCS_RAGGEDRIGHT     0x0800
#define TCS_FOCUSONBUTTONDOWN 0x1000
#define TCS_OWNERDRAWFIXED  0x2000
#define TCS_TOOLTIPS        0x4000
#define TCS_FOCUSNEVER      0x8000

/* Animate Control */
#define ACS_CENTER          0x0001
#define ACS_TRANSPARENT     0x0002
#define ACS_AUTOPLAY        0x0004
#define ACS_TIMER           0x0008  /* no threads, just timers */

/* Month Calendar Control */
#define MCS_DAYSTATE        0x0001
#define MCS_MULTISELECT     0x0002
#define MCS_WEEKNUMBERS     0x0004
#define MCS_NOTODAY         0x0010
#define MCS_NOTODAYCIRCLE   0x0008
#define MCS_NOTRAILINGDATES 0x0040
#define MCS_SHORTDAYSOFWEEK 0x0080
#define MCS_NOSELCHANGEONNAV 0x0100

/* Datetime Control */
#define DTS_SHORTDATEFORMAT 0x0000
#define DTS_UPDOWN          0x0001
#define DTS_SHOWNONE        0x0002
#define DTS_LONGDATEFORMAT  0x0004
#define DTS_TIMEFORMAT      0x0009
#define DTS_SHORTDATECENTURYFORMAT 0x000c
#define DTS_APPCANPARSE     0x0010
#define DTS_RIGHTALIGN      0x0020

/* Pager Control */
#define PGS_VERT            0x00000000
#define PGS_HORZ            0x00000001
#define PGS_AUTOSCROLL      0x00000002
#define PGS_DRAGNDROP       0x00000004

/* Native Font Control */
#define NFS_EDIT            0x0001
#define NFS_STATIC          0x0002
#define NFS_LISTCOMBO       0x0004
#define NFS_BUTTON          0x0008
#define NFS_ALL             0x0010
#define NFS_USEFONTASSOC    0x0020
