Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  commctrl.rs   Sprache: unbekannt

 
Spracherkennung für: .rs vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use ctypes::{c_char, c_int, c_long, c_short, c_void};
use shared::basetsd::{DWORD_PTR, INT_PTR, LONG_PTR, UINT_PTR};
#[cfg(target_pointer_width = "64")] use shared::basetsd::PINT_PTR;
use shared::guiddef::{IID, REFIID};
use shared::minwindef::{
    BOOL, BYTE, DWORD, HINSTANCE, HKEY, INT, LPARAM, LPINT, LRESULT, PUINT, UINT, ULONG, WORD,
    WPARAM,
};
use shared::windef::{
    COLORREF, HBITMAP, HBRUSH, HDC, HICON, HMENU, HPEN, HWND, LPCRECT, LPRECT, POINT, RECT, SIZE,
};
use um::commoncontrols::IImageList;
use um::minwinbase::SYSTEMTIME;
use um::winnt::{CHAR, LANGID, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PVOID, PWSTR, WCHAR};
use um::winuser::{
    CB_DELETESTRING, IMAGE_BITMAP, LPSCROLLINFO, LPTRACKMOUSEEVENT, NMHDR,
    WINDOWPOS, WM_USER,
};
use vc::vcruntime::size_t;
pub type HRESULT = c_long;
extern "system" {
    pub fn InitCommonControls();
}
//138
STRUCT!{struct INITCOMMONCONTROLSEX {
    dwSize: DWORD,
    dwICC: DWORD,
}}
pub type LPINITCOMMONCONTROLSEX = *mut INITCOMMONCONTROLSEX;
pub const ICC_LISTVIEW_CLASSES: DWORD = 0x1;
pub const ICC_TREEVIEW_CLASSES: DWORD = 0x2;
pub const ICC_BAR_CLASSES: DWORD = 0x4;
pub const ICC_TAB_CLASSES: DWORD = 0x8;
pub const ICC_UPDOWN_CLASS: DWORD = 0x10;
pub const ICC_PROGRESS_CLASS: DWORD = 0x20;
pub const ICC_HOTKEY_CLASS: DWORD = 0x40;
pub const ICC_ANIMATE_CLASS: DWORD = 0x80;
pub const ICC_WIN95_CLASSES: DWORD = 0xFF;
pub const ICC_DATE_CLASSES: DWORD = 0x100;
pub const ICC_USEREX_CLASSES: DWORD = 0x200;
pub const ICC_COOL_CLASSES: DWORD = 0x400;
pub const ICC_INTERNET_CLASSES: DWORD = 0x800;
pub const ICC_PAGESCROLLER_CLASS: DWORD = 0x1000;
pub const ICC_NATIVEFNTCTL_CLASS: DWORD = 0x2000;
pub const ICC_STANDARD_CLASSES: DWORD = 0x4000;
pub const ICC_LINK_CLASS: DWORD = 0x8000;
extern "system" {
    pub fn InitCommonControlsEx(
        lpInitCtrls: *const INITCOMMONCONTROLSEX,
    ) -> BOOL;
}
pub const ODT_HEADER: UINT = 100;
pub const ODT_TAB: UINT = 101;
pub const ODT_LISTVIEW: UINT = 102;
pub const LVM_FIRST: UINT = 0x1000;
pub const TV_FIRST: UINT = 0x1100;
pub const HDM_FIRST: UINT = 0x1200;
pub const TCM_FIRST: UINT = 0x1300;
pub const PGM_FIRST: UINT = 0x1400;
pub const ECM_FIRST: UINT = 0x1500;
pub const BCM_FIRST: UINT = 0x1600;
pub const CBM_FIRST: UINT = 0x1700;
pub const CCM_FIRST: UINT = 0x2000;
pub const CCM_LAST: UINT = CCM_FIRST + 0x200;
pub const CCM_SETBKCOLOR: UINT = CCM_FIRST + 1;
STRUCT!{struct COLORSCHEME {
    dwSize: DWORD,
    clrBtnHighlight: COLORREF,
    clrBtnShadow: COLORREF,
}}
pub type LPCOLORSCHEME = *mut COLORSCHEME;
pub const CCM_SETCOLORSCHEME: UINT = CCM_FIRST + 2;
pub const CCM_GETCOLORSCHEME: UINT = CCM_FIRST + 3;
pub const CCM_GETDROPTARGET: UINT = CCM_FIRST + 4;
pub const CCM_SETUNICODEFORMAT: UINT = CCM_FIRST + 5;
pub const CCM_GETUNICODEFORMAT: UINT = CCM_FIRST + 6;
pub const CCM_SETVERSION: UINT = CCM_FIRST + 7;
pub const CCM_GETVERSION: UINT = CCM_FIRST + 8;
pub const CCM_SETNOTIFYWINDOW: UINT = CCM_FIRST + 9;
pub const CCM_SETWINDOWTHEME: UINT = CCM_FIRST + 0xb;
pub const CCM_DPISCALE: UINT = CCM_FIRST + 0xc;
pub const INFOTIPSIZE: c_int = 1024;
pub const NM_OUTOFMEMORY: UINT = (NM_FIRST as i32 - 1) as u32;
pub const NM_CLICK: UINT = (NM_FIRST as i32 - 2) as u32;
pub const NM_DBLCLK: UINT = (NM_FIRST as i32 - 3) as u32;
pub const NM_RETURN: UINT = (NM_FIRST as i32 - 4) as u32;
pub const NM_RCLICK: UINT = (NM_FIRST as i32 - 5) as u32;
pub const NM_RDBLCLK: UINT = (NM_FIRST as i32 - 6) as u32;
pub const NM_SETFOCUS: UINT = (NM_FIRST as i32 - 7) as u32;
pub const NM_KILLFOCUS: UINT = (NM_FIRST as i32 - 8) as u32;
pub const NM_CUSTOMDRAW: UINT = (NM_FIRST as i32 - 12) as u32;
pub const NM_HOVER: UINT = (NM_FIRST as i32 - 13) as u32;
pub const NM_NCHITTEST: UINT = (NM_FIRST as i32 - 14) as u32;
pub const NM_KEYDOWN: UINT = (NM_FIRST as i32 - 15) as u32;
pub const NM_RELEASEDCAPTURE: UINT = (NM_FIRST as i32 - 16) as u32;
pub const NM_SETCURSOR: UINT = (NM_FIRST as i32 - 17) as u32;
pub const NM_CHAR: UINT = (NM_FIRST as i32 - 18) as u32;
pub const NM_TOOLTIPSCREATED: UINT = (NM_FIRST as i32 - 19) as u32;
pub const NM_LDOWN: UINT = (NM_FIRST as i32 - 20) as u32;
pub const NM_RDOWN: UINT = (NM_FIRST as i32 - 21) as u32;
pub const NM_THEMECHANGED: UINT = (NM_FIRST as i32 - 22) as u32;
pub const NM_FONTCHANGED: UINT = (NM_FIRST as i32 - 23) as u32;
pub const NM_CUSTOMTEXT: UINT = (NM_FIRST as i32 - 24) as u32;
pub const NM_TVSTATEIMAGECHANGING: UINT = (NM_FIRST as i32 - 24) as u32;
STRUCT!{struct NMTOOLTIPSCREATED {
    hdr: NMHDR,
    hwndToolTips: HWND,
}}
pub type LPNMTOOLTIPSCREATED = *mut NMTOOLTIPSCREATED;
STRUCT!{struct NMMOUSE {
    hdr: NMHDR,
    dwItemSpec: DWORD_PTR,
    dwItemData: DWORD_PTR,
    pt: POINT,
    dwHitInfo: LPARAM,
}}
pub type LPNMMOUSE = *mut NMMOUSE;
pub type NMCLICK = NMMOUSE;
pub type LPNMCLICK = LPNMMOUSE;
STRUCT!{struct NMOBJECTNOTIFY {
    hdr: NMHDR,
    iItem: c_int,
    piid: *const IID,
    pObject: *mut c_void,
    hResult: HRESULT,
    dwFlags: DWORD,
}}
pub type LPNMOBJECTNOTIFY = *mut NMOBJECTNOTIFY;
STRUCT!{struct NMKEY {
    hdr: NMHDR,
    nVKey: UINT,
    uFlags: UINT,
}}
pub type LPNMKEY = *mut NMKEY;
STRUCT!{struct NMCHAR {
    hdr: NMHDR,
    ch: UINT,
    dwItemPrev: DWORD,
    dwItemNext: DWORD,
}}
pub type LPNMCHAR = *mut NMCHAR;
STRUCT!{struct NMCUSTOMTEXT {
    hdr: NMHDR,
    hDC: HDC,
    lpString: LPCWSTR,
    nCount: c_int,
    lpRect: LPRECT,
    uFormat: UINT,
    fLink: BOOL,
}}
pub type LPNMCUSTOMTEXT = *mut NMCUSTOMTEXT;
pub const NM_FIRST: UINT = 0;
pub const NM_LAST: UINT = -99i32 as u32;
pub const LVN_FIRST: UINT = -100i32 as u32;
pub const LVN_LAST: UINT = -199i32 as u32;
pub const HDN_FIRST: UINT = -300i32 as u32;
pub const HDN_LAST: UINT = -399i32 as u32;
pub const TVN_FIRST: UINT = -400i32 as u32;
pub const TVN_LAST: UINT = -499i32 as u32;
pub const TTN_FIRST: UINT = -520i32 as u32;
pub const TTN_LAST: UINT = -549i32 as u32;
pub const TCN_FIRST: UINT = -550i32 as u32;
pub const TCN_LAST: UINT = -580i32 as u32;
pub const CDN_FIRST: UINT = -601i32 as u32;
pub const CDN_LAST: UINT = -699i32 as u32;
pub const TBN_FIRST: UINT = -700i32 as u32;
pub const TBN_LAST: UINT = -720i32 as u32;
pub const UDN_FIRST: UINT = -721i32 as u32;
pub const UDN_LAST: UINT = -729i32 as u32;
pub const DTN_FIRST: UINT = -740i32 as u32;
pub const DTN_LAST: UINT = -745i32 as u32;
pub const MCN_FIRST: UINT = -746i32 as u32;
pub const MCN_LAST: UINT = -752i32 as u32;
pub const DTN_FIRST2: UINT = -753i32 as u32;
pub const DTN_LAST2: UINT = -799i32 as u32;
pub const CBEN_FIRST: UINT = -800i32 as u32;
pub const CBEN_LAST: UINT = -830i32 as u32;
pub const RBN_FIRST: UINT = -831i32 as u32;
pub const RBN_LAST: UINT = -859i32 as u32;
pub const IPN_FIRST: UINT = -860i32 as u32;
pub const IPN_LAST: UINT = -879i32 as u32;
pub const SBN_FIRST: UINT = -880i32 as u32;
pub const SBN_LAST: UINT = -899i32 as u32;
pub const PGN_FIRST: UINT = -900i32 as u32;
pub const PGN_LAST: UINT = -950i32 as u32;
pub const WMN_FIRST: UINT = -1000i32 as u32;
pub const WMN_LAST: UINT = -1200i32 as u32;
pub const BCN_FIRST: UINT = -1250i32 as u32;
pub const BCN_LAST: UINT = -1350i32 as u32;
pub const TRBN_FIRST: UINT = -1501i32 as u32;
pub const TRBN_LAST: UINT = -1519i32 as u32;
pub const MSGF_COMMCTRL_BEGINDRAG: c_int = 0x4200;
pub const MSGF_COMMCTRL_SIZEHEADER: c_int = 0x4201;
pub const MSGF_COMMCTRL_DRAGSELECT: c_int = 0x4202;
pub const MSGF_COMMCTRL_TOOLBARCUST: c_int = 0x4203;
pub const CDRF_DODEFAULT: LRESULT = 0x00000000;
pub const CDRF_NEWFONT: LRESULT = 0x00000002;
pub const CDRF_SKIPDEFAULT: LRESULT = 0x00000004;
pub const CDRF_DOERASE: LRESULT = 0x00000008;
pub const CDRF_SKIPPOSTPAINT: LRESULT = 0x00000100;
pub const CDRF_NOTIFYPOSTPAINT: LRESULT = 0x00000010;
pub const CDRF_NOTIFYITEMDRAW: LRESULT = 0x00000020;
pub const CDRF_NOTIFYSUBITEMDRAW: LRESULT = 0x00000020;
pub const CDRF_NOTIFYPOSTERASE: LRESULT = 0x00000040;
pub const CDDS_PREPAINT: DWORD = 0x00000001;
pub const CDDS_POSTPAINT: DWORD = 0x00000002;
pub const CDDS_PREERASE: DWORD = 0x00000003;
pub const CDDS_POSTERASE: DWORD = 0x00000004;
pub const CDDS_ITEM: DWORD = 0x00010000;
pub const CDDS_ITEMPREPAINT: DWORD = CDDS_ITEM | CDDS_PREPAINT;
pub const CDDS_ITEMPOSTPAINT: DWORD = CDDS_ITEM | CDDS_POSTPAINT;
pub const CDDS_ITEMPREERASE: DWORD = CDDS_ITEM | CDDS_PREERASE;
pub const CDDS_ITEMPOSTERASE: DWORD = CDDS_ITEM | CDDS_POSTERASE;
pub const CDDS_SUBITEM: DWORD = 0x00020000;
pub const CDIS_SELECTED: UINT = 0x0001;
pub const CDIS_GRAYED: UINT = 0x0002;
pub const CDIS_DISABLED: UINT = 0x0004;
pub const CDIS_CHECKED: UINT = 0x0008;
pub const CDIS_FOCUS: UINT = 0x0010;
pub const CDIS_DEFAULT: UINT = 0x0020;
pub const CDIS_HOT: UINT = 0x0040;
pub const CDIS_MARKED: UINT = 0x0080;
pub const CDIS_INDETERMINATE: UINT = 0x0100;
pub const CDIS_SHOWKEYBOARDCUES: UINT = 0x0200;
pub const CDIS_NEARHOT: UINT = 0x0400;
pub const CDIS_OTHERSIDEHOT: UINT = 0x0800;
pub const CDIS_DROPHILITED: UINT = 0x1000;
STRUCT!{struct NMCUSTOMDRAW {
    hdr: NMHDR,
    dwDrawStage: DWORD,
    hdc: HDC,
    rc: RECT,
    dwItemSpec: DWORD_PTR,
    uItemState: UINT,
    lItemlParam: LPARAM,
}}
pub type LPNMCUSTOMDRAW = *mut NMCUSTOMDRAW;
STRUCT!{struct NMTTCUSTOMDRAW {
    nmcd: NMCUSTOMDRAW,
    uDrawFlags: UINT,
}}
pub type LPNMTTCUSTOMDRAW = *mut NMTTCUSTOMDRAW;
STRUCT!{struct NMCUSTOMSPLITRECTINFO {
    hdr: NMHDR,
    rcClient: RECT,
    rcButton: RECT,
    rcSplit: RECT,
}}
pub type LPNMCUSTOMSPLITRECTINFO = *mut NMCUSTOMSPLITRECTINFO;
pub const NM_GETCUSTOMSPLITRECT: UINT = BCN_FIRST + 0x0003;
pub const CLR_NONE: DWORD = 0xFFFFFFFF;
pub const CLR_DEFAULT: DWORD = 0xFF000000;
pub enum IMAGELIST {}
pub type HIMAGELIST = *mut IMAGELIST;
STRUCT!{struct IMAGELISTDRAWPARAMS {
    cbSize: DWORD,
    himl: HIMAGELIST,
    i: c_int,
    hdcDst: HDC,
    x: c_int,
    y: c_int,
    cx: c_int,
    cy: c_int,
    xBitmap: c_int,
    yBitmap: c_int,
    rgbBk: COLORREF,
    rgbFg: COLORREF,
    fStyle: UINT,
    dwRop: DWORD,
    fState: DWORD,
    Frame: DWORD,
    crEffect: COLORREF,
}}
pub type LPIMAGELISTDRAWPARAMS = *mut IMAGELISTDRAWPARAMS;
pub const ILC_MASK: UINT = 0x00000001;
pub const ILC_COLOR: UINT = 0x00000000;
pub const ILC_COLORDDB: UINT = 0x000000FE;
pub const ILC_COLOR4: UINT = 0x00000004;
pub const ILC_COLOR8: UINT = 0x00000008;
pub const ILC_COLOR16: UINT = 0x00000010;
pub const ILC_COLOR24: UINT = 0x00000018;
pub const ILC_COLOR32: UINT = 0x00000020;
pub const ILC_PALETTE: UINT = 0x00000800;
pub const ILC_MIRROR: UINT = 0x00002000;
pub const ILC_PERITEMMIRROR: UINT = 0x00008000;
pub const ILC_ORIGINALSIZE: UINT = 0x00010000;
pub const ILC_HIGHQUALITYSCALE: UINT = 0x00020000;
extern "system" {
    pub fn ImageList_Create(
        cx: c_int,
        cy: c_int,
        flags: UINT,
        cInitial: c_int,
        cGrow: c_int,
    ) -> HIMAGELIST;
    pub fn ImageList_Destroy(
        himl: HIMAGELIST,
    ) -> BOOL;
    pub fn ImageList_GetImageCount(
        himl: HIMAGELIST,
    ) -> c_int;
    pub fn ImageList_SetImageCount(
        himl: HIMAGELIST,
        uNewCount: UINT,
    ) -> BOOL;
    pub fn ImageList_Add(
        himl: HIMAGELIST,
        hbmImage: HBITMAP,
        hbmMask: HBITMAP,
    ) -> c_int;
    pub fn ImageList_ReplaceIcon(
        himl: HIMAGELIST,
        i: c_int,
        hicon: HICON,
    ) -> c_int;
    pub fn ImageList_SetBkColor(
        himl: HIMAGELIST,
        clrBk: COLORREF,
    ) -> COLORREF;
    pub fn ImageList_GetBkColor(
        himl: HIMAGELIST,
    ) -> COLORREF;
    pub fn ImageList_SetOverlayImage(
        himl: HIMAGELIST,
        iImage: c_int,
        iOverlay: c_int,
    ) -> BOOL;
}
#[inline]
pub unsafe fn ImageList_AddIcon(himl: HIMAGELIST, hicon: HICON) -> c_int {
    ImageList_ReplaceIcon(himl, -1, hicon)
}
pub const ILD_NORMAL: UINT = 0x00000000;
pub const ILD_TRANSPARENT: UINT = 0x00000001;
pub const ILD_MASK: UINT = 0x00000010;
pub const ILD_IMAGE: UINT = 0x00000020;
pub const ILD_ROP: UINT = 0x00000040;
pub const ILD_BLEND25: UINT = 0x00000002;
pub const ILD_BLEND50: UINT = 0x00000004;
pub const ILD_OVERLAYMASK: UINT = 0x00000F00;
#[inline]
pub fn INDEXTOOVERLAYMASK(i: UINT) -> UINT {
    i << 8
}
pub const ILD_PRESERVEALPHA: UINT = 0x00001000;
pub const ILD_SCALE: UINT = 0x00002000;
pub const ILD_DPISCALE: UINT = 0x00004000;
pub const ILD_ASYNC: UINT = 0x00008000;
pub const ILD_SELECTED: UINT = ILD_BLEND50;
pub const ILD_FOCUS: UINT = ILD_BLEND25;
pub const ILD_BLEND: UINT = ILD_BLEND50;
pub const CLR_HILIGHT: DWORD = CLR_DEFAULT;
pub const ILS_NORMAL: DWORD = 0x00000000;
pub const ILS_GLOW: DWORD = 0x00000001;
pub const ILS_SHADOW: DWORD = 0x00000002;
pub const ILS_SATURATE: DWORD = 0x00000004;
pub const ILS_ALPHA: DWORD = 0x00000008;
pub const ILGT_NORMAL: DWORD = 0x00000000;
pub const ILGT_ASYNC : DWORD = 0x00000001;
extern "system" {
    pub fn ImageList_Draw(
        himl: HIMAGELIST,
        i: c_int,
        hdcDst: HDC,
        x: c_int,
        y: c_int,
        fStyle: UINT,
    ) -> BOOL;
}
pub const HBITMAP_CALLBACK: HBITMAP = -1isize as HBITMAP;
extern "system" {
    pub fn ImageList_Replace(
        himl: HIMAGELIST,
        i: c_int,
        hbmImage: HBITMAP,
        hbmMask: HBITMAP,
    ) -> BOOL;
    pub fn ImageList_AddMasked(
        himl: HIMAGELIST,
        hbmImage: HBITMAP,
        crMask: COLORREF,
    ) -> c_int;
    pub fn ImageList_DrawEx(
        himl: HIMAGELIST,
        i: c_int,
        hdcDst: HDC,
        x: c_int,
        y: c_int,
        dx: c_int,
        dy: c_int,
        rgbBk: COLORREF,
        rgbFg: COLORREF,
        fStyle: UINT,
    ) -> BOOL;
    pub fn ImageList_DrawIndirect(
        pimldp: *mut IMAGELISTDRAWPARAMS,
    ) -> BOOL;
    pub fn ImageList_Remove(
        himl: HIMAGELIST,
        i: c_int,
    ) -> BOOL;
    pub fn ImageList_GetIcon(
        himl: HIMAGELIST,
        i: c_int,
        flags: UINT,
    ) -> HICON;
    pub fn ImageList_LoadImageA(
        hi: HINSTANCE,
        lpbmp: LPCSTR,
        cx: c_int,
        cGrow: c_int,
        crMask: COLORREF,
        uType: UINT,
        uFlags: UINT,
    ) -> HIMAGELIST;
    pub fn ImageList_LoadImageW(
        hi: HINSTANCE,
        lpbmp: LPCWSTR,
        cx: c_int,
        cGrow: c_int,
        crMask: COLORREF,
        uType: UINT,
        uFlags: UINT,
    ) -> HIMAGELIST;
}
pub const ILCF_MOVE: UINT = 0x00000000;
pub const ILCF_SWAP: UINT = 0x00000001;
extern "system" {
    pub fn ImageList_Copy(
        himlDst: HIMAGELIST,
        iDst: c_int,
        himlSrc: HIMAGELIST,
        iSrc: c_int,
        uFlags: UINT,
    ) -> BOOL;
    pub fn ImageList_BeginDrag(
        himlTrack: HIMAGELIST,
        iTrack: c_int,
        dxHotspot: c_int,
        dyHotspot: c_int,
    ) -> BOOL;
    pub fn ImageList_EndDrag();
    pub fn ImageList_DragEnter(
        hwndLock: HWND,
        x: c_int,
        y: c_int,
    ) -> BOOL;
    pub fn ImageList_DragLeave(
        hwndLock: HWND,
    ) -> BOOL;
    pub fn ImageList_DragMove(
        x: c_int,
        y: c_int,
    ) -> BOOL;
    pub fn ImageList_SetDragCursorImage(
        himlDrag: HIMAGELIST,
        iDrag: c_int,
        dxHotspot: c_int,
        dyHotspot: c_int,
    ) -> BOOL;
    pub fn ImageList_DragShowNolock(
        fShow: BOOL,
    ) -> BOOL;
    pub fn ImageList_GetDragImage(
        ppt: *mut POINT,
        pptHotspot: *mut POINT,
    ) -> HIMAGELIST;
}
#[inline]
pub unsafe fn ImageList_RemoveAll(himl: HIMAGELIST) -> BOOL {
    ImageList_Remove(himl, -1)
}
#[inline]
pub unsafe fn ImageList_ExtractIcon(_: HINSTANCE, himl: HIMAGELIST, i: c_int) -> HICON {
    ImageList_GetIcon(himl, i, 0)
}
#[inline]
pub unsafe fn ImageList_LoadBitmap(
    hi: HINSTANCE,
    lpbmp: LPCWSTR,
    cx: c_int,
    cGrow: c_int,
    crMask: COLORREF,
) -> HIMAGELIST {
    ImageList_LoadImageW(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0)
}
pub enum IStream {}
extern "system" {
    pub fn ImageList_Read(
        pstm: *mut IStream,
    ) -> HIMAGELIST;
    pub fn ImageList_Write(
        himl: HIMAGELIST,
        pstm: *mut IStream,
    ) -> BOOL;
}
pub const ILP_NORMAL: DWORD = 0;
pub const ILP_DOWNLEVEL: DWORD = 0;
extern "system" {
    pub fn ImageList_ReadEx(
        dwFlags: DWORD,
        pstm: *mut IStream,
        riid: REFIID,
        ppv: *mut PVOID,
    ) -> HRESULT;
    pub fn ImageList_WriteEx(
        himl: HIMAGELIST,
        dwFlags: DWORD,
        pstm: *mut IStream,
    ) -> HRESULT;
}
STRUCT!{struct IMAGEINFO {
    hbmImage: HBITMAP,
    hbmMask: HBITMAP,
    Unused1: c_int,
    Unused2: c_int,
    rcImage: RECT,
}}
pub type LPIMAGEINFO = *mut IMAGEINFO;
extern "system" {
    pub fn ImageList_GetIconSize(
        himl: HIMAGELIST,
        cx: *mut c_int,
        cy: *mut c_int,
    ) -> BOOL;
    pub fn ImageList_SetIconSize(
        himl: HIMAGELIST,
        cx: c_int,
        cy: c_int,
    ) -> BOOL;
    pub fn ImageList_GetImageInfo(
        himl: HIMAGELIST,
        i: c_int,
        pImageInfo: *mut IMAGEINFO,
    ) -> BOOL;
    pub fn ImageList_Merge(
        himl1: HIMAGELIST,
        i1: c_int,
        himl2: HIMAGELIST,
        i2: c_int,
        dx: c_int,
        dy: c_int,
    ) -> HIMAGELIST;
    pub fn ImageList_Duplicate(
        himl: HIMAGELIST,
    ) -> HIMAGELIST;
    pub fn HIMAGELIST_QueryInterface(
        himl: HIMAGELIST,
        riid: REFIID,
        ppv: *mut *mut c_void,
    ) -> HRESULT;
}
#[inline]
pub fn IImageListToHIMAGELIST(himl: *mut IImageList) -> HIMAGELIST {
    himl as HIMAGELIST
}
pub const WC_HEADER: &'static str = "SysHeader32";
pub const HDS_HORZ: DWORD = 0x0000;
pub const HDS_BUTTONS: DWORD = 0x0002;
pub const HDS_HOTTRACK: DWORD = 0x0004;
pub const HDS_HIDDEN: DWORD = 0x0008;
pub const HDS_DRAGDROP: DWORD = 0x0040;
pub const HDS_FULLDRAG: DWORD = 0x0080;
pub const HDS_FILTERBAR: DWORD = 0x0100;
pub const HDS_FLAT: DWORD = 0x0200;
pub const HDS_CHECKBOXES: DWORD = 0x0400;
pub const HDS_NOSIZING: DWORD = 0x0800;
pub const HDS_OVERFLOW: DWORD = 0x1000;
pub const HDFT_ISSTRING: UINT = 0x0000;
pub const HDFT_ISNUMBER: UINT = 0x0001;
pub const HDFT_ISDATE: UINT = 0x0002;
pub const HDFT_HASNOVALUE: UINT = 0x8000;
STRUCT!{struct HD_TEXTFILTERA {
    pszText: LPSTR,
    cchTextMax: INT,
}}
pub type LPHD_TEXTFILTERA = *mut HD_TEXTFILTERA;
STRUCT!{struct HD_TEXTFILTERW {
    pszText: LPWSTR,
    cchTextMax: INT,
}}
pub type LPHD_TEXTFILTERW = *mut HD_TEXTFILTERW;
STRUCT!{struct HDITEMA {
    mask: UINT,
    cxy: c_int,
    pszText: LPSTR,
    hbm: HBITMAP,
    cchTextMax: c_int,
    fmt: c_int,
    lParam: LPARAM,
    iImage: c_int,
    iOrder: c_int,
    _type: UINT,
    pvFilter: *mut c_void,
    state: UINT,
}}
pub type LPHDITEMA = *mut HDITEMA;
STRUCT!{struct HDITEMW {
    mask: UINT,
    cxy: c_int,
    pszText: LPWSTR,
    hbm: HBITMAP,
    cchTextMax: c_int,
    fmt: c_int,
    lParam: LPARAM,
    iImage: c_int,
    iOrder: c_int,
    _type: UINT,
    pvFilter: *mut c_void,
    state: UINT,
}}
pub type LPHDITEMW = *mut HDITEMW;
pub const HDI_WIDTH: UINT = 0x0001;
pub const HDI_HEIGHT: UINT = HDI_WIDTH;
pub const HDI_TEXT: UINT = 0x0002;
pub const HDI_FORMAT: UINT = 0x0004;
pub const HDI_LPARAM: UINT = 0x0008;
pub const HDI_BITMAP: UINT = 0x0010;
pub const HDI_IMAGE: UINT = 0x0020;
pub const HDI_DI_SETITEM: UINT = 0x0040;
pub const HDI_ORDER: UINT = 0x0080;
pub const HDI_FILTER: UINT = 0x0100;
pub const HDI_STATE: UINT = 0x0200;
pub const HDF_LEFT: c_int = 0x0000;
pub const HDF_RIGHT: c_int = 0x0001;
pub const HDF_CENTER: c_int = 0x0002;
pub const HDF_JUSTIFYMASK: c_int = 0x0003;
pub const HDF_RTLREADING: c_int = 0x0004;
pub const HDF_BITMAP: c_int = 0x2000;
pub const HDF_STRING: c_int = 0x4000;
pub const HDF_OWNERDRAW: c_int = 0x8000;
pub const HDF_IMAGE: c_int = 0x0800;
pub const HDF_BITMAP_ON_RIGHT: c_int = 0x1000;
pub const HDF_SORTUP: c_int = 0x0400;
pub const HDF_SORTDOWN: c_int = 0x0200;
pub const HDF_CHECKBOX: c_int = 0x0040;
pub const HDF_CHECKED: c_int = 0x0080;
pub const HDF_FIXEDWIDTH: c_int = 0x0100;
pub const HDF_SPLITBUTTON: c_int = 0x1000000;
pub const HDIS_FOCUSED: UINT = 0x00000001;
pub const HDM_GETITEMCOUNT: UINT = HDM_FIRST + 0;
pub const HDM_INSERTITEMA: UINT = HDM_FIRST + 1;
pub const HDM_INSERTITEMW: UINT = HDM_FIRST + 10;
pub const HDM_DELETEITEM: UINT = HDM_FIRST + 2;
pub const HDM_GETITEMA: UINT = HDM_FIRST + 3;
pub const HDM_GETITEMW: UINT = HDM_FIRST + 11;
pub const HDM_SETITEMA: UINT = HDM_FIRST + 4;
pub const HDM_SETITEMW: UINT = HDM_FIRST + 12;
STRUCT!{struct HDLAYOUT {
    prc: *mut RECT,
    pwpos: *mut WINDOWPOS,
}}
pub type LPHDLAYOUT = *mut HDLAYOUT;
pub const HDM_LAYOUT: UINT = HDM_FIRST + 5;
pub const HHT_NOWHERE: UINT = 0x0001;
pub const HHT_ONHEADER: UINT = 0x0002;
pub const HHT_ONDIVIDER: UINT = 0x0004;
pub const HHT_ONDIVOPEN: UINT = 0x0008;
pub const HHT_ONFILTER: UINT = 0x0010;
pub const HHT_ONFILTERBUTTON: UINT = 0x0020;
pub const HHT_ABOVE: UINT = 0x0100;
pub const HHT_BELOW: UINT = 0x0200;
pub const HHT_TORIGHT: UINT = 0x0400;
pub const HHT_TOLEFT: UINT = 0x0800;
pub const HHT_ONITEMSTATEICON: UINT = 0x1000;
pub const HHT_ONDROPDOWN: UINT = 0x2000;
pub const HHT_ONOVERFLOW: UINT = 0x4000;
STRUCT!{struct HDHITTESTINFO {
    pt: POINT,
    flags: UINT,
    iItem: c_int,
}}
pub type LPHDHITTESTINFO = *mut HDHITTESTINFO;
pub type HD_HITTESTINFO = HDHITTESTINFO;
pub const HDSIL_NORMAL: WPARAM = 0;
pub const HDSIL_STATE: WPARAM = 1;
pub const HDM_HITTEST: UINT = HDM_FIRST + 6;
pub const HDM_GETITEMRECT: UINT = HDM_FIRST + 7;
pub const HDM_SETIMAGELIST: UINT = HDM_FIRST + 8;
pub const HDM_GETIMAGELIST: UINT = HDM_FIRST + 9;
pub const HDM_ORDERTOINDEX: UINT = HDM_FIRST + 15;
pub const HDM_CREATEDRAGIMAGE: UINT = HDM_FIRST + 16;
pub const HDM_GETORDERARRAY: UINT = HDM_FIRST + 17;
pub const HDM_SETORDERARRAY: UINT = HDM_FIRST + 18;
pub const HDM_SETHOTDIVIDER: UINT = HDM_FIRST + 19;
pub const HDM_SETBITMAPMARGIN: UINT = HDM_FIRST + 20;
pub const HDM_GETBITMAPMARGIN: UINT = HDM_FIRST + 21;
pub const HDM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const HDM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const HDM_SETFILTERCHANGETIMEOUT: UINT = HDM_FIRST + 22;
pub const HDM_EDITFILTER: UINT = HDM_FIRST + 23;
pub const HDM_CLEARFILTER: UINT = HDM_FIRST + 24;
pub const HDM_GETITEMDROPDOWNRECT: UINT = HDM_FIRST + 25;
pub const HDM_GETOVERFLOWRECT: UINT = HDM_FIRST + 26;
pub const HDM_GETFOCUSEDITEM: UINT = HDM_FIRST + 27;
pub const HDM_SETFOCUSEDITEM: UINT = HDM_FIRST + 28;
pub const HDN_ITEMCHANGINGA: UINT = HDN_FIRST - 0;
pub const HDN_ITEMCHANGINGW: UINT = HDN_FIRST - 20;
pub const HDN_ITEMCHANGEDA: UINT = HDN_FIRST - 1;
pub const HDN_ITEMCHANGEDW: UINT = HDN_FIRST - 21;
pub const HDN_ITEMCLICKA: UINT = HDN_FIRST - 2;
pub const HDN_ITEMCLICKW: UINT = HDN_FIRST - 22;
pub const HDN_ITEMDBLCLICKA: UINT = HDN_FIRST - 3;
pub const HDN_ITEMDBLCLICKW: UINT = HDN_FIRST - 23;
pub const HDN_DIVIDERDBLCLICKA: UINT = HDN_FIRST - 5;
pub const HDN_DIVIDERDBLCLICKW: UINT = HDN_FIRST - 25;
pub const HDN_BEGINTRACKA: UINT = HDN_FIRST - 6;
pub const HDN_BEGINTRACKW: UINT = HDN_FIRST - 26;
pub const HDN_ENDTRACKA: UINT = HDN_FIRST - 7;
pub const HDN_ENDTRACKW: UINT = HDN_FIRST - 27;
pub const HDN_TRACKA: UINT = HDN_FIRST - 8;
pub const HDN_TRACKW: UINT = HDN_FIRST - 28;
pub const HDN_GETDISPINFOA: UINT = HDN_FIRST - 9;
pub const HDN_GETDISPINFOW: UINT = HDN_FIRST - 29;
pub const HDN_BEGINDRAG: UINT = HDN_FIRST - 10;
pub const HDN_ENDDRAG: UINT = HDN_FIRST - 11;
pub const HDN_FILTERCHANGE: UINT = HDN_FIRST - 12;
pub const HDN_FILTERBTNCLICK: UINT = HDN_FIRST - 13;
pub const HDN_BEGINFILTEREDIT: UINT = HDN_FIRST - 14;
pub const HDN_ENDFILTEREDIT: UINT = HDN_FIRST - 15;
pub const HDN_ITEMSTATEICONCLICK: UINT = HDN_FIRST - 16;
pub const HDN_ITEMKEYDOWN: UINT = HDN_FIRST - 17;
pub const HDN_DROPDOWN: UINT = HDN_FIRST - 18;
pub const HDN_OVERFLOWCLICK: UINT = HDN_FIRST - 19;
STRUCT!{struct NMHEADERA {
    hdr: NMHDR,
    iItem: c_int,
    iButton: c_int,
    pitem: *mut HDITEMA,
}}
pub type LPNMHEADERA = *mut NMHEADERA;
pub type HD_NOTIFYA = NMHEADERA;
STRUCT!{struct NMHEADERW {
    hdr: NMHDR,
    iItem: c_int,
    iButton: c_int,
    pitem: *mut HDITEMW,
}}
pub type LPNMHEADERW = *mut NMHEADERW;
pub type HD_NOTIFYW = NMHEADERW;
STRUCT!{struct NMHDDISPINFOW {
    hdr: NMHDR,
    iItem: c_int,
    mask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
}}
pub type LPNMHDDISPINFOW = *mut NMHDDISPINFOW;
STRUCT!{struct NMHDDISPINFOA {
    hdr: NMHDR,
    iItem: c_int,
    mask: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
}}
pub type LPNMHDDISPINFOA = *mut NMHDDISPINFOA;
STRUCT!{struct NMHDFILTERBTNCLICK {
    hdr: NMHDR,
    iItem: INT,
    rc: RECT,
}}
pub type LPNMHDFILTERBTNCLICK = *mut NMHDFILTERBTNCLICK;
pub const TOOLBARCLASSNAME: &'static str = "ToolbarWindow32";
#[cfg(target_pointer_width = "32")]
STRUCT!{struct TBBUTTON {
    iBitmap: c_int,
    idCommand: c_int,
    fsState: BYTE,
    fsStyle: BYTE,
    bReserved: [BYTE; 2],
    dwData: DWORD_PTR,
    iString: INT_PTR,
}}
#[cfg(target_pointer_width = "64")]
STRUCT!{struct TBBUTTON {
    iBitmap: c_int,
    idCommand: c_int,
    fsState: BYTE,
    fsStyle: BYTE,
    bReserved: [BYTE; 6],
    dwData: DWORD_PTR,
    iString: INT_PTR,
}}
pub type PTBBUTTON = *mut TBBUTTON;
pub type LPTBBUTTON = *mut TBBUTTON;
pub type LPCTBBUTTON = *const TBBUTTON;
STRUCT!{struct COLORMAP {
    from: COLORREF,
    to: COLORREF,
}}
pub type LPCOLORMAP = *mut COLORMAP;
extern "system" {
    pub fn CreateToolbarEx(
        hwnd: HWND,
        ws: DWORD,
        wID: UINT,
        nBitmaps: c_int,
        hBMInst: HINSTANCE,
        wBMID: UINT_PTR,
        lpButtons: LPCTBBUTTON,
        iNumButtons: c_int,
        dxButton: c_int,
        dyButton: c_int,
        dxBitmap: c_int,
        dyBitmap: c_int,
        uStructSize: UINT,
    ) -> HWND;
    pub fn CreateMappedBitmap(
        hInstance: HINSTANCE,
        idBitmap: INT_PTR,
        wFlags: UINT,
        lpColorMap: LPCOLORMAP,
        iNumMaps: c_int,
    ) -> HBITMAP;
}
pub const CMB_MASKED: UINT = 0x02;
pub const TBSTATE_CHECKED: BYTE = 0x01;
pub const TBSTATE_PRESSED: BYTE = 0x02;
pub const TBSTATE_ENABLED: BYTE = 0x04;
pub const TBSTATE_HIDDEN: BYTE = 0x08;
pub const TBSTATE_INDETERMINATE: BYTE = 0x10;
pub const TBSTATE_WRAP: BYTE = 0x20;
pub const TBSTATE_ELLIPSES: BYTE = 0x40;
pub const TBSTATE_MARKED: BYTE = 0x80;
pub const TBSTYLE_BUTTON: DWORD = 0x0000;
pub const TBSTYLE_SEP: DWORD = 0x0001;
pub const TBSTYLE_CHECK: DWORD = 0x0002;
pub const TBSTYLE_GROUP: DWORD = 0x0004;
pub const TBSTYLE_CHECKGROUP: DWORD = TBSTYLE_GROUP | TBSTYLE_CHECK;
pub const TBSTYLE_DROPDOWN: DWORD = 0x0008;
pub const TBSTYLE_AUTOSIZE: DWORD = 0x0010;
pub const TBSTYLE_NOPREFIX: DWORD = 0x0020;
pub const TBSTYLE_TOOLTIPS: DWORD = 0x0100;
pub const TBSTYLE_WRAPABLE: DWORD = 0x0200;
pub const TBSTYLE_ALTDRAG: DWORD = 0x0400;
pub const TBSTYLE_FLAT: DWORD = 0x0800;
pub const TBSTYLE_LIST: DWORD = 0x1000;
pub const TBSTYLE_CUSTOMERASE: DWORD = 0x2000;
pub const TBSTYLE_REGISTERDROP: DWORD = 0x4000;
pub const TBSTYLE_TRANSPARENT: DWORD = 0x8000;
pub const TBSTYLE_EX_DRAWDDARROWS: DWORD = 0x00000001;
pub const BTNS_BUTTON: DWORD = TBSTYLE_BUTTON;
pub const BTNS_SEP: DWORD = TBSTYLE_SEP;
pub const BTNS_CHECK: DWORD = TBSTYLE_CHECK;
pub const BTNS_GROUP: DWORD = TBSTYLE_GROUP;
pub const BTNS_CHECKGROUP: DWORD = TBSTYLE_CHECKGROUP;
pub const BTNS_DROPDOWN: DWORD = TBSTYLE_DROPDOWN;
pub const BTNS_AUTOSIZE: DWORD = TBSTYLE_AUTOSIZE;
pub const BTNS_NOPREFIX: DWORD = TBSTYLE_NOPREFIX;
pub const BTNS_SHOWTEXT: DWORD = 0x0040;
pub const BTNS_WHOLEDROPDOWN: DWORD = 0x0080;
pub const TBSTYLE_EX_MIXEDBUTTONS: DWORD = 0x00000008;
pub const TBSTYLE_EX_HIDECLIPPEDBUTTONS: DWORD = 0x00000010;
pub const TBSTYLE_EX_MULTICOLUMN: DWORD = 0x00000002;
pub const TBSTYLE_EX_VERTICAL: DWORD = 0x00000004;
pub const TBSTYLE_EX_DOUBLEBUFFER: DWORD = 0x00000080;
STRUCT!{struct NMTBCUSTOMDRAW {
    nmcd: NMCUSTOMDRAW,
    hbrMonoDither: HBRUSH,
    hbrLines: HBRUSH,
    hpenLines: HPEN,
    clrText: COLORREF,
    clrMark: COLORREF,
    clrTextHighlight: COLORREF,
    clrBtnFace: COLORREF,
    clrBtnHighlight: COLORREF,
    clrHighlightHotTrack: COLORREF,
    rcText: RECT,
    nStringBkMode: c_int,
    nHLStringBkMode: c_int,
    iListGap: c_int,
}}
pub type LPNMTBCUSTOMDRAW = *mut NMTBCUSTOMDRAW;
pub const TBCDRF_NOEDGES: LRESULT = 0x00010000;
pub const TBCDRF_HILITEHOTTRACK: LRESULT = 0x00020000;
pub const TBCDRF_NOOFFSET: LRESULT = 0x00040000;
pub const TBCDRF_NOMARK: LRESULT = 0x00080000;
pub const TBCDRF_NOETCHEDEFFECT: LRESULT = 0x00100000;
pub const TBCDRF_BLENDICON: LRESULT = 0x00200000;
pub const TBCDRF_NOBACKGROUND: LRESULT = 0x00400000;
pub const TBCDRF_USECDCOLORS: LRESULT = 0x00800000;
pub const TB_ENABLEBUTTON: UINT = WM_USER + 1;
pub const TB_CHECKBUTTON: UINT = WM_USER + 2;
pub const TB_PRESSBUTTON: UINT = WM_USER + 3;
pub const TB_HIDEBUTTON: UINT = WM_USER + 4;
pub const TB_INDETERMINATE: UINT = WM_USER + 5;
pub const TB_MARKBUTTON: UINT = WM_USER + 6;
pub const TB_ISBUTTONENABLED: UINT = WM_USER + 9;
pub const TB_ISBUTTONCHECKED: UINT = WM_USER + 10;
pub const TB_ISBUTTONPRESSED: UINT = WM_USER + 11;
pub const TB_ISBUTTONHIDDEN: UINT = WM_USER + 12;
pub const TB_ISBUTTONINDETERMINATE: UINT = WM_USER + 13;
pub const TB_ISBUTTONHIGHLIGHTED: UINT = WM_USER + 14;
pub const TB_SETSTATE: UINT = WM_USER + 17;
pub const TB_GETSTATE: UINT = WM_USER + 18;
pub const TB_ADDBITMAP: UINT = WM_USER + 19;
STRUCT!{struct TBADDBITMAP {
    hInst: HINSTANCE,
    nID: UINT_PTR,
}}
pub type LPTBADDBITMAP = *mut TBADDBITMAP;
pub const HINST_COMMCTRL: HINSTANCE = -1isize as HINSTANCE;
pub const IDB_STD_SMALL_COLOR: WPARAM = 0;
pub const IDB_STD_LARGE_COLOR: WPARAM = 1;
pub const IDB_VIEW_SMALL_COLOR: WPARAM = 4;
pub const IDB_VIEW_LARGE_COLOR: WPARAM = 5;
pub const IDB_HIST_SMALL_COLOR: WPARAM = 8;
pub const IDB_HIST_LARGE_COLOR: WPARAM = 9;
pub const IDB_HIST_NORMAL: WPARAM = 12;
pub const IDB_HIST_HOT: WPARAM = 13;
pub const IDB_HIST_DISABLED: WPARAM = 14;
pub const IDB_HIST_PRESSED: WPARAM = 15;
pub const STD_CUT: c_int = 0;
pub const STD_COPY: c_int = 1;
pub const STD_PASTE: c_int = 2;
pub const STD_UNDO: c_int = 3;
pub const STD_REDOW: c_int = 4;
pub const STD_DELETE: c_int = 5;
pub const STD_FILENEW: c_int = 6;
pub const STD_FILEOPEN: c_int = 7;
pub const STD_FILESAVE: c_int = 8;
pub const STD_PRINTPRE: c_int = 9;
pub const STD_PROPERTIES: c_int = 10;
pub const STD_HELP: c_int = 11;
pub const STD_FIND: c_int = 12;
pub const STD_REPLACE: c_int = 13;
pub const STD_PRINT: c_int = 14;
pub const VIEW_LARGEICONS: c_int = 0;
pub const VIEW_SMALLICONS: c_int = 1;
pub const VIEW_LIST: c_int = 2;
pub const VIEW_DETAILS: c_int = 3;
pub const VIEW_SORTNAME: c_int = 4;
pub const VIEW_SORTSIZE: c_int = 5;
pub const VIEW_SORTDATE: c_int = 6;
pub const VIEW_SORTTYPE: c_int = 7;
pub const VIEW_PARENTFOLDER: c_int = 8;
pub const VIEW_NETCONNECT: c_int = 9;
pub const VIEW_NETDISCONNECT: c_int = 10;
pub const VIEW_NEWFOLDER: c_int = 11;
pub const VIEW_VIEWMENU: c_int = 12;
pub const HIST_BACK: c_int = 0;
pub const HIST_FORWARD: c_int = 1;
pub const HIST_FAVORITES: c_int = 2;
pub const HIST_ADDTOFAVORITES: c_int = 3;
pub const HIST_VIEWTREE: c_int = 4;
pub const TB_ADDBUTTONSA: UINT = WM_USER + 20;
pub const TB_INSERTBUTTONA: UINT = WM_USER + 21;
pub const TB_DELETEBUTTON: UINT = WM_USER + 22;
pub const TB_GETBUTTON: UINT = WM_USER + 23;
pub const TB_BUTTONCOUNT: UINT = WM_USER + 24;
pub const TB_COMMANDTOINDEX: UINT = WM_USER + 25;
STRUCT!{struct TBSAVEPARAMSA {
    hkr: HKEY,
    pszSubKey: LPCSTR,
    pszValueName: LPCSTR,
}}
pub type LPTBSAVEPARAMSA = *mut TBSAVEPARAMSA;
STRUCT!{struct TBSAVEPARAMSW {
    hkr: HKEY,
    pszSubKey: LPCWSTR,
    pszValueName: LPCWSTR,
}}
pub type LPTBSAVEPARAMSW = *mut TBSAVEPARAMSW;
pub const TB_SAVERESTOREA: UINT = WM_USER + 26;
pub const TB_SAVERESTOREW: UINT = WM_USER + 76;
pub const TB_CUSTOMIZE: UINT = WM_USER + 27;
pub const TB_ADDSTRINGA: UINT = WM_USER + 28;
pub const TB_ADDSTRINGW: UINT = WM_USER + 77;
pub const TB_GETITEMRECT: UINT = WM_USER + 29;
pub const TB_BUTTONSTRUCTSIZE: UINT = WM_USER + 30;
pub const TB_SETBUTTONSIZE: UINT = WM_USER + 31;
pub const TB_SETBITMAPSIZE: UINT = WM_USER + 32;
pub const TB_AUTOSIZE: UINT = WM_USER + 33;
pub const TB_GETTOOLTIPS: UINT = WM_USER + 35;
pub const TB_SETTOOLTIPS: UINT = WM_USER + 36;
pub const TB_SETPARENT: UINT = WM_USER + 37;
pub const TB_SETROWS: UINT = WM_USER + 39;
pub const TB_GETROWS: UINT = WM_USER + 40;
pub const TB_SETCMDID: UINT = WM_USER + 42;
pub const TB_CHANGEBITMAP: UINT = WM_USER + 43;
pub const TB_GETBITMAP: UINT = WM_USER + 44;
pub const TB_GETBUTTONTEXTA: UINT = WM_USER + 45;
pub const TB_GETBUTTONTEXTW: UINT = WM_USER + 75;
pub const TB_REPLACEBITMAP: UINT = WM_USER + 46;
pub const TB_SETINDENT: UINT = WM_USER + 47;
pub const TB_SETIMAGELIST: UINT = WM_USER + 48;
pub const TB_GETIMAGELIST: UINT = WM_USER + 49;
pub const TB_LOADIMAGES: UINT = WM_USER + 50;
pub const TB_GETRECT: UINT = WM_USER + 51;
pub const TB_SETHOTIMAGELIST: UINT = WM_USER + 52;
pub const TB_GETHOTIMAGELIST: UINT = WM_USER + 53;
pub const TB_SETDISABLEDIMAGELIST: UINT = WM_USER + 54;
pub const TB_GETDISABLEDIMAGELIST: UINT = WM_USER + 55;
pub const TB_SETSTYLE: UINT = WM_USER + 56;
pub const TB_GETSTYLE: UINT = WM_USER + 57;
pub const TB_GETBUTTONSIZE: UINT = WM_USER + 58;
pub const TB_SETBUTTONWIDTH: UINT = WM_USER + 59;
pub const TB_SETMAXTEXTROWS: UINT = WM_USER + 60;
pub const TB_GETTEXTROWS: UINT = WM_USER + 61;
pub const TB_GETOBJECT: UINT = WM_USER + 62;
pub const TB_GETHOTITEM: UINT = WM_USER + 71;
pub const TB_SETHOTITEM: UINT = WM_USER + 72;
pub const TB_SETANCHORHIGHLIGHT: UINT = WM_USER + 73;
pub const TB_GETANCHORHIGHLIGHT: UINT = WM_USER + 74;
pub const TB_MAPACCELERATORA: UINT = WM_USER + 78;
STRUCT!{struct TBINSERTMARK {
    iButton: c_int,
    dwFlags: DWORD,
}}
pub type LPTBINSERTMARK = *mut TBINSERTMARK;
pub const TBIMHT_AFTER: DWORD = 0x00000001;
pub const TBIMHT_BACKGROUND: DWORD = 0x00000002;
pub const TB_GETINSERTMARK: UINT = WM_USER + 79;
pub const TB_SETINSERTMARK: UINT = WM_USER + 80;
pub const TB_INSERTMARKHITTEST: UINT = WM_USER + 81;
pub const TB_MOVEBUTTON: UINT = WM_USER + 82;
pub const TB_GETMAXSIZE: UINT = WM_USER + 83;
pub const TB_SETEXTENDEDSTYLE: UINT = WM_USER + 84;
pub const TB_GETEXTENDEDSTYLE: UINT = WM_USER + 85;
pub const TB_GETPADDING: UINT = WM_USER + 86;
pub const TB_SETPADDING: UINT = WM_USER + 87;
pub const TB_SETINSERTMARKCOLOR: UINT = WM_USER + 88;
pub const TB_GETINSERTMARKCOLOR: UINT = WM_USER + 89;
pub const TB_SETCOLORSCHEME: UINT = CCM_SETCOLORSCHEME;
pub const TB_GETCOLORSCHEME: UINT = CCM_GETCOLORSCHEME;
pub const TB_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const TB_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const TB_MAPACCELERATORW: UINT = WM_USER + 90;
STRUCT!{struct TBREPLACEBITMAP {
    hInstOld: HINSTANCE,
    nIDOld: UINT_PTR,
    hInstNew: HINSTANCE,
    nIDNew: UINT_PTR,
    nButtons: c_int,
}}
pub type LPTBREPLACEBITMAP = *mut TBREPLACEBITMAP;
pub const TBBF_LARGE: DWORD = 0x0001;
pub const TB_GETBITMAPFLAGS: UINT = WM_USER + 41;
pub const TBIF_IMAGE: DWORD = 0x00000001;
pub const TBIF_TEXT: DWORD = 0x00000002;
pub const TBIF_STATE: DWORD = 0x00000004;
pub const TBIF_STYLE: DWORD = 0x00000008;
pub const TBIF_LPARAM: DWORD = 0x00000010;
pub const TBIF_COMMAND: DWORD = 0x00000020;
pub const TBIF_SIZE: DWORD = 0x00000040;
pub const TBIF_BYINDEX: DWORD = 0x80000000;
STRUCT!{struct TBBUTTONINFOA {
    cbSize: UINT,
    dwMask: DWORD,
    idCommand: c_int,
    iImage: c_int,
    fsState: BYTE,
    fsStyle: BYTE,
    cx: WORD,
    lParam: DWORD_PTR,
    pszText: LPSTR,
    cchText: c_int,
}}
pub type LPTBBUTTONINFOA = *mut TBBUTTONINFOA;
STRUCT!{struct TBBUTTONINFOW {
    cbSize: UINT,
    dwMask: DWORD,
    idCommand: c_int,
    iImage: c_int,
    fsState: BYTE,
    fsStyle: BYTE,
    cx: WORD,
    lParam: DWORD_PTR,
    pszText: LPWSTR,
    cchText: c_int,
}}
pub type LPTBBUTTONINFOW = *mut TBBUTTONINFOW;
pub const TB_GETBUTTONINFOW: UINT = WM_USER + 63;
pub const TB_SETBUTTONINFOW: UINT = WM_USER + 64;
pub const TB_GETBUTTONINFOA: UINT = WM_USER + 65;
pub const TB_SETBUTTONINFOA: UINT = WM_USER + 66;
pub const TB_INSERTBUTTONW: UINT = WM_USER + 67;
pub const TB_ADDBUTTONSW: UINT = WM_USER + 68;
pub const TB_HITTEST: UINT = WM_USER + 69;
pub const TB_SETDRAWTEXTFLAGS: UINT = WM_USER + 70;
pub const TB_GETSTRINGW: UINT = WM_USER + 91;
pub const TB_GETSTRINGA: UINT = WM_USER + 92;
pub const TB_SETBOUNDINGSIZE: UINT = WM_USER + 93;
pub const TB_SETHOTITEM2: UINT = WM_USER + 94;
pub const TB_HASACCELERATOR: UINT = WM_USER + 95;
pub const TB_SETLISTGAP: UINT = WM_USER + 96;
pub const TB_GETIMAGELISTCOUNT: UINT = WM_USER + 98;
pub const TB_GETIDEALSIZE: UINT = WM_USER + 99;
pub const TBMF_PAD: DWORD = 0x00000001;
pub const TBMF_BARPAD: DWORD = 0x00000002;
pub const TBMF_BUTTONSPACING: DWORD = 0x00000004;
STRUCT!{struct TBMETRICS {
    cbSize: UINT,
    dwMask: DWORD,
    cxPad: c_int,
    cyPad: c_int,
    cxBarPad: c_int,
    cyBarPad: c_int,
    cxButtonSpacing: c_int,
    cyButtonSpacing: c_int,
}}
pub type LPTBMETRICS = *mut TBMETRICS;
pub const TB_GETMETRICS: UINT = WM_USER + 101;
pub const TB_SETMETRICS: UINT = WM_USER + 102;
pub const TB_GETITEMDROPDOWNRECT: UINT = WM_USER + 103;
pub const TB_SETPRESSEDIMAGELIST: UINT = WM_USER + 104;
pub const TB_GETPRESSEDIMAGELIST: UINT = WM_USER + 105;
pub const TB_SETWINDOWTHEME: UINT = CCM_SETWINDOWTHEME;
pub const TBN_GETBUTTONINFOA: UINT = TBN_FIRST - 0;
pub const TBN_BEGINDRAG: UINT = TBN_FIRST - 1;
pub const TBN_ENDDRAG: UINT = TBN_FIRST - 2;
pub const TBN_BEGINADJUST: UINT = TBN_FIRST - 3;
pub const TBN_ENDADJUST: UINT = TBN_FIRST - 4;
pub const TBN_RESET: UINT = TBN_FIRST - 5;
pub const TBN_QUERYINSERT: UINT = TBN_FIRST - 6;
pub const TBN_QUERYDELETE: UINT = TBN_FIRST - 7;
pub const TBN_TOOLBARCHANGE: UINT = TBN_FIRST - 8;
pub const TBN_CUSTHELP: UINT = TBN_FIRST - 9;
pub const TBN_DROPDOWN: UINT = TBN_FIRST - 10;
pub const TBN_GETOBJECT: UINT = TBN_FIRST - 12;
STRUCT!{struct NMTBHOTITEM {
    hdr: NMHDR,
    idOld: c_int,
    idNew: c_int,
    dwFlags: DWORD,
}}
pub type LPNMTBHOTITEM = *mut NMTBHOTITEM;
pub const HICF_OTHER: DWORD = 0x00000000;
pub const HICF_MOUSE: DWORD = 0x00000001;
pub const HICF_ARROWKEYS: DWORD = 0x00000002;
pub const HICF_ACCELERATOR: DWORD = 0x00000004;
pub const HICF_DUPACCEL: DWORD = 0x00000008;
pub const HICF_ENTERING: DWORD = 0x00000010;
pub const HICF_LEAVING: DWORD = 0x00000020;
pub const HICF_RESELECT: DWORD = 0x00000040;
pub const HICF_LMOUSE: DWORD = 0x00000080;
pub const HICF_TOGGLEDROPDOWN: DWORD = 0x00000100;
pub const TBN_HOTITEMCHANGE: UINT = TBN_FIRST - 13;
pub const TBN_DRAGOUT: UINT = TBN_FIRST - 14;
pub const TBN_DELETINGBUTTON: UINT = TBN_FIRST - 15;
pub const TBN_GETDISPINFOA: UINT = TBN_FIRST - 16;
pub const TBN_GETDISPINFOW: UINT = TBN_FIRST - 17;
pub const TBN_GETINFOTIPA: UINT = TBN_FIRST - 18;
pub const TBN_GETINFOTIPW: UINT = TBN_FIRST - 19;
pub const TBN_GETBUTTONINFOW: UINT = TBN_FIRST - 20;
pub const TBN_RESTORE: UINT = TBN_FIRST - 21;
pub const TBN_SAVE: UINT = TBN_FIRST - 22;
pub const TBN_INITCUSTOMIZE: UINT = TBN_FIRST - 23;
pub const TBNRF_HIDEHELP: LRESULT = 0x00000001;
pub const TBNRF_ENDCUSTOMIZE: LRESULT = 0x00000002;
pub const TBN_WRAPHOTITEM: UINT = TBN_FIRST - 24;
pub const TBN_DUPACCELERATOR: UINT = TBN_FIRST - 25;
pub const TBN_WRAPACCELERATOR: UINT = TBN_FIRST - 26;
pub const TBN_DRAGOVER: UINT = TBN_FIRST - 27;
pub const TBN_MAPACCELERATOR: UINT = TBN_FIRST - 28;
STRUCT!{struct NMTBSAVE {
    hdr: NMHDR,
    pData: *mut DWORD,
    pCurrent: *mut DWORD,
    cbData: UINT,
    iItem: c_int,
    cButtons: c_int,
    tbButton: TBBUTTON,
}}
pub type LPNMTBSAVE = *mut NMTBSAVE;
STRUCT!{struct NMTBRESTORE {
    hdr: NMHDR,
    pData: *mut DWORD,
    pCurrent: *mut DWORD,
    cbData: UINT,
    iItem: c_int,
    cButtons: c_int,
    cbBytesPerRecord: c_int,
    tbButton: TBBUTTON,
}}
pub type LPNMTBRESTORE = *mut NMTBRESTORE;
STRUCT!{struct NMTBGETINFOTIPA {
    hdr: NMHDR,
    pszText: LPSTR,
    cchTextMax: c_int,
    iItem: c_int,
    lParal: LPARAM,
}}
pub type LPNMTBGETINFOTIPA = *mut NMTBGETINFOTIPA;
STRUCT!{struct NMTBGETINFOTIPW {
    hdr: NMHDR,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iItem: c_int,
    lParal: LPARAM,
}}
pub type LPNMTBGETINFOTIPW = *mut NMTBGETINFOTIPW;
pub const TBNF_IMAGE: DWORD = 0x00000001;
pub const TBNF_TEXT: DWORD = 0x00000002;
pub const TBNF_DI_SETITEM: DWORD = 0x10000000;
STRUCT!{struct NMTBDISPINFOA {
    hdr: NMHDR,
    dwMask: DWORD,
    idCommand: c_int,
    lParam: DWORD_PTR,
    iImage: c_int,
    pszText: LPSTR,
    cchText: c_int,
}}
pub type LPNMTBDISPINFOA = *mut NMTBDISPINFOA;
STRUCT!{struct NMTBDISPINFOW {
    hdr: NMHDR,
    dwMask: DWORD,
    idCommand: c_int,
    lParam: DWORD_PTR,
    iImage: c_int,
    pszText: LPWSTR,
    cchText: c_int,
}}
pub type LPNMTBDISPINFOW = *mut NMTBDISPINFOW;
pub const TBDDRET_DEFAULT: LRESULT = 0;
pub const TBDDRET_NODEFAULT: LRESULT = 1;
pub const TBDDRET_TREATPRESSED: LRESULT = 2;
pub type TBNOTIFYA = NMTOOLBARA;
pub type TBNOTIFYW = NMTOOLBARW;
pub type LPTBNOTIFYA = LPNMTOOLBARA;
pub type LPTBNOTIFYW = LPNMTOOLBARW;
STRUCT!{struct NMTOOLBARA {
    hdr: NMHDR,
    iItem: c_int,
    tbButton: TBBUTTON,
    cchText: c_int,
    pszText: LPSTR,
    rcButton: RECT,
}}
pub type LPNMTOOLBARA = *mut NMTOOLBARA;
STRUCT!{struct NMTOOLBARW {
    hdr: NMHDR,
    iItem: c_int,
    tbButton: TBBUTTON,
    cchText: c_int,
    pszText: LPWSTR,
    rcButton: RECT,
}}
pub type LPNMTOOLBARW = *mut NMTOOLBARW;
pub const REBARCLASSNAME: &'static str = "ReBarWindow32";
pub const RBIM_IMAGELIST: UINT = 0x00000001;
pub const RBS_TOOLTIPS: DWORD = 0x00000100;
pub const RBS_VARHEIGHT: DWORD = 0x00000200;
pub const RBS_BANDBORDERS: DWORD = 0x00000400;
pub const RBS_FIXEDORDER: DWORD = 0x00000800;
pub const RBS_REGISTERDROP: DWORD = 0x00001000;
pub const RBS_AUTOSIZE: DWORD = 0x00002000;
pub const RBS_VERTICALGRIPPER: DWORD = 0x00004000;
pub const RBS_DBLCLKTOGGLE: DWORD = 0x00008000;
STRUCT!{struct REBARINFO {
    cbSize: UINT,
    fMask: UINT,
    himl: HIMAGELIST,
}}
pub type LPREBARINFO = *mut REBARINFO;
pub const RBBS_BREAK: UINT = 0x00000001;
pub const RBBS_FIXEDSIZE: UINT = 0x00000002;
pub const RBBS_CHILDEDGE: UINT = 0x00000004;
pub const RBBS_HIDDEN: UINT = 0x00000008;
pub const RBBS_NOVERT: UINT = 0x00000010;
pub const RBBS_FIXEDBMP: UINT = 0x00000020;
pub const RBBS_VARIABLEHEIGHT: UINT = 0x00000040;
pub const RBBS_GRIPPERALWAYS: UINT = 0x00000080;
pub const RBBS_NOGRIPPER: UINT = 0x00000100;
pub const RBBS_USECHEVRON: UINT = 0x00000200;
pub const RBBS_HIDETITLE: UINT = 0x00000400;
pub const RBBS_TOPALIGN: UINT = 0x00000800;
pub const RBBIM_STYLE: UINT = 0x00000001;
pub const RBBIM_COLORS: UINT = 0x00000002;
pub const RBBIM_TEXT: UINT = 0x00000004;
pub const RBBIM_IMAGE: UINT = 0x00000008;
pub const RBBIM_CHILD: UINT = 0x00000010;
pub const RBBIM_CHILDSIZE: UINT = 0x00000020;
pub const RBBIM_SIZE: UINT = 0x00000040;
pub const RBBIM_BACKGROUND: UINT = 0x00000080;
pub const RBBIM_ID: UINT = 0x00000100;
pub const RBBIM_IDEALSIZE: UINT = 0x00000200;
pub const RBBIM_LPARAM: UINT = 0x00000400;
pub const RBBIM_HEADERSIZE: UINT = 0x00000800;
pub const RBBIM_CHEVRONLOCATION: UINT = 0x00001000;
pub const RBBIM_CHEVRONSTATE: UINT = 0x00002000;
STRUCT!{struct REBARBANDINFOA {
    cbSize: UINT,
    fMask: UINT,
    fStyle: UINT,
    clrFore: COLORREF,
    clrBack: COLORREF,
    lpText: LPSTR,
    cch: UINT,
    iImage: c_int,
    hwndChild: HWND,
    cxMinChild: UINT,
    cyMinChild: UINT,
    cx: UINT,
    hbmBack: HBITMAP,
    wID: UINT,
    cyChild: UINT,
    cyMaxChild: UINT,
    cyIntegral: UINT,
    cxIdeal: UINT,
    lParam: LPARAM,
    cxHeader: UINT,
    rcChevronLocation: RECT,
    uChevronState: UINT,
}}
pub type LPREBARBANDINFOA = *mut REBARBANDINFOA;
pub type LPCREBARBANDINFOA = *const REBARBANDINFOA;
STRUCT!{struct REBARBANDINFOW {
    cbSize: UINT,
    fMask: UINT,
    fStyle: UINT,
    clrFore: COLORREF,
    clrBack: COLORREF,
    lpText: LPWSTR,
    cch: UINT,
    iImage: c_int,
    hwndChild: HWND,
    cxMinChild: UINT,
    cyMinChild: UINT,
    cx: UINT,
    hbmBack: HBITMAP,
    wID: UINT,
    cyChild: UINT,
    cyMaxChild: UINT,
    cyIntegral: UINT,
    cxIdeal: UINT,
    lParam: LPARAM,
    cxHeader: UINT,
    rcChevronLocation: RECT,
    uChevronState: UINT,
}}
pub type LPREBARBANDINFOW = *mut REBARBANDINFOW;
pub type LPCREBARBANDINFOW = *const REBARBANDINFOW;
pub const RB_INSERTBANDA: UINT = WM_USER + 1;
pub const RB_DELETEBAND: UINT = WM_USER + 2;
pub const RB_GETBARINFO: UINT = WM_USER + 3;
pub const RB_SETBARINFO: UINT = WM_USER + 4;
pub const RB_SETBANDINFOA: UINT = WM_USER + 6;
pub const RB_SETPARENT: UINT = WM_USER + 7;
pub const RB_HITTEST: UINT = WM_USER + 8;
pub const RB_GETRECT: UINT = WM_USER + 9;
pub const RB_INSERTBANDW: UINT = WM_USER + 10;
pub const RB_SETBANDINFOW: UINT = WM_USER + 11;
pub const RB_GETBANDCOUNT: UINT = WM_USER + 12;
pub const RB_GETROWCOUNT: UINT = WM_USER + 13;
pub const RB_GETROWHEIGHT: UINT = WM_USER + 14;
pub const RB_IDTOINDEX: UINT = WM_USER + 16;
pub const RB_GETTOOLTIPS: UINT = WM_USER + 17;
pub const RB_SETTOOLTIPS: UINT = WM_USER + 18;
pub const RB_SETBKCOLOR: UINT = WM_USER + 19;
pub const RB_GETBKCOLOR: UINT = WM_USER + 20;
pub const RB_SETTEXTCOLOR: UINT = WM_USER + 21;
pub const RB_GETTEXTCOLOR: UINT = WM_USER + 22;
pub const RBSTR_CHANGERECT: WPARAM = 0x0001;
pub const RB_SIZETORECT: UINT = WM_USER + 23;
pub const RB_SETCOLORSCHEME: UINT = CCM_SETCOLORSCHEME;
pub const RB_GETCOLORSCHEME: UINT = CCM_GETCOLORSCHEME;
pub const RB_BEGINDRAG: UINT = WM_USER + 24;
pub const RB_ENDDRAG: UINT = WM_USER + 25;
pub const RB_DRAGMOVE: UINT = WM_USER + 26;
pub const RB_GETBARHEIGHT: UINT = WM_USER + 27;
pub const RB_GETBANDINFOW: UINT = WM_USER + 28;
pub const RB_GETBANDINFOA: UINT = WM_USER + 29;
pub const RB_MINIMIZEBAND: UINT = WM_USER + 30;
pub const RB_MAXIMIZEBAND: UINT = WM_USER + 31;
pub const RB_GETDROPTARGET: UINT = CCM_GETDROPTARGET;
pub const RB_GETBANDBORDERS: UINT = WM_USER + 34;
pub const RB_SHOWBAND: UINT = WM_USER + 35;
pub const RB_SETPALETTE: UINT = WM_USER + 37;
pub const RB_GETPALETTE: UINT = WM_USER + 38;
pub const RB_MOVEBAND: UINT = WM_USER + 39;
pub const RB_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const RB_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const RB_GETBANDMARGINS: UINT = WM_USER + 40;
pub const RB_SETWINDOWTHEME: UINT = CCM_SETWINDOWTHEME;
pub const RB_SETEXTENDEDSTYLE: UINT = WM_USER + 41;
pub const RB_GETEXTENDEDSTYLE: UINT = WM_USER + 42;
pub const RB_PUSHCHEVRON: UINT = WM_USER + 43;
pub const RB_SETBANDWIDTH: UINT = WM_USER + 44;
pub const RBN_HEIGHTCHANGE: UINT = RBN_FIRST - 0;
pub const RBN_GETOBJECT: UINT = RBN_FIRST - 1;
pub const RBN_LAYOUTCHANGED: UINT = RBN_FIRST - 2;
pub const RBN_AUTOSIZE: UINT = RBN_FIRST - 3;
pub const RBN_BEGINDRAG: UINT = RBN_FIRST - 4;
pub const RBN_ENDDRAG: UINT = RBN_FIRST - 5;
pub const RBN_DELETINGBAND: UINT = RBN_FIRST - 6;
pub const RBN_DELETEDBAND: UINT = RBN_FIRST - 7;
pub const RBN_CHILDSIZE: UINT = RBN_FIRST - 8;
pub const RBN_CHEVRONPUSHED: UINT = RBN_FIRST - 10;
pub const RBN_SPLITTERDRAG: UINT = RBN_FIRST - 11;
pub const RBN_MINMAX: UINT = RBN_FIRST - 21;
pub const RBN_AUTOBREAK: UINT = RBN_FIRST - 22;
STRUCT!{struct NMREBARCHILDSIZE {
    hdr: NMHDR,
    uBand: UINT,
    wID: UINT,
    rcChild: RECT,
    rcBand: RECT,
}}
pub type LPNMREBARCHILDSIZE = *mut NMREBARCHILDSIZE;
STRUCT!{struct NMREBAR {
    hdr: NMHDR,
    dwMask: DWORD,
    uBand: UINT,
    fStyle: UINT,
    wID: UINT,
    lParam: LPARAM,
}}
pub type LPNMREBAR = *mut NMREBAR;
pub const RBNM_ID: DWORD = 0x00000001;
pub const RBNM_STYLE: DWORD = 0x00000002;
pub const RBNM_LPARAM: DWORD = 0x00000004;
STRUCT!{struct NMRBAUTOSIZE {
    hdr: NMHDR,
    fChanged: BOOL,
    rcTarget: RECT,
    rcActual: RECT,
}}
pub type LPNMRBAUTOSIZE = *mut NMRBAUTOSIZE;
STRUCT!{struct NMREBARCHEVRON {
    hdr: NMHDR,
    uBand: UINT,
    wID: UINT,
    lParam: LPARAM,
    rc: RECT,
    lParamNM: LPARAM,
}}
pub type LPNMREBARCHEVRON = *mut NMREBARCHEVRON;
STRUCT!{struct NMREBARSPLITTER {
    hdr: NMHDR,
    rcSizing: RECT,
}}
pub type LPNMREBARSPLITTER = *mut NMREBARSPLITTER;
pub const RBAB_AUTOSIZE: UINT = 0x0001;
pub const RBAB_ADDBAND: UINT = 0x0002;
STRUCT!{struct NMREBARAUTOBREAK {
    hdr: NMHDR,
    uBand: UINT,
    wID: UINT,
    lParam: LPARAM,
    uMsg: UINT,
    fStyleCurrent: UINT,
    fAutoBreak: UINT,
}}
pub type LPNMREBARAUTOBREAK = *mut NMREBARAUTOBREAK;
pub const RBHT_NOWHERE: UINT = 0x0001;
pub const RBHT_CAPTION: UINT = 0x0002;
pub const RBHT_CLIENT: UINT = 0x0003;
pub const RBHT_GRABBER: UINT = 0x0004;
pub const RBHT_CHEVRON: UINT = 0x0008;
pub const RBHT_SPLITTER: UINT = 0x0010;
STRUCT!{struct RBHITTESTINFO {
    pt: POINT,
    flags: UINT,
    iBand: c_int,
}}
pub type LPRBHITTESTINFO = *mut RBHITTESTINFO;
pub const TOOLTIPS_CLASS: &'static str = "tooltips_class32";
pub type LPTOOLINFOA = LPTTTOOLINFOA;
pub type LPTOOLINFOW = LPTTTOOLINFOW;
pub type TOOLINFOA = TTTOOLINFOA;
pub type TOOLINFOW = TTTOOLINFOW;
STRUCT!{struct TTTOOLINFOA {
    cbSize: UINT,
    uFlags: UINT,
    hwnd: HWND,
    uId: UINT_PTR,
    rect: RECT,
    hinst: HINSTANCE,
    lpszText: LPSTR,
    lParam: LPARAM,
    lpReserved: *mut c_void,
}}
pub type PTTTOOLINFOA = *mut TTTOOLINFOA;
pub type LPTTTOOLINFOA = *mut TTTOOLINFOA;
STRUCT!{struct TTTOOLINFOW {
    cbSize: UINT,
    uFlags: UINT,
    hwnd: HWND,
    uId: UINT_PTR,
    rect: RECT,
    hinst: HINSTANCE,
    lpszText: LPWSTR,
    lParam: LPARAM,
    lpReserved: *mut c_void,
}}
pub type PTTTOOLINFOW = *mut TTTOOLINFOW;
pub type LPTTTOOLINFOW = *mut TTTOOLINFOW;
pub const TTS_ALWAYSTIP: DWORD = 0x01;
pub const TTS_NOPREFIX: DWORD = 0x02;
pub const TTS_NOANIMATE: DWORD = 0x10;
pub const TTS_NOFADE: DWORD = 0x20;
pub const TTS_BALLOON: DWORD = 0x40;
pub const TTS_CLOSE: DWORD = 0x80;
pub const TTS_USEVISUALSTYLE: DWORD = 0x100;
pub const TTF_IDISHWND: UINT = 0x0001;
pub const TTF_CENTERTIP: UINT = 0x0002;
pub const TTF_RTLREADING: UINT = 0x0004;
pub const TTF_SUBCLASS: UINT = 0x0010;
pub const TTF_TRACK: UINT = 0x0020;
pub const TTF_ABSOLUTE: UINT = 0x0080;
pub const TTF_TRANSPARENT: UINT = 0x0100;
pub const TTF_PARSELINKS: UINT = 0x1000;
pub const TTF_DI_SETITEM: UINT = 0x8000;
pub const TTDT_AUTOMATIC: WPARAM = 0;
pub const TTDT_RESHOW: WPARAM = 1;
pub const TTDT_AUTOPOP: WPARAM = 2;
pub const TTDT_INITIAL: WPARAM = 3;
pub const TTI_NONE: WPARAM = 0;
pub const TTI_INFO: WPARAM = 1;
pub const TTI_WARNING: WPARAM = 2;
pub const TTI_ERROR: WPARAM = 3;
pub const TTI_INFO_LARGE: WPARAM = 4;
pub const TTI_WARNING_LARGE: WPARAM = 5;
pub const TTI_ERROR_LARGE: WPARAM = 6;
pub const TTM_ACTIVATE: UINT = WM_USER + 1;
pub const TTM_SETDELAYTIME: UINT = WM_USER + 3;
pub const TTM_ADDTOOLA: UINT = WM_USER + 4;
pub const TTM_ADDTOOLW: UINT = WM_USER + 50;
pub const TTM_DELTOOLA: UINT = WM_USER + 5;
pub const TTM_DELTOOLW: UINT = WM_USER + 51;
pub const TTM_NEWTOOLRECTA: UINT = WM_USER + 6;
pub const TTM_NEWTOOLRECTW: UINT = WM_USER + 52;
pub const TTM_RELAYEVENT: UINT = WM_USER + 7;
pub const TTM_GETTOOLINFOA: UINT = WM_USER + 8;
pub const TTM_GETTOOLINFOW: UINT = WM_USER + 53;
pub const TTM_SETTOOLINFOA: UINT = WM_USER + 9;
pub const TTM_SETTOOLINFOW: UINT = WM_USER + 54;
pub const TTM_HITTESTA: UINT = WM_USER + 10;
pub const TTM_HITTESTW: UINT = WM_USER + 55;
pub const TTM_GETTEXTA: UINT = WM_USER + 11;
pub const TTM_GETTEXTW: UINT = WM_USER + 56;
pub const TTM_UPDATETIPTEXTA: UINT = WM_USER + 12;
pub const TTM_UPDATETIPTEXTW: UINT = WM_USER + 57;
pub const TTM_GETTOOLCOUNT: UINT = WM_USER + 13;
pub const TTM_ENUMTOOLSA: UINT = WM_USER + 14;
pub const TTM_ENUMTOOLSW: UINT = WM_USER + 58;
pub const TTM_GETCURRENTTOOLA: UINT = WM_USER + 15;
pub const TTM_GETCURRENTTOOLW: UINT = WM_USER + 59;
pub const TTM_WINDOWFROMPOINT: UINT = WM_USER + 16;
pub const TTM_TRACKACTIVATE: UINT = WM_USER + 17;
pub const TTM_TRACKPOSITION: UINT = WM_USER + 18;
pub const TTM_SETTIPBKCOLOR: UINT = WM_USER + 19;
pub const TTM_SETTIPTEXTCOLOR: UINT = WM_USER + 20;
pub const TTM_GETDELAYTIME: UINT = WM_USER + 21;
pub const TTM_GETTIPBKCOLOR: UINT = WM_USER + 22;
pub const TTM_GETTIPTEXTCOLOR: UINT = WM_USER + 23;
pub const TTM_SETMAXTIPWIDTH: UINT = WM_USER + 24;
pub const TTM_GETMAXTIPWIDTH: UINT = WM_USER + 25;
pub const TTM_SETMARGIN: UINT = WM_USER + 26;
pub const TTM_GETMARGIN: UINT = WM_USER + 27;
pub const TTM_POP: UINT = WM_USER + 28;
pub const TTM_UPDATE: UINT = WM_USER + 29;
pub const TTM_GETBUBBLESIZE: UINT = WM_USER + 30;
pub const TTM_ADJUSTRECT: UINT = WM_USER + 31;
pub const TTM_SETTITLEA: UINT = WM_USER + 32;
pub const TTM_SETTITLEW: UINT = WM_USER + 33;
pub const TTM_POPUP: UINT = WM_USER + 34;
pub const TTM_GETTITLE: UINT = WM_USER + 35;
STRUCT!{struct TTGETTITLE {
    dwSize: DWORD,
    uTitleBitmap: UINT,
    cch: UINT,
    pszTitle: *mut WCHAR,
}}
pub type LPTTGETTITLE = *mut TTGETTITLE;
pub const TTM_SETWINDOWTHEME: UINT = CCM_SETWINDOWTHEME;
pub type LPHITTESTINFOW = LPTTHITTESTINFOW;
pub type LPHITTESTINFOA = LPTTHITTESTINFOA;
STRUCT!{struct TTHITTESTINFOA {
    hwnd: HWND,
    pt: POINT,
    ti: TTTOOLINFOA,
}}
pub type LPTTHITTESTINFOA = *mut TTHITTESTINFOA;
STRUCT!{struct TTHITTESTINFOW {
    hwnd: HWND,
    pt: POINT,
    ti: TTTOOLINFOW,
}}
pub type LPTTHITTESTINFOW = *mut TTHITTESTINFOW;
pub const TTN_GETDISPINFOA: UINT = TTN_FIRST - 0;
pub const TTN_GETDISPINFOW: UINT = TTN_FIRST - 10;
pub const TTN_SHOW: UINT = TTN_FIRST - 1;
pub const TTN_POP: UINT = TTN_FIRST - 2;
pub const TTN_LINKCLICK: UINT = TTN_FIRST - 3;
pub const TTN_NEEDTEXTA: UINT = TTN_GETDISPINFOA;
pub const TTN_NEEDTEXTW: UINT = TTN_GETDISPINFOW;
pub type TOOLTIPTEXTW = NMTTDISPINFOW;
pub type TOOLTIPTEXTA = NMTTDISPINFOA;
pub type LPTOOLTIPTEXTA = LPNMTTDISPINFOA;
pub type LPTOOLTIPTEXTW = LPNMTTDISPINFOW;
STRUCT!{struct NMTTDISPINFOA {
    hdr: NMHDR,
    lpszText: LPSTR,
    szText: [c_char; 80],
    hinst: HINSTANCE,
    uFlags: UINT,
    lParam: LPARAM,
}}
pub type LPNMTTDISPINFOA = *mut NMTTDISPINFOA;
STRUCT!{struct NMTTDISPINFOW {
    hdr: NMHDR,
    lpszText: LPWSTR,
    szText: [WCHAR; 80],
    hinst: HINSTANCE,
    uFlags: UINT,
    lParam: LPARAM,
}}
pub type LPNMTTDISPINFOW = *mut NMTTDISPINFOW;
pub const SBARS_SIZEGRIP: DWORD = 0x0100;
pub const SBARS_TOOLTIPS: DWORD = 0x0800;
pub const SBT_TOOLTIPS: DWORD = 0x0800;
extern "system" {
    pub fn DrawStatusTextA(
        hDC: HDC,
        lprc: LPCRECT,
        pszText: LPCSTR,
        uFlags: UINT,
    );
    pub fn DrawStatusTextW(
        hDC: HDC,
        lprc: LPCRECT,
        pszText: LPCWSTR,
        uFlags: UINT,
    );
    pub fn CreateStatusWindowA(
        style: LONG,
        lpszText: LPCSTR,
        hwndParent: HWND,
        wID: UINT,
    ) -> HWND;
    pub fn CreateStatusWindowW(
        style: LONG,
        lpszText: LPCWSTR,
        hwndParent: HWND,
        wID: UINT,
    ) -> HWND;
}
pub const STATUSCLASSNAME: &'static str = "msctls_statusbar32";
pub const SB_SETTEXTA: UINT = WM_USER + 1;
pub const SB_SETTEXTW: UINT = WM_USER + 11;
pub const SB_GETTEXTA: UINT = WM_USER + 2;
pub const SB_GETTEXTW: UINT = WM_USER + 13;
pub const SB_GETTEXTLENGTHA: UINT = WM_USER + 3;
pub const SB_GETTEXTLENGTHW: UINT = WM_USER + 12;
pub const SB_SETPARTS: UINT = WM_USER + 4;
pub const SB_GETPARTS: UINT = WM_USER + 6;
pub const SB_GETBORDERS: UINT = WM_USER + 7;
pub const SB_SETMINHEIGHT: UINT = WM_USER + 8;
pub const SB_SIMPLE: UINT = WM_USER + 9;
pub const SB_GETRECT: UINT = WM_USER + 10;
pub const SB_ISSIMPLE: UINT = WM_USER + 14;
pub const SB_SETICON: UINT = WM_USER + 15;
pub const SB_SETTIPTEXTA: UINT = WM_USER + 16;
pub const SB_SETTIPTEXTW: UINT = WM_USER + 17;
pub const SB_GETTIPTEXTA: UINT = WM_USER + 18;
pub const SB_GETTIPTEXTW: UINT = WM_USER + 19;
pub const SB_GETICON: UINT = WM_USER + 20;
pub const SB_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const SB_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const SBT_OWNERDRAW: WPARAM = 0x1000;
pub const SBT_NOBORDERS: WPARAM = 0x0100;
pub const SBT_POPOUT: WPARAM = 0x0200;
pub const SBT_RTLREADING: WPARAM = 0x0400;
pub const SBT_NOTABPARSING: WPARAM = 0x0800;
pub const SB_SETBKCOLOR: UINT = CCM_SETBKCOLOR;
pub const SBN_SIMPLEMODECHANGE: UINT = SBN_FIRST - 0;
pub const SB_SIMPLEID: WPARAM = 0x00ff;
extern "system" {
    pub fn MenuHelp(
        uMsg: UINT,
        wParam: WPARAM,
        lParam: LPARAM,
        hMainMenu: HMENU,
        hInst: HINSTANCE,
        hwndStatus: HWND,
        lpwIDs: *mut UINT,
    );
    pub fn ShowHideMenuCtl(
        hWnd: HWND,
        uFlags: UINT_PTR,
        lpInfo: LPINT,
    ) -> BOOL;
    pub fn GetEffectiveClientRect(
        hWnd: HWND,
        lprc: LPRECT,
        lpInfo: *const INT,
    );
}
pub const TRACKBAR_CLASS: &'static str = "msctls_trackbar32";
pub const TBS_AUTOTICKS: DWORD = 0x0001;
pub const TBS_VERT: DWORD = 0x0002;
pub const TBS_HORZ: DWORD = 0x0000;
pub const TBS_TOP: DWORD = 0x0004;
pub const TBS_BOTTOM: DWORD = 0x0000;
pub const TBS_LEFT: DWORD = 0x0004;
pub const TBS_RIGHT: DWORD = 0x0000;
pub const TBS_BOTH: DWORD = 0x0008;
pub const TBS_NOTICKS: DWORD = 0x0010;
pub const TBS_ENABLESELRANGE: DWORD = 0x0020;
pub const TBS_FIXEDLENGTH: DWORD = 0x0040;
pub const TBS_NOTHUMB: DWORD = 0x0080;
pub const TBS_TOOLTIPS: DWORD = 0x0100;
pub const TBS_REVERSED: DWORD = 0x0200;
pub const TBS_DOWNISLEFT: DWORD = 0x0400;
pub const TBS_NOTIFYBEFOREMOVE: DWORD = 0x0800;
pub const TBS_TRANSPARENTBKGND: DWORD = 0x1000;
pub const TBM_GETPOS: UINT = WM_USER;
pub const TBM_GETRANGEMIN: UINT = WM_USER + 1;
pub const TBM_GETRANGEMAX: UINT = WM_USER + 2;
pub const TBM_GETTIC: UINT = WM_USER + 3;
pub const TBM_SETTIC: UINT = WM_USER + 4;
pub const TBM_SETPOS: UINT = WM_USER + 5;
pub const TBM_SETRANGE: UINT = WM_USER + 6;
pub const TBM_SETRANGEMIN: UINT = WM_USER + 7;
pub const TBM_SETRANGEMAX: UINT = WM_USER + 8;
pub const TBM_CLEARTICS: UINT = WM_USER + 9;
pub const TBM_SETSEL: UINT = WM_USER + 10;
pub const TBM_SETSELSTART: UINT = WM_USER + 11;
pub const TBM_SETSELEND: UINT = WM_USER + 12;
pub const TBM_GETPTICS: UINT = WM_USER + 14;
pub const TBM_GETTICPOS: UINT = WM_USER + 15;
pub const TBM_GETNUMTICS: UINT = WM_USER + 16;
pub const TBM_GETSELSTART: UINT = WM_USER + 17;
pub const TBM_GETSELEND: UINT = WM_USER + 18;
pub const TBM_CLEARSEL: UINT = WM_USER + 19;
pub const TBM_SETTICFREQ: UINT = WM_USER + 20;
pub const TBM_SETPAGESIZE: UINT = WM_USER + 21;
pub const TBM_GETPAGESIZE: UINT = WM_USER + 22;
pub const TBM_SETLINESIZE: UINT = WM_USER + 23;
pub const TBM_GETLINESIZE: UINT = WM_USER + 24;
pub const TBM_GETTHUMBRECT: UINT = WM_USER + 25;
pub const TBM_GETCHANNELRECT: UINT = WM_USER + 26;
pub const TBM_SETTHUMBLENGTH: UINT = WM_USER + 27;
pub const TBM_GETTHUMBLENGTH: UINT = WM_USER + 28;
pub const TBM_SETTOOLTIPS: UINT = WM_USER + 29;
pub const TBM_GETTOOLTIPS: UINT = WM_USER + 30;
pub const TBM_SETTIPSIDE: UINT = WM_USER + 31;
pub const TBTS_TOP: WPARAM = 0;
pub const TBTS_LEFT: WPARAM = 1;
pub const TBTS_BOTTOM: WPARAM = 2;
pub const TBTS_RIGHT: WPARAM = 3;
pub const TBM_SETBUDDY: UINT = WM_USER + 32;
pub const TBM_GETBUDDY: UINT = WM_USER + 33;
pub const TBM_SETPOSNOTIFY: UINT = WM_USER + 34;
pub const TBM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const TBM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const TB_LINEUP: WPARAM = 0;
pub const TB_LINEDOWN: WPARAM = 1;
pub const TB_PAGEUP: WPARAM = 2;
pub const TB_PAGEDOWN: WPARAM = 3;
pub const TB_THUMBPOSITION: WPARAM = 4;
pub const TB_THUMBTRACK: WPARAM = 5;
pub const TB_TOP: WPARAM = 6;
pub const TB_BOTTOM: WPARAM = 7;
pub const TB_ENDTRACK: WPARAM = 8;
pub const TBCD_TICS: DWORD_PTR = 0x0001;
pub const TBCD_THUMB: DWORD_PTR = 0x0001;
pub const TBCD_CHANNEL: DWORD_PTR = 0x0001;
pub const TRBN_THUMBPOSCHANGING: UINT = TRBN_FIRST - 1;
STRUCT!{struct NMTRBTHUMBPOSCHANGING {
    hdr: NMHDR,
    dwPos: DWORD,
    nReason: c_int,
}}
STRUCT!{struct DRAGLISTINFO {
    uNotification: UINT,
    hWnd: HWND,
    ptCursor: POINT,
}}
pub type LPDRAGLISTINFO = *mut DRAGLISTINFO;
pub const DL_BEGINDRAG: UINT = WM_USER + 133;
pub const DL_DRAGGING: UINT = WM_USER + 134;
pub const DL_DROPPED: UINT = WM_USER + 135;
pub const DL_CANCELDRAG: UINT = WM_USER + 136;
pub const DL_CURSORSET: UINT = 0;
pub const DL_STOPCURSOR: UINT = 1;
pub const DL_COPYCURSOR: UINT = 2;
pub const DL_MOVECURSOR: UINT = 3;
pub const DRAGLISTMSGSTRING: &'static str = "commctrl_DragListMsg";
extern "system" {
    pub fn MakeDragList(
        hLB: HWND,
    ) -> BOOL;
    pub fn DrawInsert(
        handParent: HWND,
        hLB: HWND,
        nItem: c_int,
    );
    pub fn LBItemFromPt(
        hLB: HWND,
        pt: POINT,
        bAutoScroll: BOOL,
    ) -> c_int;
}
pub const UPDOWN_CLASS: &'static str = "msctls_updown32";
STRUCT!{struct UDACCEL {
    nSec: UINT,
    nInc: UINT,
}}
pub type LPUDACCEL = *mut UDACCEL;
pub const UD_MAXVAL: c_short = 0x7fff;
pub const UD_MINVAL: c_short = 0 - UD_MAXVAL;
pub const UDS_WRAP: DWORD = 0x0001;
pub const UDS_SETBUDDYINT: DWORD = 0x0002;
pub const UDS_ALIGNRIGHT: DWORD = 0x0004;
pub const UDS_ALIGNLEFT: DWORD = 0x0008;
pub const UDS_AUTOBUDDY: DWORD = 0x0010;
pub const UDS_ARROWKEYS: DWORD = 0x0020;
pub const UDS_HORZ: DWORD = 0x0040;
pub const UDS_NOTHOUSANDS: DWORD = 0x0080;
pub const UDS_HOTTRACK: DWORD = 0x0100;
pub const UDM_SETRANGE: UINT = WM_USER + 101;
pub const UDM_GETRANGE: UINT = WM_USER + 102;
pub const UDM_SETPOS: UINT = WM_USER + 103;
pub const UDM_GETPOS: UINT = WM_USER + 104;
pub const UDM_SETBUDDY: UINT = WM_USER + 105;
pub const UDM_GETBUDDY: UINT = WM_USER + 106;
pub const UDM_SETACCEL: UINT = WM_USER + 107;
pub const UDM_GETACCEL: UINT = WM_USER + 108;
pub const UDM_SETBASE: UINT = WM_USER + 109;
pub const UDM_GETBASE: UINT = WM_USER + 110;
pub const UDM_SETRANGE32: UINT = WM_USER + 111;
pub const UDM_GETRANGE32: UINT = WM_USER + 112;
pub const UDM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const UDM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const UDM_SETPOS32: UINT = WM_USER + 113;
pub const UDM_GETPOS32: UINT = WM_USER + 114;
extern "system" {
    pub fn CreateUpDownControl(
        dwStyle: DWORD,
        x: c_int,
        y: c_int,
        cx: c_int,
        cy: c_int,
        hParent: HWND,
        nID: c_int,
        hInst: HINSTANCE,
        nBuddy: HWND,
        nUpper: c_int,
        nLower: c_int,
        nPos: c_int,
    ) -> HWND;
}
pub type NM_UPDOWN = NMUPDOWN;
pub type LPNM_UPDOWN = LPNMUPDOWN;
STRUCT!{struct NMUPDOWN {
    hdr: NMHDR,
    iPos: c_int,
    iDelta: c_int,
}}
pub type LPNMUPDOWN = *mut NMUPDOWN;
pub const UDN_DELTAPOS: UINT = UDN_FIRST - 1;
pub const PROGRESS_CLASS: &'static str = "msctls_progress32";
pub const PBS_SMOOTH: DWORD = 0x01;
pub const PBS_VERTICAL: DWORD = 0x04;
pub const PBM_SETRANGE: UINT = WM_USER + 1;
pub const PBM_SETPOS: UINT = WM_USER + 2;
pub const PBM_DELTAPOS: UINT = WM_USER + 3;
pub const PBM_SETSTEP: UINT = WM_USER + 4;
pub const PBM_STEPIT: UINT = WM_USER + 5;
pub const PBM_SETRANGE32: UINT = WM_USER + 6;
STRUCT!{struct PBRANGE {
    iLow: c_int,
    iHigh: c_int,
}}
pub type LPPBRANGE = *mut PBRANGE;
pub const PBM_GETRANGE: UINT = WM_USER + 7;
pub const PBM_GETPOS: UINT = WM_USER + 8;
pub const PBM_SETBARCOLOR: UINT = WM_USER + 9;
pub const PBM_SETBKCOLOR: UINT = CCM_SETBKCOLOR;
pub const PBS_MARQUEE: DWORD = 0x08;
pub const PBM_SETMARQUEE: UINT = WM_USER + 10;
pub const PBS_SMOOTHREVERSE: DWORD = 0x10;
pub const PBM_GETSTEP: UINT = WM_USER + 13;
pub const PBM_GETBKCOLOR: UINT = WM_USER + 14;
pub const PBM_GETBARCOLOR: UINT = WM_USER + 15;
pub const PBM_SETSTATE: UINT = WM_USER + 16;
pub const PBM_GETSTATE: UINT = WM_USER + 17;
pub const PBST_NORMAL: c_int = 0x0001;
pub const PBST_ERROR: c_int = 0x0002;
pub const PBST_PAUSED: c_int = 0x0003;
pub const HOTKEYF_SHIFT: BYTE = 0x01;
pub const HOTKEYF_CONTROL: BYTE = 0x02;
pub const HOTKEYF_ALT: BYTE = 0x04;
pub const HOTKEYF_EXT: BYTE = 0x08;
pub const HKCOMB_NONE: WPARAM = 0x0001;
pub const HKCOMB_S: WPARAM = 0x0002;
pub const HKCOMB_C: WPARAM = 0x0004;
pub const HKCOMB_A: WPARAM = 0x0008;
pub const HKCOMB_SC: WPARAM = 0x0010;
pub const HKCOMB_SA: WPARAM = 0x0020;
pub const HKCOMB_CA: WPARAM = 0x0040;
pub const HKCOMB_SCA: WPARAM = 0x0080;
pub const HKM_SETHOTKEY: UINT = WM_USER + 1;
pub const HKM_GETHOTKEY: UINT = WM_USER + 2;
pub const HKM_SETRULES: UINT = WM_USER + 3;
pub const HOTKEY_CLASS: &'static str = "msctls_hotkey32";
pub const CCS_TOP: DWORD = 0x00000001;
pub const CCS_NOMOVEY: DWORD = 0x00000002;
pub const CCS_BOTTOM: DWORD = 0x00000003;
pub const CCS_NORESIZE: DWORD = 0x00000004;
pub const CCS_NOPARENTALIGN: DWORD = 0x00000008;
pub const CCS_ADJUSTABLE: DWORD = 0x00000020;
pub const CCS_NODIVIDER: DWORD = 0x00000040;
pub const CCS_VERT: DWORD = 0x00000080;
pub const CCS_LEFT: DWORD = CCS_VERT | CCS_TOP;
pub const CCS_RIGHT: DWORD = CCS_VERT | CCS_BOTTOM;
pub const CCS_NOMOVEX: DWORD = CCS_VERT | CCS_NOMOVEY;
pub const INVALID_LINK_INDEX: c_int = -1;
pub const MAX_LINKID_TEXT: usize = 48;
pub const L_MAX_URL_LENGTH: usize = 2048 + 32 + 4;
pub const WC_LINK: &'static str = "SysLink";
pub const LWS_TRANSPARENT: DWORD = 0x0001;
pub const LWS_IGNORERETURN: DWORD = 0x0002;
pub const LWS_NOPREFIX: DWORD = 0x0004;
pub const LWS_USEVISUALSTYLE: DWORD = 0x0008;
pub const LWS_USECUSTOMTEXT: DWORD = 0x0010;
pub const LWS_RIGHT: DWORD = 0x0020;
pub const LIF_ITEMINDEX: UINT = 0x00000001;
pub const LIF_STATE: UINT = 0x00000002;
pub const LIF_ITEMID: UINT = 0x00000004;
pub const LIF_URL: UINT = 0x00000008;
pub const LIS_FOCUSED: UINT = 0x00000001;
pub const LIS_ENABLED: UINT = 0x00000002;
pub const LIS_VISITED: UINT = 0x00000004;
pub const LIS_HOTTRACK: UINT = 0x00000008;
pub const LIS_DEFAULTCOLORS: UINT = 0x00000010;
STRUCT!{struct LITEM {
    mask: UINT,
    iLink: c_int,
    state: UINT,
    stateMask: UINT,
    szID: [WCHAR; MAX_LINKID_TEXT],
    szUrl: [WCHAR; L_MAX_URL_LENGTH],
}}
pub type PLITEM = *mut LITEM;
STRUCT!{struct LHITTESTINFO {
    pt: POINT,
    item: LITEM,
}}
pub type PLHITTESTINFO = *mut LHITTESTINFO;
STRUCT!{struct NMLINK {
    hdr: NMHDR,
    item: LITEM,
}}
pub type PNMLINK = *mut NMLINK;
pub const LM_HITTEST: UINT = WM_USER + 0x300;
pub const LM_GETIDEALHEIGHT: UINT = WM_USER + 0x301;
pub const LM_SETITEM: UINT = WM_USER + 0x302;
pub const LM_GETITEM: UINT = WM_USER + 0x303;
pub const LM_GETIDEALSIZE: UINT = LM_GETIDEALHEIGHT;
pub const WC_LISTVIEW: &'static str = "SysListView32";
pub const LVS_ICON: DWORD = 0x0000;
pub const LVS_REPORT: DWORD = 0x0001;
pub const LVS_SMALLICON: DWORD = 0x0002;
pub const LVS_LIST: DWORD = 0x0003;
pub const LVS_TYPEMASK: DWORD = 0x0003;
pub const LVS_SINGLESEL: DWORD = 0x0004;
pub const LVS_SHOWSELALWAYS: DWORD = 0x0008;
pub const LVS_SORTASCENDING: DWORD = 0x0010;
pub const LVS_SORTDESCENDING: DWORD = 0x0020;
pub const LVS_SHAREIMAGELISTS: DWORD = 0x0040;
pub const LVS_NOLABELWRAP: DWORD = 0x0080;
pub const LVS_AUTOARRANGE: DWORD = 0x0100;
pub const LVS_EDITLABELS: DWORD = 0x0200;
pub const LVS_OWNERDATA: DWORD = 0x1000;
pub const LVS_NOSCROLL: DWORD = 0x2000;
pub const LVS_TYPESTYLEMASK: DWORD = 0xfc00;
pub const LVS_ALIGNTOP: DWORD = 0x0000;
pub const LVS_ALIGNLEFT: DWORD = 0x0800;
pub const LVS_ALIGNMASK: DWORD = 0x0c00;
pub const LVS_OWNERDRAWFIXED: DWORD = 0x0400;
pub const LVS_NOCOLUMNHEADER: DWORD = 0x4000;
pub const LVS_NOSORTHEADER: DWORD = 0x8000;
pub const LVM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const LVM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const LVM_GETBKCOLOR: UINT = LVM_FIRST + 0;
pub const LVM_SETBKCOLOR: UINT = LVM_FIRST + 1;
pub const LVM_GETIMAGELIST: UINT = LVM_FIRST + 2;
pub const LVSIL_NORMAL: c_int = 0;
pub const LVSIL_SMALL: c_int = 1;
pub const LVSIL_STATE: c_int = 2;
pub const LVSIL_GROUPHEADER: c_int = 3;
pub const LVM_SETIMAGELIST: UINT = LVM_FIRST + 3;
pub const LVM_GETITEMCOUNT: UINT = LVM_FIRST + 4;
pub const LVIF_TEXT: UINT = 0x00000001;
pub const LVIF_IMAGE: UINT = 0x00000002;
pub const LVIF_PARAM: UINT = 0x00000004;
pub const LVIF_STATE: UINT = 0x00000008;
pub const LVIF_INDENT: UINT = 0x00000010;
pub const LVIF_NORECOMPUTE: UINT = 0x00000800;
pub const LVIF_GROUPID: UINT = 0x00000100;
pub const LVIF_COLUMNS: UINT = 0x00000200;
pub const LVIF_COLFMT: UINT = 0x00010000;
pub const LVIS_FOCUSED: UINT = 0x0001;
pub const LVIS_SELECTED: UINT = 0x0002;
pub const LVIS_CUT: UINT = 0x0004;
pub const LVIS_DROPHILITED: UINT = 0x0008;
pub const LVIS_GLOW: UINT = 0x0010;
pub const LVIS_ACTIVATING: UINT = 0x0020;
pub const LVIS_OVERLAYMASK: UINT = 0x0F00;
pub const LVIS_STATEIMAGEMASK: UINT = 0xF000;
#[inline]
pub fn INDEXTOSTATEIMAGEMASK(i: UINT) -> UINT {
    i << 12
}
pub const I_INDENTCALLBACK: c_int = -1;
pub type LV_ITEMA = LVITEMA;
pub type LV_ITEMW = LVITEMW;
pub const I_GROUPIDCALLBACK: c_int = -1;
pub const I_GROUPIDNONE: c_int = -2;
STRUCT!{struct LVITEMA {
    mask: UINT,
    iItem: c_int,
    iSubItem: c_int,
    state: UINT,
    stateMask: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
    iIndent: c_int,
    iGroupId: c_int,
    cColumns: UINT,
    puColumns: PUINT,
    piColFmt: *mut c_int,
    iGroup: c_int,
}}
pub type LPLVITEMA = *mut LVITEMA;
STRUCT!{struct LVITEMW {
    mask: UINT,
    iItem: c_int,
    iSubItem: c_int,
    state: UINT,
    stateMask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
    iIndent: c_int,
    iGroupId: c_int,
    cColumns: UINT,
    puColumns: PUINT,
    piColFmt: *mut c_int,
    iGroup: c_int,
}}
pub type LPLVITEMW = *mut LVITEMW;
pub const LPSTR_TEXTCALLBACKW: LPWSTR = -1isize as LPWSTR;
pub const LPSTR_TEXTCALLBACKA: LPSTR = -1isize as LPSTR;
pub const I_IMAGECALLBACK: c_int = -1;
pub const I_IMAGENONE: c_int = -2;
pub const I_COLUMNSCALLBACK: UINT = -1i32 as u32;
pub const LVM_GETITEMA: UINT = LVM_FIRST + 5;
pub const LVM_GETITEMW: UINT = LVM_FIRST + 75;
pub const LVM_SETITEMA: UINT = LVM_FIRST + 6;
pub const LVM_SETITEMW: UINT = LVM_FIRST + 76;
pub const LVM_INSERTITEMA: UINT = LVM_FIRST + 7;
pub const LVM_INSERTITEMW: UINT = LVM_FIRST + 77;
pub const LVM_DELETEITEM: UINT = LVM_FIRST + 8;
pub const LVM_DELETEALLITEMS: UINT = LVM_FIRST + 9;
pub const LVM_GETCALLBACKMASK: UINT = LVM_FIRST + 10;
pub const LVM_SETCALLBACKMASK: UINT = LVM_FIRST + 11;
pub const LVNI_ALL: LPARAM = 0x0000;
pub const LVNI_FOCUSED: LPARAM = 0x0001;
pub const LVNI_SELECTED: LPARAM = 0x0002;
pub const LVNI_CUT: LPARAM = 0x0004;
pub const LVNI_DROPHILITED: LPARAM = 0x0008;
pub const LVNI_STATEMASK: LPARAM = LVNI_FOCUSED | LVNI_SELECTED | LVNI_CUT | LVNI_DROPHILITED;
pub const LVNI_VISIBLEORDER: LPARAM = 0x0010;
pub const LVNI_PREVIOUS: LPARAM = 0x0020;
pub const LVNI_VISIBLEONLY: LPARAM = 0x0040;
pub const LVNI_SAMEGROUPONLY: LPARAM = 0x0080;
pub const LVNI_ABOVE: LPARAM = 0x0100;
pub const LVNI_BELOW: LPARAM = 0x0200;
pub const LVNI_TOLEFT: LPARAM = 0x0400;
pub const LVNI_TORIGHT: LPARAM = 0x0800;
pub const LVNI_DIRECTIONMASK: LPARAM = LVNI_ABOVE | LVNI_BELOW | LVNI_TOLEFT | LVNI_TORIGHT;
pub const LVM_GETNEXTITEM: UINT = LVM_FIRST + 12;
pub const LVFI_PARAM: UINT = 0x0001;
pub const LVFI_STRING: UINT = 0x0002;
pub const LVFI_SUBSTRING: UINT = 0x0004;
pub const LVFI_PARTIAL: UINT = 0x0008;
pub const LVFI_WRAP: UINT = 0x0020;
pub const LVFI_NEARESTXY: UINT = 0x0040;
pub type LV_FINDINFOA = LVFINDINFOA;
pub type LV_FINDINFOW = LVFINDINFOW;
STRUCT!{struct LVFINDINFOA {
    flags: UINT,
    psz: LPCSTR,
    lParam: LPARAM,
    pt: POINT,
    vkDirection: UINT,
}}
pub type LPFINDINFOA = *mut LVFINDINFOA;
STRUCT!{struct LVFINDINFOW {
    flags: UINT,
    psz: LPCWSTR,
    lParam: LPARAM,
    pt: POINT,
    vkDirection: UINT,
}}
pub type LPFINDINFOW = *mut LVFINDINFOW;
pub const LVM_FINDITEMA: UINT = LVM_FIRST + 13;
pub const LVM_FINDITEMW: UINT = LVM_FIRST + 83;
pub const LVIR_BOUNDS: c_int = 0;
pub const LVIR_ICON: c_int = 1;
pub const LVIR_LABEL: c_int = 2;
pub const LVIR_SELECTBOUNDS: c_int = 3;
pub const LVM_GETITEMRECT: UINT = LVM_FIRST + 14;
pub const LVM_SETITEMPOSITION: UINT = LVM_FIRST + 15;
pub const LVM_GETITEMPOSITION: UINT = LVM_FIRST + 16;
pub const LVM_GETSTRINGWIDTHA: UINT = LVM_FIRST + 17;
pub const LVM_GETSTRINGWIDTHW: UINT = LVM_FIRST + 87;
pub const LVHT_NOWHERE: UINT = 0x00000001;
pub const LVHT_ONITEMICON: UINT = 0x00000002;
pub const LVHT_ONITEMLABEL: UINT = 0x00000004;
pub const LVHT_ONITEMSTATEICON: UINT = 0x00000008;
pub const LVHT_ONITEM: UINT = LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON;
pub const LVHT_ABOVE: UINT = 0x00000008;
pub const LVHT_BELOW: UINT = 0x00000010;
pub const LVHT_TORIGHT: UINT = 0x00000020;
pub const LVHT_TOLEFT: UINT = 0x00000040;
pub const LVHT_EX_GROUP_HEADER: UINT = 0x10000000;
pub const LVHT_EX_GROUP_FOOTER: UINT = 0x20000000;
pub const LVHT_EX_GROUP_COLLAPSE: UINT = 0x40000000;
pub const LVHT_EX_GROUP_BACKGROUND: UINT = 0x80000000;
pub const LVHT_EX_GROUP_STATEICON: UINT = 0x01000000;
pub const LVHT_EX_GROUP_SUBSETLINK: UINT = 0x02000000;
pub const LVHT_EX_GROUP: UINT = LVHT_EX_GROUP_BACKGROUND | LVHT_EX_GROUP_COLLAPSE
    | LVHT_EX_GROUP_FOOTER | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON
    | LVHT_EX_GROUP_SUBSETLINK;
pub const LVHT_EX_ONCONTENTS: UINT = 0x04000000;
pub const LVHT_EX_FOOTER: UINT = 0x08000000;
pub type LV_HITTESTINFO = LVHITTESTINFO;
STRUCT!{struct LVHITTESTINFO {
    pt: POINT,
    flags: UINT,
    iItem: c_int,
    iSubItem: c_int,
    iGroup: c_int,
}}
pub type LPLVHITTESTINFO = *mut LVHITTESTINFO;
pub const LVM_HITTEST: UINT = LVM_FIRST + 18;
pub const LVM_ENSUREVISIBLE: UINT = LVM_FIRST + 19;
pub const LVM_SCROLL: UINT = LVM_FIRST + 20;
pub const LVM_REDRAWITEMS: UINT = LVM_FIRST + 21;
pub const LVA_DEFAULT: WPARAM = 0x0000;
pub const LVA_ALIGNLEFT: WPARAM = 0x0001;
pub const LVA_ALIGNTOP: WPARAM = 0x0002;
pub const LVA_SNAPTOGRID: WPARAM = 0x0005;
pub const LVM_ARRANGE: UINT = LVM_FIRST + 22;
pub const LVM_EDITLABELA: UINT = LVM_FIRST + 23;
pub const LVM_EDITLABELW: UINT = LVM_FIRST + 118;
pub const LVM_GETEDITCONTROL: UINT = LVM_FIRST + 24;
pub type LV_COLUMNA = LVCOLUMNA;
pub type LV_COLUMNW = LVCOLUMNW;
STRUCT!{struct LVCOLUMNA {
    mask: UINT,
    fmt: c_int,
    cx: c_int,
    pszText: LPSTR,
    cchTextMax: c_int,
    iSubItem: c_int,
    iImage: c_int,
    iOrder: c_int,
    cxMin: c_int,
    cxDefault: c_int,
    cxIdeal: c_int,
}}
pub type LPLVCOLUMNA = *mut LVCOLUMNA;
STRUCT!{struct LVCOLUMNW {
    mask: UINT,
    fmt: c_int,
    cx: c_int,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iSubItem: c_int,
    iImage: c_int,
    iOrder: c_int,
    cxMin: c_int,
    cxDefault: c_int,
    cxIdeal: c_int,
}}
pub type LPLVCOLUMNW = *mut LVCOLUMNW;
pub const LVCF_FMT: UINT = 0x0001;
pub const LVCF_WIDTH: UINT = 0x0002;
pub const LVCF_TEXT: UINT = 0x0004;
pub const LVCF_SUBITEM: UINT = 0x0008;
pub const LVCF_IMAGE: UINT = 0x0010;
pub const LVCF_ORDER: UINT = 0x0020;
pub const LVCF_MINWIDTH: UINT = 0x0040;
pub const LVCF_DEFAULTWIDTH: UINT = 0x0080;
pub const LVCF_IDEALWIDTH: UINT = 0x0100;
pub const LVCFMT_LEFT: c_int = 0x0000;
pub const LVCFMT_RIGHT: c_int = 0x0001;
pub const LVCFMT_CENTER: c_int = 0x0002;
pub const LVCFMT_JUSTIFYMASK: c_int = 0x0003;
pub const LVCFMT_IMAGE: c_int = 0x0800;
pub const LVCFMT_BITMAP_ON_RIGHT: c_int = 0x1000;
pub const LVCFMT_COL_HAS_IMAGES: c_int = 0x8000;
pub const LVCFMT_FIXED_WIDTH: c_int = 0x00100;
pub const LVCFMT_NO_DPI_SCALE: c_int = 0x40000;
pub const LVCFMT_FIXED_RATIO: c_int = 0x80000;
pub const LVCFMT_LINE_BREAK: c_int = 0x100000;
pub const LVCFMT_FILL: c_int = 0x200000;
pub const LVCFMT_WRAP: c_int = 0x400000;
pub const LVCFMT_NO_TITLE: c_int = 0x800000;
pub const LVCFMT_TILE_PLACEMENTMASK: c_int = LVCFMT_LINE_BREAK | LVCFMT_FILL;
pub const LVCFMT_SPLITBUTTON: c_int = 0x1000000;
pub const LVM_GETCOLUMNA: UINT = LVM_FIRST + 25;
pub const LVM_GETCOLUMNW: UINT = LVM_FIRST + 95;
pub const LVM_SETCOLUMNA: UINT = LVM_FIRST + 26;
pub const LVM_SETCOLUMNW: UINT = LVM_FIRST + 96;
pub const LVM_INSERTCOLUMNA: UINT = LVM_FIRST + 27;
pub const LVM_INSERTCOLUMNW: UINT = LVM_FIRST + 97;
pub const LVM_DELETECOLUMN: UINT = LVM_FIRST + 28;
pub const LVM_GETCOLUMNWIDTH: UINT = LVM_FIRST + 29;
pub const LVSCW_AUTOSIZE: c_int = -1;
pub const LVSCW_AUTOSIZE_USEHEADER: c_int = -2;
pub const LVM_SETCOLUMNWIDTH: UINT = LVM_FIRST + 30;
pub const LVM_GETHEADER: UINT = LVM_FIRST + 31;
pub const LVM_CREATEDRAGIMAGE: UINT = LVM_FIRST + 33;
pub const LVM_GETVIEWRECT: UINT = LVM_FIRST + 34;
pub const LVM_GETTEXTCOLOR: UINT = LVM_FIRST + 35;
pub const LVM_SETTEXTCOLOR: UINT = LVM_FIRST + 36;
pub const LVM_GETTEXTBKCOLOR: UINT = LVM_FIRST + 37;
pub const LVM_SETTEXTBKCOLOR: UINT = LVM_FIRST + 38;
pub const LVM_GETTOPINDEX: UINT = LVM_FIRST + 39;
pub const LVM_GETCOUNTPERPAGE: UINT = LVM_FIRST + 40;
pub const LVM_GETORIGIN: UINT = LVM_FIRST + 41;
pub const LVM_UPDATE: UINT = LVM_FIRST + 42;
pub const LVM_SETITEMSTATE: UINT = LVM_FIRST + 43;
pub const LVM_GETITEMSTATE: UINT = LVM_FIRST + 44;
pub const LVM_GETITEMTEXTA: UINT = LVM_FIRST + 45;
pub const LVM_GETITEMTEXTW: UINT = LVM_FIRST + 115;
pub const LVM_SETITEMTEXTA: UINT = LVM_FIRST + 46;
pub const LVM_SETITEMTEXTW: UINT = LVM_FIRST + 116;
pub const LVSICF_NOINVALIDATEALL: LPARAM = 0x00000001;
pub const LVSICF_NOSCROLL: LPARAM = 0x00000002;
pub const LVM_SETITEMCOUNT: UINT = LVM_FIRST + 47;
FN!{stdcall PFNLVCOMPARE(
    LPARAM,
    LPARAM,
    LPARAM,
) -> c_int}
pub const LVM_SORTITEMS: UINT = LVM_FIRST + 48;
pub const LVM_SETITEMPOSITION32: UINT = LVM_FIRST + 49;
pub const LVM_GETSELECTEDCOUNT: UINT = LVM_FIRST + 50;
pub const LVM_GETITEMSPACING: UINT = LVM_FIRST + 51;
pub const LVM_GETISEARCHSTRINGA: UINT = LVM_FIRST + 52;
pub const LVM_GETISEARCHSTRINGW: UINT = LVM_FIRST + 117;
pub const LVM_SETICONSPACING: UINT = LVM_FIRST + 53;
pub const LVM_SETEXTENDEDLISTVIEWSTYLE: UINT = LVM_FIRST + 54;
pub const LVM_GETEXTENDEDLISTVIEWSTYLE: UINT = LVM_FIRST + 55;
pub const LVS_EX_GRIDLINES: DWORD = 0x00000001;
pub const LVS_EX_SUBITEMIMAGES: DWORD = 0x00000002;
pub const LVS_EX_CHECKBOXES: DWORD = 0x00000004;
pub const LVS_EX_TRACKSELECT: DWORD = 0x00000008;
pub const LVS_EX_HEADERDRAGDROP: DWORD = 0x00000010;
pub const LVS_EX_FULLROWSELECT: DWORD = 0x00000020;
pub const LVS_EX_ONECLICKACTIVATE: DWORD = 0x00000040;
pub const LVS_EX_TWOCLICKACTIVATE: DWORD = 0x00000080;
pub const LVS_EX_FLATSB: DWORD = 0x00000100;
pub const LVS_EX_REGIONAL: DWORD = 0x00000200;
pub const LVS_EX_INFOTIP: DWORD = 0x00000400;
pub const LVS_EX_UNDERLINEHOT: DWORD = 0x00000800;
pub const LVS_EX_UNDERLINECOLD: DWORD = 0x00001000;
pub const LVS_EX_MULTIWORKAREAS: DWORD = 0x00002000;
pub const LVS_EX_LABELTIP: DWORD = 0x00004000;
pub const LVS_EX_BORDERSELECT: DWORD = 0x00008000;
pub const LVS_EX_DOUBLEBUFFER: DWORD = 0x00010000;
pub const LVS_EX_HIDELABELS: DWORD = 0x00020000;
pub const LVS_EX_SINGLEROW: DWORD = 0x00040000;
pub const LVS_EX_SNAPTOGRID: DWORD = 0x00080000;
pub const LVS_EX_SIMPLESELECT: DWORD = 0x00100000;
pub const LVS_EX_JUSTIFYCOLUMNS: DWORD = 0x00200000;
pub const LVS_EX_TRANSPARENTBKGND: DWORD = 0x00400000;
pub const LVS_EX_TRANSPARENTSHADOWTEXT: DWORD = 0x00800000;
pub const LVS_EX_AUTOAUTOARRANGE: DWORD = 0x01000000;
pub const LVS_EX_HEADERINALLVIEWS: DWORD = 0x02000000;
pub const LVS_EX_AUTOCHECKSELECT: DWORD = 0x08000000;
pub const LVS_EX_AUTOSIZECOLUMNS: DWORD = 0x10000000;
pub const LVS_EX_COLUMNSNAPPOINTS: DWORD = 0x40000000;
pub const LVS_EX_COLUMNOVERFLOW: DWORD = 0x80000000;
pub const LVM_GETSUBITEMRECT: UINT = LVM_FIRST + 56;
pub const LVM_SUBITEMHITTEST: UINT = LVM_FIRST + 57;
pub const LVM_SETCOLUMNORDERARRAY: UINT = LVM_FIRST + 58;
pub const LVM_GETCOLUMNORDERARRAY: UINT = LVM_FIRST + 59;
pub const LVM_SETHOTITEM: UINT = LVM_FIRST + 60;
pub const LVM_GETHOTITEM: UINT = LVM_FIRST + 61;
pub const LVM_SETHOTCURSOR: UINT = LVM_FIRST + 62;
pub const LVM_GETHOTCURSOR: UINT = LVM_FIRST + 63;
pub const LVM_APPROXIMATEVIEWRECT: UINT = LVM_FIRST + 64;
pub const LV_MAX_WORKAREAS: WPARAM = 16;
pub const LVM_SETWORKAREAS: UINT = LVM_FIRST + 65;
pub const LVM_GETWORKAREAS: UINT = LVM_FIRST + 70;
pub const LVM_GETNUMBEROFWORKAREAS: UINT = LVM_FIRST + 73;
pub const LVM_GETSELECTIONMARK: UINT = LVM_FIRST + 66;
pub const LVM_SETSELECTIONMARK: UINT = LVM_FIRST + 67;
pub const LVM_SETHOVERTIME: UINT = LVM_FIRST + 71;
pub const LVM_GETHOVERTIME: UINT = LVM_FIRST + 72;
pub const LVM_SETTOOLTIPS: UINT = LVM_FIRST + 74;
pub const LVM_GETTOOLTIPS: UINT = LVM_FIRST + 78;
pub const LVM_SORTITEMSEX: UINT = LVM_FIRST + 81;
STRUCT!{struct LVBKIMAGEA {
    ulFlags: ULONG,
    hbm: HBITMAP,
    pszImage: LPSTR,
    cchImageMax: UINT,
    xOffsetPercent: c_int,
    yOffsetPercent: c_int,
}}
pub type LPLVBKIMAGEA = *mut LVBKIMAGEA;
STRUCT!{struct LVBKIMAGEW {
    ulFlags: ULONG,
    hbm: HBITMAP,
    pszImage: LPWSTR,
    cchImageMax: UINT,
    xOffsetPercent: c_int,
    yOffsetPercent: c_int,
}}
pub type LPLVBKIMAGEW = *mut LVBKIMAGEW;
pub const LVBKIF_SOURCE_NONE: ULONG = 0x00000000;
pub const LVBKIF_SOURCE_HBITMAP: ULONG = 0x00000001;
pub const LVBKIF_SOURCE_URL: ULONG = 0x00000002;
pub const LVBKIF_SOURCE_MASK: ULONG = 0x00000003;
pub const LVBKIF_STYLE_NORMAL: ULONG = 0x00000000;
pub const LVBKIF_STYLE_TILE: ULONG = 0x00000010;
pub const LVBKIF_STYLE_MASK: ULONG = 0x00000010;
pub const LVBKIF_FLAG_TILEOFFSET: ULONG = 0x00000100;
pub const LVBKIF_TYPE_WATERMARK: ULONG = 0x10000000;
pub const LVBKIF_FLAG_ALPHABLEND: ULONG = 0x20000000;
pub const LVM_SETBKIMAGEA: UINT = LVM_FIRST + 68;
pub const LVM_SETBKIMAGEW: UINT = LVM_FIRST + 138;
pub const LVM_GETBKIMAGEA: UINT = LVM_FIRST + 69;
pub const LVM_GETBKIMAGEW: UINT = LVM_FIRST + 139;
pub const LVM_SETSELECTEDCOLUMN: UINT = LVM_FIRST + 140;
pub const LV_VIEW_ICON: DWORD = 0x0000;
pub const LV_VIEW_DETAILS: DWORD = 0x0001;
pub const LV_VIEW_SMALLICON: DWORD = 0x0002;
pub const LV_VIEW_LIST: DWORD = 0x0003;
pub const LV_VIEW_TILE: DWORD = 0x0004;
pub const LV_VIEW_MAX: DWORD = 0x0004;
pub const LVM_SETVIEW: UINT = LVM_FIRST + 142;
pub const LVM_GETVIEW: UINT = LVM_FIRST + 143;
pub const LVGF_NONE: UINT = 0x00000000;
pub const LVGF_HEADER: UINT = 0x00000001;
pub const LVGF_FOOTER: UINT = 0x00000002;
pub const LVGF_STATE: UINT = 0x00000004;
pub const LVGF_ALIGN: UINT = 0x00000008;
pub const LVGF_GROUPID: UINT = 0x00000010;
pub const LVGF_SUBTITLE: UINT = 0x00000100;
pub const LVGF_TASK: UINT = 0x00000200;
pub const LVGF_DESCRIPTIONTOP: UINT = 0x00000400;
pub const LVGF_DESCRIPTIONBOTTOM: UINT = 0x00000800;
pub const LVGF_TITLEIMAGE: UINT = 0x00001000;
pub const LVGF_EXTENDEDIMAGE: UINT = 0x00002000;
pub const LVGF_ITEMS: UINT = 0x00004000;
pub const LVGF_SUBSET: UINT = 0x00008000;
pub const LVGF_SUBSETITEMS: UINT = 0x00010000;
pub const LVGS_NORMAL: UINT = 0x00000000;
pub const LVGS_COLLAPSED: UINT = 0x00000001;
pub const LVGS_HIDDEN: UINT = 0x00000002;
pub const LVGS_NOHEADER: UINT = 0x00000004;
pub const LVGS_COLLAPSIBLE: UINT = 0x00000008;
pub const LVGS_FOCUSED: UINT = 0x00000010;
pub const LVGS_SELECTED: UINT = 0x00000020;
pub const LVGS_SUBSETED: UINT = 0x00000040;
pub const LVGS_SUBSETLINKFOCUSED: UINT = 0x00000080;
pub const LVGA_HEADER_LEFT: UINT = 0x00000001;
pub const LVGA_HEADER_CENTER: UINT = 0x00000002;
pub const LVGA_HEADER_RIGHT: UINT = 0x00000004;
pub const LVGA_FOOTER_LEFT: UINT = 0x00000008;
pub const LVGA_FOOTER_CENTER: UINT = 0x00000010;
pub const LVGA_FOOTER_RIGHT: UINT = 0x00000020;
STRUCT!{struct LVGROUP {
    cbSize: UINT,
    mask: UINT,
    pszHeader: LPWSTR,
    cchHeader: c_int,
    pszFooter: LPWSTR,
    cchFooter: c_int,
    iGroupId: c_int,
    stateMask: UINT,
    state: UINT,
    uAlign: UINT,
    pszSubtitle: LPWSTR,
    cchSubtitle: UINT,
    pszTask: LPWSTR,
    cchTask: UINT,
    pszDescriptionTop: LPWSTR,
    cchDescriptionTop: UINT,
    pszDescriptionBottom: LPWSTR,
    cchDescriptionBottom: UINT,
    iTitleImage: c_int,
    iExtendedImage: c_int,
    iFirstItem: c_int,
    cItems: UINT,
    pszSubsetTitle: LPWSTR,
    cchSubsetTitle: UINT,
}}
pub type PLVGROUP = *mut LVGROUP;
pub const LVM_INSERTGROUP: UINT = LVM_FIRST + 145;
pub const LVM_SETGROUPINFO: UINT = LVM_FIRST + 147;
pub const LVM_GETGROUPINFO: UINT = LVM_FIRST + 149;
pub const LVM_REMOVEGROUP: UINT = LVM_FIRST + 150;
pub const LVM_MOVEGROUP: UINT = LVM_FIRST + 151;
pub const LVM_GETGROUPCOUNT: UINT = LVM_FIRST + 152;
pub const LVM_GETGROUPINFOBYINDEX: UINT = LVM_FIRST + 153;
pub const LVM_MOVEITEMTOGROUP: UINT = LVM_FIRST + 154;
pub const LVGGR_GROUP: LPARAM = 0;
pub const LVGGR_HEADER: LPARAM = 1;
pub const LVGGR_LABEL: LPARAM = 2;
pub const LVGGR_SUBSETLINK: LPARAM = 3;
pub const LVM_GETGROUPRECT: UINT = LVM_FIRST + 98;
pub const LVGMF_NONE: UINT = 0x00000000;
pub const LVGMF_BORDERSIZE: UINT = 0x00000001;
pub const LVGMF_BORDERCOLOR: UINT = 0x00000002;
pub const LVGMF_TEXTCOLOR: UINT = 0x00000004;
STRUCT!{struct LVGROUPMETRICS {
    cbSize: UINT,
    mask: UINT,
    Left: UINT,
    Top: UINT,
    Right: UINT,
    Bottom: UINT,
    crLeft: COLORREF,
    crTop: COLORREF,
    crRight: COLORREF,
    crBottom: COLORREF,
    crHeader: COLORREF,
    crFooter: COLORREF,
}}
pub type PLVGROUPMETRICS = *mut LVGROUPMETRICS;
pub const LVM_SETGROUPMETRICS: UINT = LVM_FIRST + 155;
pub const LVM_GETGROUPMETRICS: UINT = LVM_FIRST + 156;
pub const LVM_ENABLEGROUPVIEW: UINT = LVM_FIRST + 157;
FN!{stdcall PFNLVGROUPCOMPARE(
    c_int,
    c_int,
    *mut c_void,
) -> c_int}
pub const LVM_SORTGROUPS: UINT = LVM_FIRST + 158;
STRUCT!{struct LVINSERTGROUPSORTED {
    pfnGroupCompare: PFNLVGROUPCOMPARE,
    pvData: *mut c_void,
    lvGroup: LVGROUP,
}}
pub type PLVINSERTGROUPSORTED = *mut LVINSERTGROUPSORTED;
pub const LVM_INSERTGROUPSORTED: UINT = LVM_FIRST + 159;
pub const LVM_REMOVEALLGROUPS: UINT = LVM_FIRST + 160;
pub const LVM_HASGROUP: UINT = LVM_FIRST + 161;
pub const LVM_GETGROUPSTATE: UINT = LVM_FIRST + 92;
pub const LVM_GETFOCUSEDGROUP: UINT = LVM_FIRST + 93;
pub const LVTVIF_AUTOSIZE: DWORD = 0x00000000;
pub const LVTVIF_FIXEDWIDTH: DWORD = 0x00000001;
pub const LVTVIF_FIXEDHEIGHT: DWORD = 0x00000002;
pub const LVTVIF_FIXEDSIZE: DWORD = 0x00000003;
pub const LVTVIF_EXTENDED: DWORD = 0x00000004;
pub const LVTVIM_TILESIZE: DWORD = 0x00000001;
pub const LVTVIM_COLUMNS: DWORD = 0x00000002;
pub const LVTVIM_LABELMARGIN: DWORD = 0x00000004;
STRUCT!{struct LVTILEVIEWINFO {
    cbSize: UINT,
    dwMask: DWORD,
    dwFlags: DWORD,
    sizeTile: SIZE,
    cLines: c_int,
    rcLabelMargin: RECT,
}}
pub type PLVTILEVIEWINFO = *mut LVTILEVIEWINFO;
STRUCT!{struct LVTILEINFO {
    cbSize: UINT,
    iItem: c_int,
    cColumns: UINT,
    puColumns: PUINT,
    piColFmt: *mut c_int,
}}
pub type PLVTILEINFO = *mut LVTILEINFO;
pub const LVM_SETTILEVIEWINFO: UINT = LVM_FIRST + 162;
pub const LVM_GETTILEVIEWINFO: UINT = LVM_FIRST + 163;
pub const LVM_SETTILEINFO: UINT = LVM_FIRST + 164;
pub const LVM_GETTILEINFO: UINT = LVM_FIRST + 165;
STRUCT!{struct LVINSERTMARK {
    cbSize: UINT,
    dwFlags: DWORD,
    iItem: c_int,
    dwReserved: DWORD,
}}
pub type LPLVINSERTMARK = *mut LVINSERTMARK;
pub const LVIM_AFTER: DWORD = 0x00000001;
pub const LVM_SETINSERTMARK: UINT = LVM_FIRST + 166;
pub const LVM_GETINSERTMARK: UINT = LVM_FIRST + 167;
pub const LVM_INSERTMARKHITTEST: UINT = LVM_FIRST + 168;
pub const LVM_GETINSERTMARKRECT: UINT = LVM_FIRST + 169;
pub const LVM_SETINSERTMARKCOLOR: UINT = LVM_FIRST + 170;
pub const LVM_GETINSERTMARKCOLOR: UINT = LVM_FIRST + 171;
STRUCT!{struct LVSETINFOTIP {
    cbSize: UINT,
    dwFlags: DWORD,
    pszText: LPWSTR,
    iItem: c_int,
    iSubItem: c_int,
}}
pub type PLVSETINFOTIP = *mut LVSETINFOTIP;
pub const LVM_SETINFOTIP: UINT = LVM_FIRST + 173;
pub const LVM_GETSELECTEDCOLUMN: UINT = LVM_FIRST + 174;
pub const LVM_ISGROUPVIEWENABLED: UINT = LVM_FIRST + 175;
pub const LVM_GETOUTLINECOLOR: UINT = LVM_FIRST + 176;
pub const LVM_SETOUTLINECOLOR: UINT = LVM_FIRST + 177;
pub const LVM_CANCELEDITLABEL: UINT = LVM_FIRST + 179;
pub const LVM_MAPINDEXTOID: UINT = LVM_FIRST + 180;
pub const LVM_MAPIDTOINDEX: UINT = LVM_FIRST + 181;
pub const LVM_ISITEMVISIBLE: UINT = LVM_FIRST + 182;
pub const LVM_GETEMPTYTEXT: UINT = LVM_FIRST + 204;
pub const LVM_GETFOOTERRECT: UINT = LVM_FIRST + 205;
pub const LVFF_ITEMCOUNT: UINT = 0x00000001;
STRUCT!{struct LVFOOTERINFO {
    mask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    cItems: UINT,
}}
pub type LPLVFOOTERINFO = *mut LVFOOTERINFO;
pub const LVM_GETFOOTERINFO: UINT = LVM_FIRST + 206;
pub const LVM_GETFOOTERITEMRECT: UINT = LVM_FIRST + 207;
pub const LVFIF_TEXT: UINT = 0x00000001;
pub const LVFIF_STATE: UINT = 0x00000002;
pub const LVFIS_FOCUSED: UINT = 0x0001;
STRUCT!{struct LVFOOTERITEM {
    mask: UINT,
    iItem: c_int,
    pszText: LPWSTR,
    cchTextMax: c_int,
    state: UINT,
    stateMask: UINT,
}}
pub type LPLVFOOTERITEM = *mut LVFOOTERITEM;
pub const LVM_GETFOOTERITEM: UINT = LVM_FIRST + 208;
STRUCT!{struct LVITEMINDEX {
    iItem: c_int,
    iGroup: c_int,
}}
pub type PLVITEMINDEX = *mut LVITEMINDEX;
pub const LVM_GETITEMINDEXRECT: UINT = LVM_FIRST + 209;
pub const LVM_SETITEMINDEXSTATE: UINT = LVM_FIRST + 210;
pub const LVM_GETNEXTITEMINDEX: UINT = LVM_FIRST + 211;
pub type LPNM_LISTVIEW = LPNMLISTVIEW;
pub type NM_LISTVIEW = NMLISTVIEW;
STRUCT!{struct NMLISTVIEW {
    hdr: NMHDR,
    iItem: c_int,
    iSubItem: c_int,
    uNewState: UINT,
    uOldState: UINT,
    uChanged: UINT,
    ptAction: POINT,
    lParam: LPARAM,
}}
pub type LPNMLISTVIEW = *mut NMLISTVIEW;
STRUCT!{struct NMITEMACTIVATE {
    hdr: NMHDR,
    iItem: c_int,
    iSubItem: c_int,
    uNewState: UINT,
    uOldState: UINT,
    uChanged: UINT,
    ptAction: POINT,
    lParam: LPARAM,
    uKeyFlags: UINT,
}}
pub type LPNMITEMACTIVATE = *mut NMITEMACTIVATE;
pub const LVKF_ALT: UINT = 0x0001;
pub const LVKF_CONTROL: UINT = 0x0002;
pub const LVKF_SHIFT: UINT = 0x0004;
STRUCT!{struct NMLVCUSTOMDRAW {
    nmcd: NMCUSTOMDRAW,
    clrText: COLORREF,
    clrTextBk: COLORREF,
    iSubItem: c_int,
    dwItemType: DWORD,
    clrFace: COLORREF,
    iIconEffect: c_int,
    iIconPhase: c_int,
    iPartId: c_int,
    iStateId: c_int,
    rcText: RECT,
    uAlign: UINT,
}}
pub type LPNMLVCUSTOMDRAW = *mut NMLVCUSTOMDRAW;
pub const LVCDI_ITEM: DWORD = 0x00000000;
pub const LVCDI_GROUP: DWORD = 0x00000001;
pub const LVCDI_ITEMSLIST: DWORD = 0x00000002;
pub const LVCDRF_NOSELECT: LRESULT = 0x00010000;
pub const LVCDRF_NOGROUPFRAME: LRESULT = 0x00020000;
STRUCT!{struct NMLVCACHEHINT {
    hdr: NMHDR,
    iFrom: c_int,
    iTo: c_int,
}}
pub type LPNMLVCACHEHINT = *mut NMLVCACHEHINT;
pub type LPNM_CACHEHINT = LPNMLVCACHEHINT;
pub type PNM_CACHEHINT = LPNMLVCACHEHINT;
pub type NM_CACHEHINT = NMLVCACHEHINT;
STRUCT!{struct NMLVFINDITEMA {
    hdr: NMHDR,
    iStart: c_int,
    lvfi: LVFINDINFOA,
}}
pub type LPNMLVFINDITEMA = *mut NMLVFINDITEMA;
STRUCT!{struct NMLVFINDITEMW {
    hdr: NMHDR,
    iStart: c_int,
    lvfi: LVFINDINFOW,
}}
pub type LPNMLVFINDITEMW = *mut NMLVFINDITEMW;
pub type PNM_FINDITEMA = LPNMLVFINDITEMA;
pub type LPNM_FINDITEMA = LPNMLVFINDITEMA;
pub type NM_FINDITEMA = NMLVFINDITEMA;
pub type PNM_FINDITEMW = LPNMLVFINDITEMW;
pub type LPNM_FINDITEMW = LPNMLVFINDITEMW;
pub type NM_FINDITEMW = NMLVFINDITEMW;
STRUCT!{struct NMLVODSTATECHANGE {
    hdr: NMHDR,
    iFrom: c_int,
    iTo: c_int,
    uNewState: UINT,
    uOldState: UINT,
}}
pub type LPNMLVODSTATECHANGE = *mut NMLVODSTATECHANGE;
pub type PNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
pub type LPNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
pub type NM_ODSTATECHANGE = NMLVODSTATECHANGE;
pub const LVN_ITEMCHANGING: UINT = LVN_FIRST - 0;
pub const LVN_ITEMCHANGED: UINT = LVN_FIRST - 1;
pub const LVN_INSERTITEM: UINT = LVN_FIRST - 2;
pub const LVN_DELETEITEM: UINT = LVN_FIRST - 3;
pub const LVN_DELETEALLITEMS: UINT = LVN_FIRST - 4;
pub const LVN_BEGINLABELEDITA: UINT = LVN_FIRST - 5;
pub const LVN_BEGINLABELEDITW: UINT = LVN_FIRST - 75;
pub const LVN_ENDLABELEDITA: UINT = LVN_FIRST - 6;
pub const LVN_ENDLABELEDITW: UINT = LVN_FIRST - 76;
pub const LVN_COLUMNCLICK: UINT = LVN_FIRST - 8;
pub const LVN_BEGINDRAG: UINT = LVN_FIRST - 9;
pub const LVN_BEGINRDRAG: UINT = LVN_FIRST - 11;
pub const LVN_ODCACHEHINT: UINT = LVN_FIRST - 13;
pub const LVN_ODFINDITEMA: UINT = LVN_FIRST - 52;
pub const LVN_ODFINDITEMW: UINT = LVN_FIRST - 79;
pub const LVN_ITEMACTIVATE: UINT = LVN_FIRST - 14;
pub const LVN_ODSTATECHANGED: UINT = LVN_FIRST - 15;
pub const LVN_HOTTRACK: UINT = LVN_FIRST - 21;
pub const LVN_GETDISPINFOA: UINT = LVN_FIRST - 50;
pub const LVN_GETDISPINFOW: UINT = LVN_FIRST - 77;
pub const LVN_SETDISPINFOA: UINT = LVN_FIRST - 51;
pub const LVN_SETDISPINFOW: UINT = LVN_FIRST - 78;
pub const LVIF_DI_SETITEM: UINT = 0x1000;
pub type LV_DISPINFOA = NMLVDISPINFOA;
pub type LV_DISPINFOW = NMLVDISPINFOW;
STRUCT!{struct NMLVDISPINFOA {
    hdr: NMHDR,
    item: LVITEMA,
}}
pub type LPNMLVDISPINFOA = *mut NMLVDISPINFOA;
STRUCT!{struct NMLVDISPINFOW {
    hdr: NMHDR,
    item: LVITEMW,
}}
pub type LPNMLVDISPINFOW = *mut NMLVDISPINFOW;
pub const LVN_KEYDOWN: UINT = LVN_FIRST - 55;
pub type LV_KEYDOWN = NMLVKEYDOWN;
STRUCT!{#[repr(packed)] struct NMLVKEYDOWN {
    hdr: NMHDR,
    wVKey: WORD,
    flags: UINT,
}}
pub type LPNMLVKEYDOWN = *mut NMLVKEYDOWN;
pub const LVN_MARQUEEBEGIN: UINT = LVN_FIRST - 56;
STRUCT!{struct NMLVLINK {
    hdr: NMHDR,
    link: LITEM,
    iItem: c_int,
    iSubItem: c_int,
}}
pub type PNMLVLINK = *mut NMLVLINK;
STRUCT!{struct NMLVGETINFOTIPA {
    hdr: NMHDR,
    dwFlags: DWORD,
    pszText: LPSTR,
    cchTextMax: c_int,
    iItem: c_int,
    iSubItem: c_int,
    lParam: LPARAM,
}}
pub type LPNMLVGETINFOTIPA = *mut NMLVGETINFOTIPA;
STRUCT!{struct NMLVGETINFOTIPW {
    hdr: NMHDR,
    dwFlags: DWORD,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iItem: c_int,
    iSubItem: c_int,
    lParam: LPARAM,
}}
pub type LPNMLVGETINFOTIPW = *mut NMLVGETINFOTIPW;
pub const LVGIT_UNFOLDED: DWORD = 0x0001;
pub const LVN_GETINFOTIPA: UINT = LVN_FIRST - 57;
pub const LVN_GETINFOTIPW: UINT = LVN_FIRST - 58;
pub const LVNSCH_DEFAULT: LPARAM = -1;
pub const LVNSCH_ERROR: LPARAM = -2;
pub const LVNSCH_IGNORE: LPARAM = -3;
pub const LVN_INCREMENTALSEARCHA: UINT = LVN_FIRST - 62;
pub const LVN_INCREMENTALSEARCHW: UINT = LVN_FIRST - 63;
pub const LVN_COLUMNDROPDOWN: UINT = LVN_FIRST - 64;
pub const LVN_COLUMNOVERFLOWCLICK: UINT = LVN_FIRST - 66;
STRUCT!{struct NMLVSCROLL {
    hdr: NMHDR,
    dx: c_int,
    dy: c_int,
}}
pub type LPNMLVSCROLL = *mut NMLVSCROLL;
pub const LVN_BEGINSCROLL: UINT = LVN_FIRST - 80;
pub const LVN_ENDSCROLL: UINT = LVN_FIRST - 81;
pub const LVN_LINKCLICK: UINT = LVN_FIRST - 84;
pub const EMF_CENTERED: DWORD = 0x00000001;
STRUCT!{struct NMLVEMPTYMARKUP {
    hdr: NMHDR,
    dwFlags: DWORD,
    szMarkup: [WCHAR; L_MAX_URL_LENGTH],
}}
pub const LVN_GETEMPTYMARKUP: UINT = LVN_FIRST - 87;
pub const WC_TREEVIEW: &'static str = "SysTreeView32";
pub const TVS_HASBUTTONS: DWORD = 0x0001;
pub const TVS_HASLINES: DWORD = 0x0002;
pub const TVS_LINESATROOT: DWORD = 0x0004;
pub const TVS_EDITLABELS: DWORD = 0x0008;
pub const TVS_DISABLEDRAGDROP: DWORD = 0x0010;
pub const TVS_SHOWSELALWAYS: DWORD = 0x0020;
pub const TVS_RTLREADING: DWORD = 0x0040;
pub const TVS_NOTOOLTIPS: DWORD = 0x0080;
pub const TVS_CHECKBOXES: DWORD = 0x0100;
pub const TVS_TRACKSELECT: DWORD = 0x0200;
pub const TVS_SINGLEEXPAND: DWORD = 0x0400;
pub const TVS_INFOTIP: DWORD = 0x0800;
pub const TVS_FULLROWSELECT: DWORD = 0x1000;
pub const TVS_NOSCROLL: DWORD = 0x2000;
pub const TVS_NONEVENHEIGHT: DWORD = 0x4000;
pub const TVS_NOHSCROLL: DWORD = 0x8000;
pub const TVS_EX_NOSINGLECOLLAPSE: DWORD = 0x0001;
pub const TVS_EX_MULTISELECT: DWORD = 0x0002;
pub const TVS_EX_DOUBLEBUFFER: DWORD = 0x0004;
pub const TVS_EX_NOINDENTSTATE: DWORD = 0x0008;
pub const TVS_EX_RICHTOOLTIP: DWORD = 0x0010;
pub const TVS_EX_AUTOHSCROLL: DWORD = 0x0020;
pub const TVS_EX_FADEINOUTEXPANDOS: DWORD = 0x0040;
pub const TVS_EX_PARTIALCHECKBOXES: DWORD = 0x0080;
pub const TVS_EX_EXCLUSIONCHECKBOXES: DWORD = 0x0100;
pub const TVS_EX_DIMMEDCHECKBOXES: DWORD = 0x0200;
pub const TVS_EX_DRAWIMAGEASYNC: DWORD = 0x0400;
pub enum TREEITEM {}
pub type HTREEITEM = *mut TREEITEM;
pub const TVIF_TEXT: UINT = 0x0001;
pub const TVIF_IMAGE: UINT = 0x0002;
pub const TVIF_PARAM: UINT = 0x0004;
pub const TVIF_STATE: UINT = 0x0008;
pub const TVIF_HANDLE: UINT = 0x0010;
pub const TVIF_SELECTEDIMAGE: UINT = 0x0020;
pub const TVIF_CHILDREN: UINT = 0x0040;
pub const TVIF_INTEGRAL: UINT = 0x0080;
pub const TVIF_STATEEX: UINT = 0x0100;
pub const TVIF_EXPANDEDIMAGE: UINT = 0x0200;
pub const TVIS_SELECTED: UINT = 0x0002;
pub const TVIS_CUT: UINT = 0x0004;
pub const TVIS_DROPHILITED: UINT = 0x0008;
pub const TVIS_BOLD: UINT = 0x0010;
pub const TVIS_EXPANDED: UINT = 0x0020;
pub const TVIS_EXPANDEDONCE: UINT = 0x0040;
pub const TVIS_EXPANDPARTIAL: UINT = 0x0080;
pub const TVIS_OVERLAYMASK: UINT = 0x0F00;
pub const TVIS_STATEIMAGEMASK: UINT = 0xF000;
pub const TVIS_USERMASK: UINT = 0xF000;
pub const TVIS_EX_FLAT: UINT = 0x0001;
pub const TVIS_EX_DISABLED: UINT = 0x0002;
pub const TVIS_EX_ALL: UINT = 0x0002;
STRUCT!{struct NMTVSTATEIMAGECHANGING {
    hdr: NMHDR,
    hti: HTREEITEM,
    iOldStateImageIndex: c_int,
    iNewStateImageIndex: c_int,
}}
pub type LPNMTVSTATEIMAGECHANGING = *mut NMTVSTATEIMAGECHANGING;
pub const I_CHILDRENCALLBACK: c_int = -1;
pub const I_CHILDRENAUTO: c_int = -2;
pub type LPTV_ITEMW = LPTVITEMW;
pub type LPTV_ITEMA = LPTVITEMA;
pub type TV_ITEMW = TVITEMW;
pub type TV_ITEMA = TVITEMA;
STRUCT!{struct TVITEMA {
    mask: UINT,
    hItem: HTREEITEM,
    state: UINT,
    stateMask: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    cChildren: c_int,
    lParam: LPARAM,
}}
pub type LPTVITEMA = *mut TVITEMA;
STRUCT!{struct TVITEMW {
    mask: UINT,
    hItem: HTREEITEM,
    state: UINT,
    stateMask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    cChildren: c_int,
    lParam: LPARAM,
}}
pub type LPTVITEMW = *mut TVITEMW;
STRUCT!{struct TVITEMEXA {
    mask: UINT,
    hItem: HTREEITEM,
    state: UINT,
    stateMask: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    cChildren: c_int,
    lParam: LPARAM,
    iIntegral: c_int,
    uStateEx: UINT,
    hwnd: HWND,
    iExpandedImage: c_int,
    iReserved: c_int,
}}
pub type LPTVITEMEXA = *mut TVITEMEXA;
STRUCT!{struct TVITEMEXW {
    mask: UINT,
    hItem: HTREEITEM,
    state: UINT,
    stateMask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    cChildren: c_int,
    lParam: LPARAM,
    iIntegral: c_int,
    uStateEx: UINT,
    hwnd: HWND,
    iExpandedImage: c_int,
    iReserved: c_int,
}}
pub type LPTVITEMEXW = *mut TVITEMEXW;
pub const TVI_ROOT: HTREEITEM = -0x10000isize as HTREEITEM;
pub const TVI_FIRST: HTREEITEM = -0x0FFFFisize as HTREEITEM;
pub const TVI_LAST: HTREEITEM = -0x0FFFEisize as HTREEITEM;
pub const TVI_SORT: HTREEITEM = -0x0FFFDisize as HTREEITEM;
pub type LPTV_INSERTSTRUCTA = LPTVINSERTSTRUCTA;
pub type LPTV_INSERTSTRUCTW = LPTVINSERTSTRUCTW;
pub type TV_INSERTSTRUCTA = TVINSERTSTRUCTA;
pub type TV_INSERTSTRUCTW = TVINSERTSTRUCTW;
UNION!{union TVINSERTSTRUCTA_u {
    [u32; 15] [u64; 10],
    itemex itemex_mut: TVITEMEXA,
    item item_mut: TV_ITEMA,
}}
STRUCT!{struct TVINSERTSTRUCTA {
    hParent: HTREEITEM,
    hInsertAfter: HTREEITEM,
    u: TVINSERTSTRUCTA_u,
}}
pub type LPTVINSERTSTRUCTA = *mut TVINSERTSTRUCTA;
UNION!{union TVINSERTSTRUCTW_u {
    [u32; 15] [u64; 10],
    itemex itemex_mut: TVITEMEXW,
    item item_mut: TV_ITEMW,
}}
STRUCT!{struct TVINSERTSTRUCTW {
    hParent: HTREEITEM,
    hInsertAfter: HTREEITEM,
    u: TVINSERTSTRUCTW_u,
}}
pub type LPTVINSERTSTRUCTW = *mut TVINSERTSTRUCTW;
pub const TVM_INSERTITEMA: UINT = TV_FIRST + 0;
pub const TVM_INSERTITEMW: UINT = TV_FIRST + 50;
pub const TVM_DELETEITEM: UINT = TV_FIRST + 1;
pub const TVM_EXPAND: UINT = TV_FIRST + 2;
pub const TVE_COLLAPSE: WPARAM = 0x0001;
pub const TVE_EXPAND: WPARAM = 0x0002;
pub const TVE_TOGGLE: WPARAM = 0x0003;
pub const TVE_EXPANDPARTIAL: WPARAM = 0x4000;
pub const TVE_COLLAPSERESET: WPARAM = 0x8000;
pub const TVM_GETITEMRECT: UINT = TV_FIRST + 4;
pub const TVM_GETCOUNT: UINT = TV_FIRST + 5;
pub const TVM_GETINDENT: UINT = TV_FIRST + 6;
pub const TVM_SETINDENT: UINT = TV_FIRST + 7;
pub const TVM_GETIMAGELIST: UINT = TV_FIRST + 8;
pub const TVSIL_NORMAL: WPARAM = 0;
pub const TVSIL_STATE: WPARAM = 2;
pub const TVM_SETIMAGELIST: UINT = TV_FIRST + 9;
pub const TVM_GETNEXTITEM: UINT = TV_FIRST + 10;
pub const TVGN_ROOT: WPARAM = 0x0000;
pub const TVGN_NEXT: WPARAM = 0x0001;
pub const TVGN_PREVIOUS: WPARAM = 0x0002;
pub const TVGN_PARENT: WPARAM = 0x0003;
pub const TVGN_CHILD: WPARAM = 0x0004;
pub const TVGN_FIRSTVISIBLE: WPARAM = 0x0005;
pub const TVGN_NEXTVISIBLE: WPARAM = 0x0006;
pub const TVGN_PREVIOUSVISIBLE: WPARAM = 0x0007;
pub const TVGN_DROPHILITE: WPARAM = 0x0008;
pub const TVGN_CARET: WPARAM = 0x0009;
pub const TVGN_LASTVISIBLE: WPARAM = 0x000A;
pub const TVGN_NEXTSELECTED: WPARAM = 0x000B;
pub const TVSI_NOSINGLEEXPAND: WPARAM = 0x8000;
pub const TVM_SELECTITEM: UINT = TV_FIRST + 11;
pub const TVM_GETITEMA: UINT = TV_FIRST + 12;
pub const TVM_GETITEMW: UINT = TV_FIRST + 62;
pub const TVM_SETITEMA: UINT = TV_FIRST + 13;
pub const TVM_SETITEMW: UINT = TV_FIRST + 63;
pub const TVM_EDITLABELA: UINT = TV_FIRST + 14;
pub const TVM_EDITLABELW: UINT = TV_FIRST + 65;
pub const TVM_GETEDITCONTROL: UINT = TV_FIRST + 15;
pub const TVM_GETVISIBLECOUNT: UINT = TV_FIRST + 16;
pub const TVM_HITTEST: UINT = TV_FIRST + 17;
pub type LPTV_HITTESTINFO = LPTVHITTESTINFO;
pub type TV_HITTESTINFO = TVHITTESTINFO;
STRUCT!{struct TVHITTESTINFO {
    pt: POINT,
    flags: UINT,
    hItem: HTREEITEM,
}}
pub type LPTVHITTESTINFO = *mut TVHITTESTINFO;
pub const TVHT_NOWHERE: UINT = 0x0001;
pub const TVHT_ONITEMICON: UINT = 0x0002;
pub const TVHT_ONITEMLABEL: UINT = 0x0004;
pub const TVHT_ONITEM: UINT = TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON;
pub const TVHT_ONITEMINDENT: UINT = 0x0008;
pub const TVHT_ONITEMBUTTON: UINT = 0x0010;
pub const TVHT_ONITEMRIGHT: UINT = 0x0020;
pub const TVHT_ONITEMSTATEICON: UINT = 0x0040;
pub const TVHT_ABOVE: UINT = 0x0100;
pub const TVHT_BELOW: UINT = 0x0200;
pub const TVHT_TORIGHT: UINT = 0x0400;
pub const TVHT_TOLEFT: UINT = 0x0800;
pub const TVM_CREATEDRAGIMAGE: UINT = TV_FIRST + 18;
pub const TVM_SORTCHILDREN: UINT = TV_FIRST + 19;
pub const TVM_ENSUREVISIBLE: UINT = TV_FIRST + 20;
pub const TVM_SORTCHILDRENCB: UINT = TV_FIRST + 21;
pub const TVM_ENDEDITLABELNOW: UINT = TV_FIRST + 22;
pub const TVM_GETISEARCHSTRINGA: UINT = TV_FIRST + 23;
pub const TVM_GETISEARCHSTRINGW: UINT = TV_FIRST + 64;
pub const TVM_SETTOOLTIPS: UINT = TV_FIRST + 24;
pub const TVM_GETTOOLTIPS: UINT = TV_FIRST + 25;
pub const TVM_SETINSERTMARK: UINT = TV_FIRST + 26;
pub const TVM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const TVM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const TVM_SETITEMHEIGHT: UINT = TV_FIRST + 27;
pub const TVM_GETITEMHEIGHT: UINT = TV_FIRST + 28;
pub const TVM_SETBKCOLOR: UINT = TV_FIRST + 29;
pub const TVM_SETTEXTCOLOR: UINT = TV_FIRST + 30;
pub const TVM_GETBKCOLOR: UINT = TV_FIRST + 31;
pub const TVM_GETTEXTCOLOR: UINT = TV_FIRST + 32;
pub const TVM_SETSCROLLTIME: UINT = TV_FIRST + 33;
pub const TVM_GETSCROLLTIME: UINT = TV_FIRST + 34;
pub const TVM_SETINSERTMARKCOLOR: UINT = TV_FIRST + 37;
pub const TVM_GETINSERTMARKCOLOR: UINT = TV_FIRST + 38;
pub const TVM_SETBORDER: UINT = TV_FIRST + 35;
pub const TVSBF_XBORDER: WPARAM = 0x00000001;
pub const TVSBF_YBORDER: WPARAM = 0x00000002;
pub const TVM_GETITEMSTATE: UINT = TV_FIRST + 39;
pub const TVM_SETLINECOLOR: UINT = TV_FIRST + 40;
pub const TVM_GETLINECOLOR: UINT = TV_FIRST + 41;
pub const TVM_MAPACCIDTOHTREEITEM: UINT = TV_FIRST + 42;
pub const TVM_MAPHTREEITEMTOACCID: UINT = TV_FIRST + 43;
pub const TVM_SETEXTENDEDSTYLE: UINT = TV_FIRST + 44;
pub const TVM_GETEXTENDEDSTYLE: UINT = TV_FIRST + 45;
pub const TVM_SETAUTOSCROLLINFO: UINT = TV_FIRST + 59;
pub const TVM_SETHOT: UINT = TV_FIRST + 58;
pub const TVM_GETSELECTEDCOUNT: UINT = TV_FIRST + 70;
pub const TVM_SHOWINFOTIP: UINT = TV_FIRST + 71;
ENUM!{enum TVITEMPART {
    TVGIPR_BUTTON = 0x0001,
}}
STRUCT!{struct TVGETITEMPARTRECTINFO {
    hti: HTREEITEM,
    prc: *mut RECT,
    partID: TVITEMPART,
}}
pub const TVM_GETITEMPARTRECT: UINT = TV_FIRST + 72;
FN!{stdcall PFNTVCOMPARE(
    lParam1: LPARAM,
    lParam2: LPARAM,
    lParamSort: LPARAM,
) -> c_int}
pub type LPTV_SORTCB = LPTVSORTCB;
pub type TV_SORTCB = TVSORTCB;
STRUCT!{struct TVSORTCB {
    hParent: HTREEITEM,
    lpfnCompare: PFNTVCOMPARE,
    lParam: LPARAM,
}}
pub type LPTVSORTCB = *mut TVSORTCB;
pub type LPNM_TREEVIEWA = LPNMTREEVIEWA;
pub type LPNM_TREEVIEWW = LPNMTREEVIEWW;
pub type NM_TREEVIEWA = NMTREEVIEWA;
pub type NM_TREEVIEWW = NMTREEVIEWW;
STRUCT!{struct NMTREEVIEWA {
    hdr: NMHDR,
    action: UINT,
    itemOld: TVITEMA,
    itemNew: TVITEMA,
    ptDrag: POINT,
}}
pub type LPNMTREEVIEWA = *mut NMTREEVIEWA;
STRUCT!{struct NMTREEVIEWW {
    hdr: NMHDR,
    action: UINT,
    itemOld: TVITEMW,
    itemNew: TVITEMW,
    ptDrag: POINT,
}}
pub type LPNMTREEVIEWW = *mut NMTREEVIEWW;
pub const TVN_SELCHANGINGA: UINT = TVN_FIRST - 1;
pub const TVN_SELCHANGINGW: UINT = TVN_FIRST - 50;
pub const TVN_SELCHANGEDA: UINT = TVN_FIRST - 2;
pub const TVN_SELCHANGEDW: UINT = TVN_FIRST - 51;
pub const TVC_UNKNOWN: LPARAM = 0x0000;
pub const TVC_BYMOUSE: LPARAM = 0x0001;
pub const TVC_BYKEYBOARD: LPARAM = 0x0002;
pub const TVN_GETDISPINFOA: UINT = TVN_FIRST - 3;
pub const TVN_GETDISPINFOW: UINT = TVN_FIRST - 52;
pub const TVN_SETDISPINFOA: UINT = TVN_FIRST - 4;
pub const TVN_SETDISPINFOW: UINT = TVN_FIRST - 53;
pub const TVIF_DI_SETITEM: UINT = 0x1000;
pub type TV_DISPINFOA = NMTVDISPINFOA;
pub type TV_DISPINFOW = NMTVDISPINFOW;
STRUCT!{struct NMTVDISPINFOA {
    hdr: NMHDR,
    item: TVITEMA,
}}
pub type LPNMTVDISPINFOA = *mut NMTVDISPINFOA;
STRUCT!{struct NMTVDISPINFOW {
    hdr: NMHDR,
    item: TVITEMW,
}}
pub type LPNMTVDISPINFOW = *mut NMTVDISPINFOW;
STRUCT!{struct NMTVDISPINFOEXA {
    hdr: NMHDR,
    item: TVITEMEXA,
}}
pub type LPNMTVDISPINFOEXA = *mut NMTVDISPINFOEXA;
STRUCT!{struct NMTVDISPINFOEXW {
    hdr: NMHDR,
    item: TVITEMEXW,
}}
pub type LPNMTVDISPINFOEXW = *mut NMTVDISPINFOEXW;
pub type TV_DISPINFOEXA = NMTVDISPINFOEXA;
pub type TV_DISPINFOEXW = NMTVDISPINFOEXW;
pub const TVN_ITEMEXPANDINGA: UINT = TVN_FIRST - 5;
pub const TVN_ITEMEXPANDINGW: UINT = TVN_FIRST - 54;
pub const TVN_ITEMEXPANDEDA: UINT = TVN_FIRST - 6;
pub const TVN_ITEMEXPANDEDW: UINT = TVN_FIRST - 55;
pub const TVN_BEGINDRAGA: UINT = TVN_FIRST - 7;
pub const TVN_BEGINDRAGW: UINT = TVN_FIRST - 56;
pub const TVN_BEGINRDRAGA: UINT = TVN_FIRST - 8;
pub const TVN_BEGINRDRAGW: UINT = TVN_FIRST - 57;
pub const TVN_DELETEITEMA: UINT = TVN_FIRST - 9;
pub const TVN_DELETEITEMW: UINT = TVN_FIRST - 58;
pub const TVN_BEGINLABELEDITA: UINT = TVN_FIRST - 10;
pub const TVN_BEGINLABELEDITW: UINT = TVN_FIRST - 59;
pub const TVN_ENDLABELEDITA: UINT = TVN_FIRST - 11;
pub const TVN_ENDLABELEDITW: UINT = TVN_FIRST - 60;
pub const TVN_KEYDOWN: UINT = TVN_FIRST - 12;
pub const TVN_GETINFOTIPA: UINT = TVN_FIRST - 13;
pub const TVN_GETINFOTIPW: UINT = TVN_FIRST - 14;
pub const TVN_SINGLEEXPAND: UINT = TVN_FIRST - 15;
pub const TVNRET_DEFAULT: LRESULT = 0;
pub const TVNRET_SKIPOLD: LRESULT = 1;
pub const TVNRET_SKIPNEW: LRESULT = 2;
pub const TVN_ITEMCHANGINGA: UINT = TVN_FIRST - 16;
pub const TVN_ITEMCHANGINGW: UINT = TVN_FIRST - 17;
pub const TVN_ITEMCHANGEDA: UINT = TVN_FIRST - 18;
pub const TVN_ITEMCHANGEDW: UINT = TVN_FIRST - 19;
pub const TVN_ASYNCDRAW: UINT = TVN_FIRST - 20;
pub type TV_KEYDOWN = NMTVKEYDOWN;
STRUCT!{#[repr(packed)] struct NMTVKEYDOWN {
    hdr: NMHDR,
    wVKey: WORD,
    flags: UINT,
}}
pub type LPNMTVKEYDOWN = *mut NMTVKEYDOWN;
STRUCT!{struct NMTVCUSTOMDRAW {
    nmcd: NMCUSTOMDRAW,
    clrText: COLORREF,
    clrTextBk: COLORREF,
    iLevel: c_int,
}}
pub type LPNMTVCUSTOMDRAW = *mut NMTVCUSTOMDRAW;
STRUCT!{struct NMTVGETINFOTIPA {
    hdr: NMHDR,
    pszText: LPSTR,
    cchTextMax: c_int,
    hItem: HTREEITEM,
    lParam: LPARAM,
}}
pub type LPNMTVGETINFOTIPA = *mut NMTVGETINFOTIPA;
STRUCT!{struct NMTVGETINFOTIPW {
    hdr: NMHDR,
    pszText: LPWSTR,
    cchTextMax: c_int,
    hItem: HTREEITEM,
    lParam: LPARAM,
}}
pub type LPNMTVGETINFOTIPW = *mut NMTVGETINFOTIPW;
pub const TVCDRF_NOIMAGES: LRESULT = 0x00010000;
STRUCT!{struct NMTVITEMCHANGE {
    hdr: NMHDR,
    uChanged: UINT,
    hItem: HTREEITEM,
    uStateNew: UINT,
    uStateOld: UINT,
    lParam: LPARAM,
}}
STRUCT!{struct NMTVASYNCDRAW {
    hdr: NMHDR,
    pimldp: *mut IMAGELISTDRAWPARAMS,
    hr: HRESULT,
    hItem: HTREEITEM,
    lParam: LPARAM,
    dwRetFlags: DWORD,
    iRetImageIndex: c_int,
}}
pub const WC_COMBOBOXEX: &'static str = "ComboBoxEx32";
pub const CBEIF_TEXT: UINT = 0x00000001;
pub const CBEIF_IMAGE: UINT = 0x00000002;
pub const CBEIF_SELECTEDIMAGE: UINT = 0x00000004;
pub const CBEIF_OVERLAY: UINT = 0x00000008;
pub const CBEIF_INDENT: UINT = 0x00000010;
pub const CBEIF_LPARAM: UINT = 0x00000020;
pub const CBEIF_DI_SETITEM: UINT = 0x10000000;
STRUCT!{struct COMBOBOXEXITEMA {
    mask: UINT,
    iItem: INT_PTR,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    iOverlay: c_int,
    iIndent: c_int,
    lParam: LPARAM,
}}
pub type PCOMBOBOXEXITEMA = *mut COMBOBOXEXITEMA;
pub type PCCOMBOBOXEXITEMA = *const COMBOBOXEXITEMA;
STRUCT!{struct COMBOBOXEXITEMW {
    mask: UINT,
    iItem: INT_PTR,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    iOverlay: c_int,
    iIndent: c_int,
    lParam: LPARAM,
}}
pub type PCOMBOBOXEXITEMW = *mut COMBOBOXEXITEMW;
pub type PCCOMBOBOXEXITEMW = *const COMBOBOXEXITEMW;
pub const CBEM_INSERTITEMA: UINT = WM_USER + 1;
pub const CBEM_SETIMAGELIST: UINT = WM_USER + 2;
pub const CBEM_GETIMAGELIST: UINT = WM_USER + 3;
pub const CBEM_GETITEMA: UINT = WM_USER + 4;
pub const CBEM_SETITEMA: UINT = WM_USER + 5;
pub const CBEM_DELETEITEM: UINT = CB_DELETESTRING;
pub const CBEM_GETCOMBOCONTROL: UINT = WM_USER + 6;
pub const CBEM_GETEDITCONTROL: UINT = WM_USER + 7;
pub const CBEM_SETEXSTYLE: UINT = WM_USER + 8;
pub const CBEM_SETEXTENDEDSTYLE: UINT = WM_USER + 14;
pub const CBEM_GETEXSTYLE: UINT = WM_USER + 9;
pub const CBEM_GETEXTENDEDSTYLE: UINT = WM_USER + 9;
pub const CBEM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const CBEM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const CBEM_HASEDITCHANGED: UINT = WM_USER + 10;
pub const CBEM_INSERTITEMW: UINT = WM_USER + 11;
pub const CBEM_SETITEMW: UINT = WM_USER + 12;
pub const CBEM_GETITEMW: UINT = WM_USER + 13;
pub const CBEM_SETWINDOWTHEME: UINT = CCM_SETWINDOWTHEME;
pub const CBES_EX_NOEDITIMAGE: DWORD = 0x00000001;
pub const CBES_EX_NOEDITIMAGEINDENT: DWORD = 0x00000002;
pub const CBES_EX_PATHWORDBREAKPROC: DWORD = 0x00000004;
pub const CBES_EX_NOSIZELIMIT: DWORD = 0x00000008;
pub const CBES_EX_CASESENSITIVE: DWORD = 0x00000010;
pub const CBES_EX_TEXTENDELLIPSIS: DWORD = 0x00000020;
STRUCT!{struct NMCOMBOBOXEXA {
    hdr: NMHDR,
    ceItem: COMBOBOXEXITEMA,
}}
pub type PNMCOMBOBOXEXA = *mut NMCOMBOBOXEXA;
STRUCT!{struct NMCOMBOBOXEXW {
    hdr: NMHDR,
    ceItem: COMBOBOXEXITEMW,
}}
pub type PNMCOMBOBOXEXW = *mut NMCOMBOBOXEXW;
pub const CBEN_GETDISPINFOA: UINT = CBEN_FIRST - 0;
pub const CBEN_INSERTITEM: UINT = CBEN_FIRST - 1;
pub const CBEN_DELETEITEM: UINT = CBEN_FIRST - 2;
pub const CBEN_BEGINEDIT: UINT = CBEN_FIRST - 4;
pub const CBEN_ENDEDITA: UINT = CBEN_FIRST - 5;
pub const CBEN_ENDEDITW: UINT = CBEN_FIRST - 6;
pub const CBEN_GETDISPINFOW: UINT = CBEN_FIRST - 7;
pub const CBEN_DRAGBEGINA: UINT = CBEN_FIRST - 8;
pub const CBEN_DRAGBEGINW: UINT = CBEN_FIRST - 9;
pub const CBENF_KILLFOCUS: c_int = 1;
pub const CBENF_RETURN: c_int = 2;
pub const CBENF_ESCAPE: c_int = 3;
pub const CBENF_DROPDOWN: c_int = 4;
pub const CBEMAXSTRLEN: usize = 260;
STRUCT!{struct NMCBEDRAGBEGINW {
    hdr: NMHDR,
    iItemid: c_int,
    szText: [WCHAR; CBEMAXSTRLEN],
}}
pub type PNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;
pub type LPNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;
STRUCT!{struct NMCBEDRAGBEGINA {
    hdr: NMHDR,
    iItemid: c_int,
    szText: [c_char; CBEMAXSTRLEN],
}}
pub type PNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;
pub type LPNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;
STRUCT!{struct NMCBEENDEDITW {
    hdr: NMHDR,
    fChanged: BOOL,
    iNewSelection: c_int,
    szText: [WCHAR; CBEMAXSTRLEN],
    iWhy: c_int,
}}
pub type PNMCBEENDEDITW = *mut NMCBEENDEDITW;
pub type LPNMCBEENDEDITW = *mut NMCBEENDEDITW;
STRUCT!{struct NMCBEENDEDITA {
    hdr: NMHDR,
    fChanged: BOOL,
    iNewSelection: c_int,
    szText: [c_char; CBEMAXSTRLEN],
    iWhy: c_int,
}}
pub type PNMCBEENDEDITA = *mut NMCBEENDEDITA;
pub type LPNMCBEENDEDITA = *mut NMCBEENDEDITA;
pub const WC_TABCONTROL: &'static str = "SysTabControl32";
pub const TCS_SCROLLOPPOSITE: DWORD = 0x0001;
pub const TCS_BOTTOM: DWORD = 0x0002;
pub const TCS_RIGHT: DWORD = 0x0002;
pub const TCS_MULTISELECT: DWORD = 0x0004;
pub const TCS_FLATBUTTONS: DWORD = 0x0008;
pub const TCS_FORCEICONLEFT: DWORD = 0x0010;
pub const TCS_FORCELABELLEFT: DWORD = 0x0020;
pub const TCS_HOTTRACK: DWORD = 0x0040;
pub const TCS_VERTICAL: DWORD = 0x0080;
pub const TCS_TABS: DWORD = 0x0000;
pub const TCS_BUTTONS: DWORD = 0x0100;
pub const TCS_SINGLELINE: DWORD = 0x0000;
pub const TCS_MULTILINE: DWORD = 0x0200;
pub const TCS_RIGHTJUSTIFY: DWORD = 0x0000;
pub const TCS_FIXEDWIDTH: DWORD = 0x0400;
pub const TCS_RAGGEDRIGHT: DWORD = 0x0800;
pub const TCS_FOCUSONBUTTONDOWN: DWORD = 0x1000;
pub const TCS_OWNERDRAWFIXED: DWORD = 0x2000;
pub const TCS_TOOLTIPS: DWORD = 0x4000;
pub const TCS_FOCUSNEVER: DWORD = 0x8000;
pub const TCS_EX_FLATSEPARATORS: DWORD = 0x00000001;
pub const TCS_EX_REGISTERDROP: DWORD = 0x00000002;
pub const TCM_GETIMAGELIST: UINT = TCM_FIRST + 2;
pub const TCM_SETIMAGELIST: UINT = TCM_FIRST + 3;
pub const TCM_GETITEMCOUNT: UINT = TCM_FIRST + 4;
pub const TCIF_TEXT: UINT = 0x0001;
pub const TCIF_IMAGE: UINT = 0x0002;
pub const TCIF_RTLREADING: UINT = 0x0004;
pub const TCIF_PARAM: UINT = 0x0008;
pub const TCIF_STATE: UINT = 0x0010;
pub const TCIS_BUTTONPRESSED: DWORD = 0x0001;
pub const TCIS_HIGHLIGHTED: DWORD = 0x0002;
pub type TC_ITEMHEADERA = TCITEMHEADERA;
pub type TC_ITEMHEADERW = TCITEMHEADERW;
STRUCT!{struct TCITEMHEADERA {
    mask: UINT,
    lpReserved1: UINT,
    lpReserved2: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
}}
pub type LPTCITEMHEADERA = *mut TCITEMHEADERA;
STRUCT!{struct TCITEMHEADERW {
    mask: UINT,
    lpReserved1: UINT,
    lpReserved2: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
}}
pub type LPTCITEMHEADERW = *mut TCITEMHEADERW;
pub type TC_ITEMA = TCITEMA;
pub type TC_ITEMW = TCITEMW;
STRUCT!{struct TCITEMA {
    mask: UINT,
    dwState: DWORD,
    dwStateMask: DWORD,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
}}
pub type LPTCITEMA = *mut TCITEMA;
STRUCT!{struct TCITEMW {
    mask: UINT,
    dwState: DWORD,
    dwStateMask: DWORD,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
}}
pub type LPTCITEMW = *mut TCITEMW;
pub const TCM_GETITEMA: UINT = TCM_FIRST + 5;
pub const TCM_GETITEMW: UINT = TCM_FIRST + 60;
pub const TCM_SETITEMA: UINT = TCM_FIRST + 6;
pub const TCM_SETITEMW: UINT = TCM_FIRST + 61;
pub const TCM_INSERTITEMA: UINT = TCM_FIRST + 7;
pub const TCM_INSERTITEMW: UINT = TCM_FIRST + 62;
pub const TCM_DELETEITEM: UINT = TCM_FIRST + 8;
pub const TCM_DELETEALLITEMS: UINT = TCM_FIRST + 9;
pub const TCM_GETITEMRECT: UINT = TCM_FIRST + 10;
pub const TCM_GETCURSEL: UINT = TCM_FIRST + 11;
pub const TCM_SETCURSEL: UINT = TCM_FIRST + 12;
pub const TCHT_NOWHERE: UINT = 0x0001;
pub const TCHT_ONITEMICON: UINT = 0x0002;
pub const TCHT_ONITEMLABEL: UINT = 0x0004;
pub const TCHT_ONITEM: UINT = TCHT_ONITEMICON | TCHT_ONITEMLABEL;
pub type LPTC_HITTESTINFO = LPTCHITTESTINFO;
pub type TC_HITTESTINFO = TCHITTESTINFO;
STRUCT!{struct TCHITTESTINFO {
    pt: POINT,
    flags: UINT,
}}
pub type LPTCHITTESTINFO = *mut TCHITTESTINFO;
pub const TCM_HITTEST: UINT = TCM_FIRST + 13;
pub const TCM_SETITEMEXTRA: UINT = TCM_FIRST + 14;
pub const TCM_ADJUSTRECT: UINT = TCM_FIRST + 40;
pub const TCM_SETITEMSIZE: UINT = TCM_FIRST + 41;
pub const TCM_REMOVEIMAGE: UINT = TCM_FIRST + 42;
pub const TCM_SETPADDING: UINT = TCM_FIRST + 43;
pub const TCM_GETROWCOUNT: UINT = TCM_FIRST + 44;
pub const TCM_GETTOOLTIPS: UINT = TCM_FIRST + 45;
pub const TCM_SETTOOLTIPS: UINT = TCM_FIRST + 46;
pub const TCM_GETCURFOCUS: UINT = TCM_FIRST + 47;
pub const TCM_SETCURFOCUS: UINT = TCM_FIRST + 48;
pub const TCM_SETMINTABWIDTH: UINT = TCM_FIRST + 49;
pub const TCM_DESELECTALL: UINT = TCM_FIRST + 50;
pub const TCM_HIGHLIGHTITEM: UINT = TCM_FIRST + 51;
pub const TCM_SETEXTENDEDSTYLE: UINT = TCM_FIRST + 52;
pub const TCM_GETEXTENDEDSTYLE: UINT = TCM_FIRST + 53;
pub const TCM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const TCM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const TCN_KEYDOWN: UINT = TCN_FIRST - 0;
pub type TC_KEYDOWN = NMTCKEYDOWN;
STRUCT!{#[repr(packed)] struct NMTCKEYDOWN {
    hdr: NMHDR,
    wVKey: WORD,
    flags: UINT,
}}
pub const TCN_SELCHANGE: UINT = TCN_FIRST - 1;
pub const TCN_SELCHANGING: UINT = TCN_FIRST - 2;
pub const TCN_GETOBJECT: UINT = TCN_FIRST - 3;
pub const TCN_FOCUSCHANGE: UINT = TCN_FIRST - 4;
pub const ANIMATE_CLASS: &'static str = "SysAnimate32";
pub const ACS_CENTER: DWORD = 0x0001;
pub const ACS_TRANSPARENT: DWORD = 0x0002;
pub const ACS_AUTOPLAY: DWORD = 0x0004;
pub const ACS_TIMER: DWORD = 0x0008;
pub const ACM_OPENA: UINT = WM_USER + 100;
pub const ACM_OPENW: UINT = WM_USER + 103;
pub const ACM_PLAY: UINT = WM_USER + 101;
pub const ACM_STOP: UINT = WM_USER + 102;
pub const ACM_ISPLAYING: UINT = WM_USER + 104;
pub const ACN_START: WPARAM = 1;
pub const ACN_STOP: WPARAM = 2;
pub const MONTHCAL_CLASS: &'static str = "SysMonthCal32";
pub type MONTHDAYSTATE = DWORD;
pub type LPMONTHDAYSTATE = *mut DWORD;
pub const MCM_FIRST: UINT = 0x1000;
pub const MCM_GETCURSEL: UINT = MCM_FIRST + 1;
pub const MCM_SETCURSEL: UINT = MCM_FIRST + 2;
pub const MCM_GETMAXSELCOUNT: UINT = MCM_FIRST + 3;
pub const MCM_SETMAXSELCOUNT: UINT = MCM_FIRST + 4;
pub const MCM_GETSELRANGE: UINT = MCM_FIRST + 5;
pub const MCM_SETSELRANGE: UINT = MCM_FIRST + 6;
pub const MCM_GETMONTHRANGE: UINT = MCM_FIRST + 7;
pub const MCM_SETDAYSTATE: UINT = MCM_FIRST + 8;
pub const MCM_GETMINREQRECT: UINT = MCM_FIRST + 9;
pub const MCM_SETCOLOR: UINT = MCM_FIRST + 10;
pub const MCM_GETCOLOR: UINT = MCM_FIRST + 11;
pub const MCSC_BACKGROUND: WPARAM = 0;
pub const MCSC_TEXT: WPARAM = 1;
pub const MCSC_TITLEBK: WPARAM = 2;
pub const MCSC_TITLETEXT: WPARAM = 3;
pub const MCSC_MONTHBK: WPARAM = 4;
pub const MCSC_TRAILINGTEXT: WPARAM = 5;
pub const MCM_SETTODAY: UINT = MCM_FIRST + 12;
pub const MCM_GETTODAY: UINT = MCM_FIRST + 13;
pub const MCM_HITTEST: UINT = MCM_FIRST + 14;
STRUCT!{struct MCHITTESTINFO {
    cbSize: UINT,
    pt: POINT,
    uHit: UINT,
    st: SYSTEMTIME,
    rc: RECT,
    iOffset: c_int,
    iRow: c_int,
    iCol: c_int,
}}
pub type PMCHITTESTINFO = *mut MCHITTESTINFO;
pub const MCHT_TITLE: UINT = 0x00010000;
pub const MCHT_CALENDAR: UINT = 0x00020000;
pub const MCHT_TODAYLINK: UINT = 0x00030000;
pub const MCHT_CALENDARCONTROL: UINT = 0x00100000;
pub const MCHT_NEXT: UINT = 0x01000000;
pub const MCHT_PREV: UINT = 0x02000000;
pub const MCHT_NOWHERE: UINT = 0x00000000;
pub const MCHT_TITLEBK: UINT = MCHT_TITLE;
pub const MCHT_TITLEMONTH: UINT = MCHT_TITLE | 0x0001;
pub const MCHT_TITLEYEAR: UINT = MCHT_TITLE | 0x0002;
pub const MCHT_TITLEBTNNEXT: UINT = MCHT_TITLE | MCHT_NEXT | 0x0003;
pub const MCHT_TITLEBTNPREV: UINT = MCHT_TITLE | MCHT_PREV | 0x0003;
pub const MCHT_CALENDARBK: UINT = MCHT_CALENDAR;
pub const MCHT_CALENDARDATE: UINT = MCHT_CALENDAR | 0x0001;
pub const MCHT_CALENDARDATENEXT: UINT = MCHT_CALENDARDATE | MCHT_NEXT;
pub const MCHT_CALENDARDATEPREV: UINT = MCHT_CALENDARDATE | MCHT_PREV;
pub const MCHT_CALENDARDAY: UINT = MCHT_CALENDAR | 0x0002;
pub const MCHT_CALENDARWEEKNUM: UINT = MCHT_CALENDAR | 0x0003;
pub const MCHT_CALENDARDATEMIN: UINT = MCHT_CALENDAR | 0x0004;
pub const MCHT_CALENDARDATEMAX: UINT = MCHT_CALENDAR | 0x0005;
pub const MCM_SETFIRSTDAYOFWEEK: UINT = MCM_FIRST + 15;
pub const MCM_GETFIRSTDAYOFWEEK: UINT = MCM_FIRST + 16;
pub const MCM_GETRANGE: UINT = MCM_FIRST + 17;
pub const MCM_SETRANGE: UINT = MCM_FIRST + 18;
pub const MCM_GETMONTHDELTA: UINT = MCM_FIRST + 19;
pub const MCM_SETMONTHDELTA: UINT = MCM_FIRST + 20;
pub const MCM_GETMAXTODAYWIDTH: UINT = MCM_FIRST + 21;
pub const MCM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const MCM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const MCMV_MONTH: DWORD = 0;
pub const MCMV_YEAR: DWORD = 1;
pub const MCMV_DECADE: DWORD = 2;
pub const MCMV_CENTURY: DWORD = 3;
pub const MCMV_MAX: DWORD = MCMV_CENTURY;
pub const MCM_GETCURRENTVIEW: UINT = MCM_FIRST + 22;
pub const MCM_GETCALENDARCOUNT: UINT = MCM_FIRST + 23;
pub const MCGIP_CALENDARCONTROL: DWORD = 0;
pub const MCGIP_NEXT: DWORD = 1;
pub const MCGIP_PREV: DWORD = 2;
pub const MCGIP_FOOTER: DWORD = 3;
pub const MCGIP_CALENDAR: DWORD = 4;
pub const MCGIP_CALENDARHEADER: DWORD = 5;
pub const MCGIP_CALENDARBODY: DWORD = 6;
pub const MCGIP_CALENDARROW: DWORD = 7;
pub const MCGIP_CALENDARCELL: DWORD = 8;
pub const MCGIF_DATE: DWORD = 0x00000001;
pub const MCGIF_RECT: DWORD = 0x00000002;
pub const MCGIF_NAME: DWORD = 0x00000004;
STRUCT!{struct MCGRIDINFO {
    cbSize: UINT,
    dwPart: DWORD,
    dwFlags: DWORD,
    iCalendar: c_int,
    iRow: c_int,
    iCol: c_int,
    bSelected: BOOL,
    stStart: SYSTEMTIME,
    stEnd: SYSTEMTIME,
    rc: RECT,
    pszName: PWSTR,
    cchName: size_t,
}}
pub type PMCGRIDINFO = *mut MCGRIDINFO;
pub const MCM_GETCALENDARGRIDINFO: UINT = MCM_FIRST + 24;
pub const MCM_GETCALID: UINT = MCM_FIRST + 27;
pub const MCM_SETCALID: UINT = MCM_FIRST + 28;
pub const MCM_SIZERECTTOMIN: UINT = MCM_FIRST + 29;
pub const MCM_SETCALENDARBORDER: UINT = MCM_FIRST + 30;
pub const MCM_GETCALENDARBORDER: UINT = MCM_FIRST + 31;
pub const MCM_SETCURRENTVIEW: UINT = MCM_FIRST + 32;
STRUCT!{struct NMSELCHANGE {
    nmhdr: NMHDR,
    stSelStart: SYSTEMTIME,
    stSelEnd: SYSTEMTIME,
}}
pub type LPNMSELCHANGE = *mut NMSELCHANGE;
pub const MCN_SELCHANGE: UINT = MCN_FIRST - 3;
STRUCT!{struct NMDAYSTATE {
    nmhdr: NMHDR,
    stStart: SYSTEMTIME,
    cDayState: c_int,
    prgDayState: LPMONTHDAYSTATE,
}}
pub type LPNMDAYSTATE = *mut NMDAYSTATE;
pub const MCN_GETDAYSTATE: UINT = MCN_FIRST - 1;
pub type NMSELECT = NMSELCHANGE;
pub type LPNMSELECT = *mut NMSELCHANGE;
pub const MCN_SELECT: UINT = MCN_FIRST;
STRUCT!{struct NMVIEWCHANGE {
    nmhdr: NMHDR,
    dwOldView: DWORD,
    dwNewView: DWORD,
}}
pub type LPNMVIEWCHANGE = *mut NMVIEWCHANGE;
pub const MCN_VIEWCHANGE: UINT = MCN_FIRST - 4;
pub const MCS_DAYSTATE: DWORD = 0x0001;
pub const MCS_MULTISELECT: DWORD = 0x0002;
pub const MCS_WEEKNUMBERS: DWORD = 0x0004;
pub const MCS_NOTODAYCIRCLE: DWORD = 0x0008;
pub const MCS_NOTODAY: DWORD = 0x0010;
pub const MCS_NOTRAILINGDATES: DWORD = 0x0040;
pub const MCS_SHORTDAYSOFWEEK: DWORD = 0x0080;
pub const MCS_NOSELCHANGEONNAV: DWORD = 0x0100;
pub const GMR_VISIBLE: DWORD = 0;
pub const GMR_DAYSTATE: DWORD = 1;
pub const DATETIMEPICK_CLASS: &'static str = "SysDateTimePick32";
STRUCT!{struct DATETIMEPICKERINFO {
    cbSize: UINT,
    rcCheck: RECT,
    stateCheck: DWORD,
    rcButton: RECT,
    stateButton: DWORD,
    hwndEdit: HWND,
    hwndUD: HWND,
    hwndDropDown: HWND,
}}
pub type LPDATETIMEPICKERINFO = *mut DATETIMEPICKERINFO;
pub const DTM_FIRST: UINT = 0x1000;
pub const DTM_GETSYSTEMTIME: UINT = DTM_FIRST + 1;
pub const DTM_SETSYSTEMTIME: UINT = DTM_FIRST + 2;
pub const DTM_GETRANGE: UINT = DTM_FIRST + 3;
pub const DTM_SETRANGE: UINT = DTM_FIRST + 4;
pub const DTM_SETFORMATA: UINT = DTM_FIRST + 5;
pub const DTM_SETFORMATW: UINT = DTM_FIRST + 50;
pub const DTM_SETMCCOLOR: UINT = DTM_FIRST + 6;
pub const DTM_GETMCCOLOR: UINT = DTM_FIRST + 7;
pub const DTM_GETMONTHCAL: UINT = DTM_FIRST + 8;
pub const DTM_SETMCFONT: UINT = DTM_FIRST + 9;
pub const DTM_GETMCFONT: UINT = DTM_FIRST + 10;
pub const DTM_SETMCSTYLE: UINT = DTM_FIRST + 11;
pub const DTM_GETMCSTYLE: UINT = DTM_FIRST + 12;
pub const DTM_CLOSEMONTHCAL: UINT = DTM_FIRST + 13;
pub const DTM_GETDATETIMEPICKERINFO: UINT = DTM_FIRST + 14;
pub const DTM_GETIDEALSIZE: UINT = DTM_FIRST + 15;
pub const DTS_UPDOWN: DWORD = 0x0001;
pub const DTS_SHOWNONE: DWORD = 0x0002;
pub const DTS_SHORTDATEFORMAT: DWORD = 0x0000;
pub const DTS_LONGDATEFORMAT: DWORD = 0x0004;
pub const DTS_SHORTDATECENTURYFORMAT: DWORD = 0x000C;
pub const DTS_TIMEFORMAT: DWORD = 0x0009;
pub const DTS_APPCANPARSE: DWORD = 0x0010;
pub const DTS_RIGHTALIGN: DWORD = 0x0020;
pub const DTN_DATETIMECHANGE: UINT = DTN_FIRST2 - 6;
STRUCT!{struct NMDATETIMECHANGE {
    nmhdr: NMHDR,
    dwFlags: DWORD,
    st: SYSTEMTIME,
}}
pub type LPNMDATETIMECHANGE = *mut NMDATETIMECHANGE;
pub const DTN_USERSTRINGA: UINT = DTN_FIRST2 - 5;
pub const DTN_USERSTRINGW: UINT = DTN_FIRST - 5;
STRUCT!{struct NMDATETIMESTRINGA {
    nmhdr: NMHDR,
    pszUserString: LPCSTR,
    st: SYSTEMTIME,
    dwFlags: DWORD,
}}
pub type LPNMDATETIMESTRINGA = *mut NMDATETIMESTRINGA;
STRUCT!{struct NMDATETIMESTRINGW {
    nmhdr: NMHDR,
    pszUserString: LPCWSTR,
    st: SYSTEMTIME,
    dwFlags: DWORD,
}}
pub type LPNMDATETIMESTRINGW = *mut NMDATETIMESTRINGW;
pub const DTN_WMKEYDOWNA: UINT = DTN_FIRST2 - 4;
pub const DTN_WMKEYDOWNW: UINT = DTN_FIRST - 4;
STRUCT!{struct NMDATETIMEWMKEYDOWNA {
    nmhdr: NMHDR,
    nVirtKey: c_int,
    pszFormat: LPCSTR,
    st: SYSTEMTIME,
}}
pub type LPNMDATETIMEWMKEYDOWNA = *mut NMDATETIMEWMKEYDOWNA;
STRUCT!{struct NMDATETIMEWMKEYDOWNW {
    nmhdr: NMHDR,
    nVirtKey: c_int,
    pszFormat: LPCWSTR,
    st: SYSTEMTIME,
}}
pub type LPNMDATETIMEWMKEYDOWNW = *mut NMDATETIMEWMKEYDOWNW;
pub const DTN_FORMATA: UINT = DTN_FIRST2 - 3;
pub const DTN_FORMATW: UINT = DTN_FIRST - 3;
STRUCT!{struct NMDATETIMEFORMATA {
    nmhdr: NMHDR,
    pszFormat: LPCSTR,
    st: SYSTEMTIME,
    pszDisplay: LPCSTR,
    szDisplay: [CHAR; 64],
}}
pub type LPNMDATETIMEFORMATA = *mut NMDATETIMEFORMATA;
STRUCT!{struct NMDATETIMEFORMATW {
    nmhdr: NMHDR,
    pszFormat: LPCWSTR,
    st: SYSTEMTIME,
    pszDisplay: LPCWSTR,
    szDisplay: [WCHAR; 64],
}}
pub type LPNMDATETIMEFORMATW = *mut NMDATETIMEFORMATW;
pub const DTN_FORMATQUERYA: UINT = DTN_FIRST2 - 2;
pub const DTN_FORMATQUERYW: UINT = DTN_FIRST - 2;
STRUCT!{struct NMDATETIMEFORMATQUERYA {
    nmhdr: NMHDR,
    pszFormat: LPCSTR,
    szMax: SIZE,
}}
pub type LPNMDATETIMEFORMATQUERYA = *mut NMDATETIMEFORMATQUERYA;
STRUCT!{struct NMDATETIMEFORMATQUERYW {
    nmhdr: NMHDR,
    pszFormat: LPCWSTR,
    szMax: SIZE,
}}
pub type LPNMDATETIMEFORMATQUERYW = *mut NMDATETIMEFORMATQUERYW;
pub const DTN_DROPDOWN: UINT = DTN_FIRST2 - 1;
pub const DTN_CLOSEUP: UINT = DTN_FIRST2;
pub const GDTR_MIN: WPARAM = 0x0001;
pub const GDTR_MAX: WPARAM = 0x0002;
pub const GDT_ERROR: LRESULT = -1;
pub const GDT_VALID: LRESULT = 0;
pub const GDT_NONE: LRESULT = 1;
pub const IPM_CLEARADDRESS: UINT = WM_USER + 100;
pub const IPM_SETADDRESS: UINT = WM_USER + 101;
pub const IPM_GETADDRESS: UINT = WM_USER + 102;
pub const IPM_SETRANGE: UINT = WM_USER + 103;
pub const IPM_SETFOCUS: UINT = WM_USER + 104;
pub const IPM_ISBLANK: UINT = WM_USER + 105;
pub const WC_IPADDRESS: &'static str = "SysIPAddress32";
pub const IPN_FIELDCHANGED: UINT = IPN_FIRST - 0;
STRUCT!{struct NMIPADDRESS {
    hdr: NMHDR,
    iField: c_int,
    iValue: c_int,
}}
pub type LPNMIPADDRESS = *mut NMIPADDRESS;
#[inline]
pub fn MAKEIPRANGE(low: BYTE, high: BYTE) -> LPARAM {
    (((high as WORD) << 8) + low as WORD) as LPARAM
}
#[inline]
pub fn MAKEIPADDRESS(b1: DWORD, b2: DWORD, b3: DWORD, b4: DWORD) -> LPARAM {
    ((b1 << 24) + (b2 << 16) + (b3 << 8) + b4) as LPARAM
}
#[inline]
pub fn FIRST_IPADDRESS(x: LPARAM) -> BYTE {
    ((x >> 24) & 0xff) as BYTE
}
#[inline]
pub fn SECOND_IPADDRESS(x: LPARAM) -> BYTE {
    ((x >> 16) & 0xff) as BYTE
}
#[inline]
pub fn THIRD_IPADDRESS(x: LPARAM) -> BYTE {
    ((x >> 8) & 0xff) as BYTE
}
#[inline]
pub fn FOURTH_IPADDRESS(x: LPARAM) -> BYTE {
    (x & 0xff) as BYTE
}
pub const WC_PAGESCROLLER: &'static str = "SysPager";
pub const PGS_VERT: DWORD = 0x00000000;
pub const PGS_HORZ: DWORD = 0x00000001;
pub const PGS_AUTOSCROLL: DWORD = 0x00000002;
pub const PGS_DRAGNDROP: DWORD = 0x00000004;
pub const PGF_INVISIBLE: DWORD = 0;
pub const PGF_NORMAL: DWORD = 1;
pub const PGF_GRAYED: DWORD = 2;
pub const PGF_DEPRESSED: DWORD = 4;
pub const PGF_HOT: DWORD = 8;
pub const PGB_TOPORLEFT: c_int = 0;
pub const PGB_BOTTOMORRIGHT: c_int = 1;
pub const PGM_SETCHILD: UINT = PGM_FIRST + 1;
pub const PGM_RECALCSIZE: UINT = PGM_FIRST + 2;
pub const PGM_FORWARDMOUSE: UINT = PGM_FIRST + 3;
pub const PGM_SETBKCOLOR: UINT = PGM_FIRST + 4;
pub const PGM_GETBKCOLOR: UINT = PGM_FIRST + 5;
pub const PGM_SETBORDER: UINT = PGM_FIRST + 6;
pub const PGM_GETBORDER: UINT = PGM_FIRST + 7;
pub const PGM_SETPOS: UINT = PGM_FIRST + 8;
pub const PGM_GETPOS: UINT = PGM_FIRST + 9;
pub const PGM_SETBUTTONSIZE: UINT = PGM_FIRST + 10;
pub const PGM_GETBUTTONSIZE: UINT = PGM_FIRST + 11;
pub const PGM_GETBUTTONSTATE: UINT = PGM_FIRST + 12;
pub const PGM_GETDROPTARGET: UINT = CCM_GETDROPTARGET;
pub const PGM_SETSCROLLINFO: UINT = PGM_FIRST + 13;
pub const PGN_SCROLL: UINT = PGN_FIRST - 1;
pub const PGF_SCROLLUP: c_int = 1;
pub const PGF_SCROLLDOWN: c_int = 2;
pub const PGF_SCROLLLEFT: c_int = 4;
pub const PGF_SCROLLRIGHT: c_int = 8;
pub const PGK_SHIFT: BOOL = 1;
pub const PGK_CONTROL: BOOL = 2;
pub const PGK_MENU: BOOL = 4;
STRUCT!{#[repr(packed)] struct NMPGSCROLL {
    hdr: NMHDR,
    fwKeys: WORD,
    rcParent: RECT,
    iDir: c_int,
    iXpos: c_int,
    iYpos: c_int,
    iScroll: c_int,
}}
pub type LPNMPGSCROLL = *mut NMPGSCROLL;
pub const PGN_CALCSIZE: UINT = PGN_FIRST - 2;
pub const PGF_CALCWIDTH: DWORD = 1;
pub const PGF_CALCHEIGHT: DWORD = 2;
STRUCT!{struct NMPGCALCSIZE {
    hdr: NMHDR,
    dwFlag: DWORD,
    iWidth: c_int,
    iHeight: c_int,
}}
pub type LPNMPGCALCSIZE = *mut NMPGCALCSIZE;
pub const PGN_HOTITEMCHANGE: UINT = PGN_FIRST - 3;
STRUCT!{struct NMPGHOTITEM {
    hdr: NMHDR,
    idOld: c_int,
    idNew: c_int,
    dwFlags: DWORD,
}}
pub type LPNMPGHOTITEM = *mut NMPGHOTITEM;
pub const WC_NATIVEFONTCTL: &'static str = "NativeFontCtl";
pub const NFS_EDIT: DWORD = 0x0001;
pub const NFS_STATIC: DWORD = 0x0002;
pub const NFS_LISTCOMBO: DWORD = 0x0004;
pub const NFS_BUTTON: DWORD = 0x0008;
pub const NFS_ALL: DWORD = 0x0010;
pub const NFS_USEFONTASSOC: DWORD = 0x0020;
pub const WC_BUTTONA: &'static str = "Button";
pub const BUTTON_IMAGELIST_ALIGN_LEFT: UINT = 0;
pub const BUTTON_IMAGELIST_ALIGN_RIGHT: UINT = 1;
pub const BUTTON_IMAGELIST_ALIGN_TOP: UINT = 2;
pub const BUTTON_IMAGELIST_ALIGN_BOTTOM: UINT = 3;
pub const BUTTON_IMAGELIST_ALIGN_CENTER: UINT = 4;
STRUCT!{struct BUTTON_IMAGELIST {
    himl: HIMAGELIST,
    margin: RECT,
    uAlign: UINT,
}}
pub type PBUTTON_IMAGELIST = *mut BUTTON_IMAGELIST;
pub const BCM_GETIDEALSIZE: UINT = BCM_FIRST + 0x0001;
pub const BCM_SETIMAGELIST: UINT = BCM_FIRST + 0x0002;
pub const BCM_GETIMAGELIST: UINT = BCM_FIRST + 0x0003;
pub const BCM_SETTEXTMARGIN: UINT = BCM_FIRST + 0x0004;
pub const BCM_GETTEXTMARGIN: UINT = BCM_FIRST + 0x0005;
STRUCT!{struct NMBCHOTITEM {
    hdr: NMHDR,
    dwFlags: DWORD,
}}
pub type LPNMBCHOTITEM = *mut NMBCHOTITEM;
pub const BCN_HOTITEMCHANGE: UINT = BCN_FIRST + 0x0001;
pub const BS_SPLITBUTTON: UINT = 0x0000000C;
pub const BS_DEFSPLITBUTTON: UINT = 0x0000000D;
pub const BS_COMMANDLINK: UINT = 0x0000000E;
pub const BS_DEFCOMMANDLINK: UINT = 0x0000000F;
pub const BCSIF_GLYPH: UINT = 0x0001;
pub const BCSIF_IMAGE: UINT = 0x0002;
pub const BCSIF_STYLE: UINT = 0x0004;
pub const BCSIF_SIZE: UINT = 0x0008;
pub const BCSS_NOSPLIT: UINT = 0x0001;
pub const BCSS_STRETCH: UINT = 0x0002;
pub const BCSS_ALIGNLEFT: UINT = 0x0004;
pub const BCSS_IMAGE: UINT = 0x0008;
STRUCT!{struct BUTTON_SPLITINFO {
    mask: UINT,
    himlGlyph: HIMAGELIST,
    uSplitStyle: UINT,
    size: SIZE,
}}
pub type PBUTTON_SPLITINFO = *mut BUTTON_SPLITINFO;
pub const BCM_SETDROPDOWNSTATE: UINT = BCM_FIRST + 0x0006;
pub const BCM_SETSPLITINFO: UINT = BCM_FIRST + 0x0007;
pub const BCM_GETSPLITINFO: UINT = BCM_FIRST + 0x0008;
pub const BCM_SETNOTE: UINT = BCM_FIRST + 0x0009;
pub const BCM_GETNOTE: UINT = BCM_FIRST + 0x000A;
pub const BCM_GETNOTELENGTH: UINT = BCM_FIRST + 0x000B;
pub const BCM_SETSHIELD: UINT = BCM_FIRST + 0x000C;
pub const BCCL_NOGLYPH: HIMAGELIST = -1isize as HIMAGELIST;
STRUCT!{struct NMBCDROPDOWN {
    hdr: NMHDR,
    rcButton: RECT,
}}
pub type LPNMBCDROPDOWN = *mut NMBCDROPDOWN;
pub const BCN_DROPDOWN: UINT = BCN_FIRST + 0x0002;
pub const WC_STATIC: &'static str = "Static";
pub const WC_EDIT: &'static str = "Edit";
pub const EM_SETCUEBANNER: UINT = ECM_FIRST + 1;
pub const EM_GETCUEBANNER: UINT = ECM_FIRST + 2;
STRUCT!{struct EDITBALLOONTIP {
    cbStruct: DWORD,
    pszTitle: LPCWSTR,
    pszText: LPCWSTR,
    ttiIcon: INT,
}}
pub type PEDITBALLOONTIP = *mut EDITBALLOONTIP;
pub const EM_SHOWBALLOONTIP: UINT = ECM_FIRST + 3;
pub const EM_HIDEBALLOONTIP: UINT = ECM_FIRST + 4;
pub const EM_SETHILITE: UINT = ECM_FIRST + 5;
pub const EM_GETHILITE: UINT = ECM_FIRST + 6;
pub const EM_NOSETFOCUS: UINT = ECM_FIRST + 7;
pub const EM_TAKEFOCUS: UINT = ECM_FIRST + 8;
pub const WC_LISTBOX: &'static str = "ListBox";
pub const WC_COMBOBOX: &'static str = "ComboBox";
pub const CB_SETMINVISIBLE: UINT = CBM_FIRST + 1;
pub const CB_GETMINVISIBLE: UINT = CBM_FIRST + 2;
pub const CB_SETCUEBANNER: UINT = CBM_FIRST + 3;
pub const CB_GETCUEBANNER: UINT = CBM_FIRST + 4;
pub const WC_SCROLLBAR: &'static str = "ScrollBar";
FN!{stdcall PFTASKDIALOGCALLBACK(
    hwnd: HWND,
    msg: UINT,
    wParam: WPARAM,
    lParam: LPARAM,
    lpRefData: LONG_PTR,
) -> HRESULT}
ENUM!{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,
    TDF_NO_SET_FOREGROUND = 0x00010000,
    TDF_SIZE_TO_CONTENT = 0x01000000,
}}
ENUM!{enum TASKDIALOG_MESSAGES {
    TDM_NAVIGATE_PAGE = WM_USER + 101,
    TDM_CLICK_BUTTON = WM_USER + 102,
    TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER + 103,
    TDM_SET_PROGRESS_BAR_STATE = WM_USER + 104,
    TDM_SET_PROGRESS_BAR_RANGE = WM_USER + 105,
    TDM_SET_PROGRESS_BAR_POS = WM_USER + 106,
    TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER + 107,
    TDM_SET_ELEMENT_TEXT = WM_USER + 108,
    TDM_CLICK_RADIO_BUTTON = WM_USER + 110,
    TDM_ENABLE_BUTTON = WM_USER + 111,
    TDM_ENABLE_RADIO_BUTTON = WM_USER + 112,
    TDM_CLICK_VERIFICATION = WM_USER + 113,
    TDM_UPDATE_ELEMENT_TEXT = WM_USER + 114,
    TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER + 115,
    TDM_UPDATE_ICON = WM_USER + 116,
}}
ENUM!{enum TASKDIALOG_NOTIFICATIONS {
    TDN_CREATED = 0,
    TDN_NAVIGATED = 1,
    TDN_BUTTON_CLICKED = 2,
    TDN_HYPERLINK_CLICKED = 3,
    TDN_TIMER = 4,
    TDN_DESTROYED = 5,
    TDN_RADIO_BUTTON_CLICKED = 6,
    TDN_DIALOG_CONSTRUCTED = 7,
    TDN_VERIFICATION_CLICKED = 8,
    TDN_HELP = 9,
    TDN_EXPANDO_BUTTON_CLICKED = 10,
}}
STRUCT!{#[repr(packed)] struct TASKDIALOG_BUTTON {
    nButtonID: c_int,
    pszButtonText: PCWSTR,
}}
ENUM!{enum TASKDIALOG_ELEMENTS {
    TDE_CONTENT,
    TDE_EXPANDED_INFORMATION,
    TDE_FOOTER,
    TDE_MAIN_INSTRUCTION,
}}
ENUM!{enum TASKDIALOG_ICON_ELEMENTS {
    TDIE_ICON_MAIN,
    TDIE_ICON_FOOTER,
}}
pub const TD_WARNING_ICON: LPWSTR = MAKEINTRESOURCE!(-1i16);
pub const TD_ERROR_ICON: LPWSTR = MAKEINTRESOURCE!(-2i16);
pub const TD_INFORMATION_ICON: LPWSTR = MAKEINTRESOURCE!(-3i16);
pub const TD_SHIELD_ICON: LPWSTR = MAKEINTRESOURCE!(-4i16);
ENUM!{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,
}}
UNION!{#[repr(packed)] union TASKDIALOGCONFIG_u1 {
    [usize; 1],
    hMainIcon hMainIcon_mut: HICON,
    pszMainIcon pszMainIcon_mut: PCWSTR,
}}
UNION!{#[repr(packed)] union TASKDIALOGCONFIG_u2 {
    [usize; 1],
    hFooterIcon hFooterIcon_mut: HICON,
    pszFooterIcon pszFooterIcon_mut: PCWSTR,
}}
STRUCT!{#[repr(packed)] struct TASKDIALOGCONFIG {
    cbSize: UINT,
    hwndParent: HWND,
    hInstance: HINSTANCE,
    dwFlags: TASKDIALOG_FLAGS,
    dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS,
    pszWindowTitle: PCWSTR,
    u1: TASKDIALOGCONFIG_u1,
    pszMainInstruction: PCWSTR,
    pszContent: PCWSTR,
    cButtons: UINT,
    pButtons: *const TASKDIALOG_BUTTON,
    nDefaultButton: c_int,
    cRadioButtons: UINT,
    pRadioButtons: *const TASKDIALOG_BUTTON,
    nDefaultRadioButton: c_int,
    pszVerificationText: PCWSTR,
    pszExpandedInformation: PCWSTR,
    pszExpandedControlText: PCWSTR,
    pszCollapsedControlText: PCWSTR,
    u2: TASKDIALOGCONFIG_u2,
    pszFooter: PCWSTR,
    pfCallback: PFTASKDIALOGCALLBACK,
    lpCallbackData: LONG_PTR,
    cxWidth: UINT,
}}
extern "system" {
    pub fn TaskDialogIndirect(
        pTaskConfig: *const TASKDIALOGCONFIG,
        pnButton: *mut c_int,
        pnRadioButton: *mut c_int,
        pfVerificationFlagChecked: *mut BOOL,
    ) -> HRESULT;
    pub fn TaskDialog(
        hwndOwner: HWND,
        hInstance: HINSTANCE,
        pszWindowTitle: PCWSTR,
        pszMainInstruction: PCWSTR,
        pszContent: PCWSTR,
        dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS,
        pszIcon: PCWSTR,
        pnButton: *mut c_int,
    ) -> HRESULT;
    pub fn InitMUILanguage(
        uiLang: LANGID,
    );
    pub fn GetMUILanguage() -> LANGID;
    pub fn _TrackMouseEvent(
        lpEventTrack: LPTRACKMOUSEEVENT,
    ) -> BOOL;
}
pub const WSB_PROP_CYVSCROLL: UINT = 0x00000001;
pub const WSB_PROP_CXHSCROLL: UINT = 0x00000002;
pub const WSB_PROP_CYHSCROLL: UINT = 0x00000004;
pub const WSB_PROP_CXVSCROLL: UINT = 0x00000008;
pub const WSB_PROP_CXHTHUMB: UINT = 0x00000010;
pub const WSB_PROP_CYVTHUMB: UINT = 0x00000020;
pub const WSB_PROP_VBKGCOLOR: UINT = 0x00000040;
pub const WSB_PROP_HBKGCOLOR: UINT = 0x00000080;
pub const WSB_PROP_VSTYLE: UINT = 0x00000100;
pub const WSB_PROP_HSTYLE: UINT = 0x00000200;
pub const WSB_PROP_WINSTYLE: UINT = 0x00000400;
pub const WSB_PROP_PALETTE: UINT = 0x00000800;
pub const WSB_PROP_MASK: UINT = 0x00000FFF;
pub const FSB_FLAT_MODE: INT_PTR = 2;
pub const FSB_ENCARTA_MODE: INT_PTR = 1;
pub const FSB_REGULAR_MODE: INT_PTR = 0;
extern "system" {
    pub fn FlatSB_EnableScrollBar(
        hWnd: HWND,
        wSBflags: c_int,
        wArrows: UINT,
    ) -> BOOL;
    pub fn FlatSB_ShowScrollBar(
        hWnd: HWND,
        code: c_int,
        fShow: BOOL,
    ) -> BOOL;
    pub fn FlatSB_GetScrollRange(
        hWnd: HWND,
        code: c_int,
        lpMinPos: LPINT,
        lpMaxPos: LPINT,
    ) -> BOOL;
    pub fn FlatSB_GetScrollInfo(
        hwnd: HWND,
        code: c_int,
        lpsi: LPSCROLLINFO,
    ) -> BOOL;
    pub fn FlatSB_GetScrollPos(
        hWnd: HWND,
        code: c_int,
    ) -> c_int;
    pub fn FlatSB_GetScrollProp(hWnd: HWND,
        propIndex: c_int,
        pValue: LPINT,
    ) -> BOOL;
    #[cfg(target_pointer_width = "64")]
    pub fn FlatSB_GetScrollPropPtr(
        hWnd: HWND,
        propIndex: c_int,
        pValue: PINT_PTR,
    ) -> BOOL;
    pub fn FlatSB_SetScrollPos(
        hWnd: HWND,
        code: c_int,
        pos: c_int,
        fRedraw: BOOL,
    ) -> c_int;
    pub fn FlatSB_SetScrollInfo(
        hWnd: HWND,
        code: c_int,
        psi: LPSCROLLINFO,
        fRedraw: BOOL,
    ) -> c_int;
    pub fn FlatSB_SetScrollRange(
        hWnd: HWND,
        code: c_int,
        min: c_int,
        max: c_int,
        fRedraw: BOOL,
    ) -> c_int;
    pub fn FlatSB_SetScrollProp(
        hWnd: HWND,
        index: UINT,
        newValue: INT_PTR,
        fRedraw: BOOL,
    ) -> BOOL;
    pub fn InitializeFlatSB(
        hWnd: HWND,
    ) -> BOOL;
    pub fn UninitializeFlatSB(
        hWnd: HWND,
    ) -> HRESULT;
}
FN!{stdcall SUBCLASSPROC(
    hWnd: HWND,
    uMsg: UINT,
    wParam: WPARAM,
    lParam: LPARAM,
    uIdSubclass: UINT_PTR,
    dwRefData: DWORD_PTR,
) -> LRESULT}
extern "system" {
    pub fn SetWindowSubclass(
        hWnd: HWND,
        pfnSubclass: SUBCLASSPROC,
        uIdSubclass: UINT_PTR,
        dwRefData: DWORD_PTR,
    ) -> BOOL;
    pub fn GetWindowSubclass(
        hWnd: HWND,
        pfnSubclass: SUBCLASSPROC,
        uIdSubclass: UINT_PTR,
        pdwRefData: *mut DWORD_PTR,
    ) -> BOOL;
    pub fn RemoveWindowSubclass(
        hWnd: HWND,
        pfnSubclass: SUBCLASSPROC,
        uIdSubclass: UINT_PTR,
    ) -> BOOL;
    pub fn DefSubclassProc(
        hWnd: HWND,
        uMsg: UINT,
        wParam: WPARAM,
        lParam: LPARAM,
    ) -> LRESULT;
}
ENUM!{enum REGCLS {
    LIM_SMALL,
    LIM_LARGE,
}}
extern "system" {
    pub fn LoadIconMetric(
        hinst: HINSTANCE,
        pszName: PCWSTR,
        lims: c_int,
        phico: *mut HICON,
    ) -> HRESULT;
    pub fn LoadIconWithScaleDown(
        hinst: HINSTANCE,
        pszName: PCWSTR,
        cx: c_int,
        cy: c_int,
        phico: *mut HICON,
    ) -> HRESULT;
    pub fn DrawShadowText(
        hdc: HDC,
        pszText: LPCWSTR,
        cch: UINT,
        prc: *mut RECT,
        dwFlags: DWORD,
        crText: COLORREF,
        crShadow: COLORREF,
        ixOffset: c_int,
        iyOffset: c_int,
    ) -> c_int;
}

[Dauer der Verarbeitung: 0.73 Sekunden, vorverarbeitet 2026-04-28]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge