|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
// Description: Win32 consts methods used by UIAutomation proxies
//
//***************************************************************************
// HOW TO USE THIS FILE
//
// If you need access to a Win32 API that is not exposed, simply uncomment
// it in one of the following files:
//
//
// DO NOT adjust the visibility of anything in these files. They are marked
// internal on pupose.
//***************************************************************************
using Accessibility;
using System.Runtime.InteropServices;
using System;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Security;
using System.Windows;
namespace MS.Win32
{
internal static class NativeMethods
{
// Button message
internal const int BM_GETCHECK = 0x00F0;
internal const int BM_GETSTATE = 0x00F2;
internal const int BM_SETSTATE = 0x00F3;
//internal const int BM_CLICK = 0xF0F5;
internal const int BM_CLICK = 0x00F5;
// Combobox
internal const int CB_GETCURSEL = 0x0147;
internal const int CB_GETLBTEXT = 0x0148;
internal const int CB_GETLBTEXTLEN = 0x0149;
internal const int CB_SHOWDROPDOWN = 0x014F;
internal const int CB_GETDROPPEDSTATE = 0x0157;
// Date/Time picker
internal const int DTM_GETSYSTEMTIME = 0x1001;
internal const int DTM_SETSYSTEMTIME = 0x1002;
internal const int DTM_GETMONTHCAL = 0x1008;
// Editbox messages
internal const int EM_GETSEL = 0x00B0;
internal const int EM_SETSEL = 0x00B1;
internal const int EM_GETRECT = 0x00B2;
internal const int EM_LINESCROLL = 0x00B6;
internal const int EM_GETLINECOUNT = 0x00BA;
internal const int EM_LINEINDEX = 0x00BB;
internal const int EM_LINEFROMCHAR = 0x00C9;
internal const int EM_GETFIRSTVISIBLELINE = 0x00CE;
internal const int EM_GETLIMITTEXT = 0x00D5;
internal const int EM_POSFROMCHAR = 0x00D6;
internal const int EM_CHARFROMPOS = 0x00D7;
// SysHeader
internal const int HDM_FIRST = 0x1200;
internal const int HDM_GETITEMCOUNT = HDM_FIRST + 0;
internal const int HDM_HITTEST = HDM_FIRST + 6;
internal const int HDM_GETITEMRECT = HDM_FIRST + 7;
internal const int HDM_GETITEMW = HDM_FIRST + 11;
internal const int HDM_ORDERTOINDEX = HDM_FIRST + 15;
internal const int HDM_GETITEMDROPDOWNRECT = HDM_FIRST + 25;
internal const int HDM_GETFOCUSEDITEM = HDM_FIRST + 27;
// Listbox messages
internal const int LB_ERR = -1;
internal const int LB_SETSEL = 0x0185;
internal const int LB_SETCURSEL = 0x0186;
internal const int LB_GETSEL = 0x0187;
internal const int LB_GETCURSEL = 0x0188;
internal const int LB_GETTEXT = 0x0189;
internal const int LB_GETTEXTLEN = 0x018A;
internal const int LB_GETCOUNT = 0x018B;
internal const int LB_GETSELCOUNT = 0x0190;
internal const int LB_SETTOPINDEX = 0x0197;
internal const int LB_GETITEMRECT = 0x0198;
internal const int LB_GETITEMDATA = 0x0199;
internal const int LB_SETCARETINDEX = 0x019E;
internal const int LB_GETCARETINDEX = 0x019F;
internal const int LB_ITEMFROMPOINT = 0x01A9;
// Listbox notification message
internal const int LBN_SELCHANGE = 1;
// List-view messages
internal const int LVM_FIRST = 0x1000;
internal const int LVM_GETITEMCOUNT = LVM_FIRST + 4;
internal const int LVM_GETNEXTITEM = LVM_FIRST + 12;
internal const int LVM_GETITEMRECT = LVM_FIRST + 14;
internal const int LVM_GETITEMPOSITION = LVM_FIRST + 16;
internal const int LVM_HITTEST = (LVM_FIRST + 18);
internal const int LVM_ENSUREVISIBLE = LVM_FIRST + 19;
internal const int LVM_SCROLL = LVM_FIRST + 20;
internal const int LVM_GETHEADER = LVM_FIRST + 31;
internal const int LVM_GETITEMSTATE = LVM_FIRST + 44;
internal const int LVM_SETITEMSTATE = LVM_FIRST + 43;
internal const int LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55;
internal const int LVM_GETSUBITEMRECT = LVM_FIRST + 56;
internal const int LVM_SUBITEMHITTEST = LVM_FIRST + 57;
internal const int LVM_APPROXIMATEVIEWRECT = LVM_FIRST + 64;
internal const int LVM_GETITEMW = LVM_FIRST + 75;
internal const int LVM_GETTOOLTIPS = LVM_FIRST + 78;
internal const int LVM_GETFOCUSEDGROUP = LVM_FIRST + 93;
internal const int LVM_GETGROUPRECT = LVM_FIRST + 98;
internal const int LVM_EDITLABEL = LVM_FIRST + 118;
internal const int LVM_GETVIEW = LVM_FIRST + 143;
internal const int LVM_SETVIEW = LVM_FIRST + 142;
internal const int LVM_SETGROUPINFO = LVM_FIRST + 147;
internal const int LVM_GETGROUPINFO = LVM_FIRST + 149;
internal const int LVM_GETGROUPINFOBYINDEX = LVM_FIRST + 153;
internal const int LVM_GETGROUPMETRICS = LVM_FIRST + 156;
internal const int LVM_HASGROUP = LVM_FIRST + 161;
internal const int LVM_ISGROUPVIEWENABLED = LVM_FIRST + 175;
internal const int LVM_GETFOCUSEDCOLUMN = LVM_FIRST + 186;
internal const int LVM_GETEMPTYTEXT = LVM_FIRST + 204;
internal const int LVM_GETFOOTERRECT = LVM_FIRST + 205;
internal const int LVM_GETFOOTERINFO = LVM_FIRST + 206;
internal const int LVM_GETFOOTERITEMRECT = LVM_FIRST + 207;
internal const int LVM_GETFOOTERITEM = LVM_FIRST + 208;
internal const int LVM_GETITEMINDEXRECT = LVM_FIRST + 209;
internal const int LVM_SETITEMINDEXSTATE = LVM_FIRST + 210;
internal const int LVM_GETNEXTITEMINDEX = LVM_FIRST + 211;
// calendar control specific constants taken from commctrl.h
// commctrl MONTHCAL CONTROL win messages
internal const int MCM_FIRST = 0x1000;
internal const int MCM_GETCURSEL = (MCM_FIRST + 1);
internal const int MCM_SETCURSEL = (MCM_FIRST + 2);
internal const int MCM_GETMAXSELCOUNT = (MCM_FIRST + 3);
internal const int MCM_GETSELRANGE = (MCM_FIRST + 5);
internal const int MCM_SETSELRANGE = (MCM_FIRST + 6);
internal const int MCM_GETMONTHRANGE = (MCM_FIRST + 7);
internal const int MCM_GETMINREQRECT = (MCM_FIRST + 9);
internal const int MCM_GETTODAY = (MCM_FIRST + 13);
internal const int MCM_HITTEST = (MCM_FIRST + 14);
internal const int MCM_GETFIRSTDAYOFWEEK = (MCM_FIRST + 16);
internal const int MCM_GETRANGE = (MCM_FIRST + 17);
internal const int MCM_SETMONTHDELTA = (MCM_FIRST + 20);
internal const int MCM_GETMAXTODAYWIDTH = (MCM_FIRST + 21);
internal const int MCM_GETCURRENTVIEW = (MCM_FIRST + 22);
internal const int MCM_GETCALENDARCOUNT = (MCM_FIRST + 23);
internal const int MCM_GETCALENDARGRIDINFO = (MCM_FIRST + 24);
// PAGER CONTROL from commctrl.h
internal const int PGM_FIRST = 0x1400;
internal const int PGM_SETCHILD = (PGM_FIRST + 1);
internal const int PGM_RECALCSIZE = (PGM_FIRST + 2);
internal const int PGM_FORWARDMOUSE = (PGM_FIRST + 3);
internal const int PGM_SETBKCOLOR = (PGM_FIRST + 4);
internal const int PGM_GETBKCOLOR = (PGM_FIRST + 5);
internal const int PGM_SETBORDER = (PGM_FIRST + 6);
internal const int PGM_GETBORDER = (PGM_FIRST + 7);
internal const int PGM_SETPOS = (PGM_FIRST + 8);
internal const int PGM_GETPOS = (PGM_FIRST + 9);
internal const int PGM_SETBUTTONSIZE = (PGM_FIRST + 10);
internal const int PGM_GETBUTTONSIZE = (PGM_FIRST + 11);
internal const int PGM_GETBUTTONSTATE = (PGM_FIRST + 12);
// SysTabControl32
internal const int TCM_FIRST = 0x1300;
internal const int TCM_GETITEMCOUNT = TCM_FIRST + 4;
internal const int TCM_GETITEMRECT = TCM_FIRST + 10;
internal const int TCM_GETCURSEL = TCM_FIRST + 11;
internal const int TCM_SETCURSEL = TCM_FIRST + 12;
internal const int TCM_HITTEST = TCM_FIRST + 13;
internal const int TCM_GETTOOLTIPS = TCM_FIRST + 45;
internal const int TCM_GETCURFOCUS = TCM_FIRST + 47;
internal const int TCM_SETCURFOCUS = TCM_FIRST + 48;
internal const int TCM_DESELECTALL = TCM_FIRST + 50;
internal const int TCM_GETITEMW = TCM_FIRST + 60;
// TreeView
internal const int TV_FIRST = 0x1100;
internal const int TVM_EXPAND = (TV_FIRST + 2);
internal const int TVM_GETITEMRECT = (TV_FIRST + 4);
internal const int TVM_GETCOUNT = (TV_FIRST + 5);
internal const int TVM_GETNEXTITEM = (TV_FIRST + 10);
internal const int TVM_SELECTITEM = (TV_FIRST + 11);
internal const int TVM_HITTEST = (TV_FIRST + 17);
internal const int TVM_ENSUREVISIBLE = (TV_FIRST + 20);
internal const int TVM_ENDEDITLABELNOW = (TV_FIRST + 22);
internal const int TVM_GETTOOLTIPS = (TV_FIRST + 25);
internal const int TVM_GETITEMSTATE = (TV_FIRST + 39);
internal const int TVM_MAPACCIDTOHTREEITEM = (TV_FIRST + 42);
internal const int TVM_MAPHTREEITEMTOACCID = (TV_FIRST + 43);
internal const int TVM_GETITEMW = (TV_FIRST + 62);
internal const int TVM_SETITEMW = (TV_FIRST + 63);
internal const int TVM_EDITLABELW = (TV_FIRST + 65);
// Window
internal const int WM_SETTEXT = 0x000C;
internal const int WM_GETTEXT = 0x000D;
internal const int WM_GETTEXTLENGTH = 0x000E;
internal const int WM_QUIT = 0x0012;
internal const int WM_GETFONT = 0x0031;
internal const int WM_GETOBJECT = 0x003D;
internal const int WM_NCHITTEST = 0x0084;
internal const int WM_KEYDOWN = 0x0100;
internal const int WM_KEYUP = 0x0101;
internal const int WM_COMMAND = 0x0111;
internal const int WM_SYSCOMMAND = 0x0112;
internal const int WM_HSCROLL = 0x0114;
internal const int WM_VSCROLL = 0x0115;
internal const int WM_LBUTTONDOWN = 0x0201;
internal const int WM_LBUTTONUP = 0x0202;
internal const int WM_RBUTTONDOWN = 0x0204;
internal const int WM_RBUTTONUP = 0x0205;
internal const int WM_MDITILE = 0x0226;
internal const int WM_MDICASCADE = 0x0227;
internal const int WM_HOTKEY = 0x0312;
internal const int WM_GETTITLEBARINFOEX = 0x033F;
internal const int WM_USER = 0x0400;
// Dialog Codes
internal const int WM_GETDLGCODE = 0x0087;
internal const int DLGC_STATIC = 0x0100;
// Slider
internal const int TBM_GETPOS = WM_USER;
internal const int TBM_GETRANGEMIN = WM_USER + 1;
internal const int TBM_GETRANGEMAX = WM_USER + 2;
internal const int TBM_SETPOS = WM_USER + 5;
internal const int TBM_GETPAGESIZE = WM_USER + 22;
internal const int TBM_GETLINESIZE = WM_USER + 24;
internal const int TBM_GETTHUMBRECT = WM_USER + 25;
internal const int TBM_GETCHANNELRECT = WM_USER + 26;
internal const int TBM_GETTOOLTIPS = WM_USER + 30;
// Progress Bar
internal const int PBM_GETRANGE = (WM_USER + 7);
internal const int PBM_GETPOS = (WM_USER + 8);
// Status Bar
internal const int SB_GETPARTS = (WM_USER + 6);
internal const int SB_GETRECT = (WM_USER + 10);
internal const int SB_GETTEXTLENGTHW = (WM_USER + 12);
internal const int SB_GETTEXTW = (WM_USER + 13);
// Rebar
internal const int RB_HITTEST = WM_USER + 8;
internal const int RB_GETRECT = WM_USER + 9;
internal const int RB_GETBANDCOUNT = WM_USER + 12;
internal const int RB_GETTOOLTIPS = WM_USER + 17;
internal const int RB_GETBANDINFOA = WM_USER + 29;
internal const int RB_PUSHCHEVRON = WM_USER + 43;
// ToolBar
internal const int TB_PRESSBUTTON = WM_USER + 3;
internal const int TB_ISBUTTONENABLED = WM_USER + 9;
internal const int TB_ISBUTTONCHECKED = WM_USER + 10;
internal const int TB_ISBUTTONHIDDEN = WM_USER + 12;
internal const int TB_GETBUTTON = WM_USER + 23;
internal const int TB_BUTTONCOUNT = WM_USER + 24;
internal const int TB_GETITEMRECT = WM_USER + 29;
internal const int TB_GETTOOLTIPS = WM_USER + 35;
internal const int TB_GETIMAGELIST = WM_USER + 49;
internal const int TB_GETHOTITEM = WM_USER + 71;
internal const int TB_SETHOTITEM = WM_USER + 72;
internal const int TB_GETBUTTONTEXT = WM_USER + 75;
internal const int TB_GETEXTENDEDSTYLE = WM_USER + 85;
// Tooltip
internal const int TTM_GETTOOLINFO = (WM_USER + 53);
internal const int TTM_HITTEST = (WM_USER + 55);
internal const int TTM_GETTEXT = (WM_USER + 56);
internal const int TTM_GETCURRENTTOOL = (WM_USER + 59);
// IPAddress
internal const int IPM_SETADDRESS = (WM_USER + 101);
// SpinControl
internal const int UDM_GETRANGE = (WM_USER + 102);
internal const int UDM_SETPOS = (WM_USER + 103);
internal const int UDM_GETPOS = (WM_USER + 104);
internal const int UDM_GETBUDDY = (WM_USER + 106);
// Hyperlink
internal const int LM_FIRST = (WM_USER + 0x300);
internal const int LM_HITTEST = LM_FIRST;
internal const int LM_GETIDEALHEIGHT = (LM_FIRST + 1);
internal const int LM_SETITEM = (LM_FIRST + 2);
internal const int LM_GETITEM = (LM_FIRST + 3);
// Button styles
internal const int BS_PUSHBUTTON = 0x00000000;
internal const int BS_DEFPUSHBUTTON = 0x00000001;
internal const int BS_CHECKBOX = 0x00000002;
internal const int BS_AUTOCHECKBOX = 0x00000003;
internal const int BS_RADIOBUTTON = 0x00000004;
internal const int BS_3STATE = 0x00000005;
internal const int BS_AUTO3STATE = 0x00000006;
internal const int BS_GROUPBOX = 0x00000007;
internal const int BS_USERBUTTON = 0x00000008;
internal const int BS_AUTORADIOBUTTON = 0x00000009;
internal const int BS_PUSHBOX = 0x0000000A;
internal const int BS_OWNERDRAW = 0x0000000B;
internal const int BS_SPLITBUTTON = 0x0000000C;
internal const int BS_TYPEMASK = 0x0000000F;
// Date/Time picker styles
internal const int DTS_UPDOWN = 0x0001;
internal const int DTS_SHOWNONE = 0x0002;
// DTS_TIMEFORMAT is wrongly defined in the common control include file with a value of 9
// TIME_FORMAT + DTS_UPDOWN.
internal const int DTS_TIMEFORMAT = 0x0009;
// Removes the UPDOWN bit. Use this const to check for TIMEFORMAT
internal const int DTS_TIMEFORMATONLY = DTS_TIMEFORMAT & ~DTS_UPDOWN;
// Dialogbox Styles
internal const int DS_CONTROL = 0x00000400;
// Editbox styles
internal const int ES_LEFT = 0x0000;
internal const int ES_CENTER = 0x0001;
internal const int ES_RIGHT = 0x0002;
internal const int ES_MULTILINE = 0x0004;
internal const int ES_UPPERCASE = 0x0008;
internal const int ES_LOWERCASE = 0x0010;
internal const int ES_PASSWORD = 0x0020;
internal const int ES_AUTOHSCROLL = 0x0080;
internal const int ES_READONLY = 0x0800;
internal const int ES_NUMBER = 0x2000;
// Listbox styles
internal const int LBS_NOTIFY = 0x0001;
internal const int LBS_SORT = 0x0002;
internal const int LBS_MULTIPLESEL = 0x0008;
internal const int LBS_OWNERDRAWFIXED = 0x0010;
internal const int LBS_WANTKEYBOARDINPUT = 0x0400;
internal const int LBS_EXTENDEDSEL = 0x0800;
internal const int LBS_COMBOBOX = 0x8000;
// Listview styles
internal const int LVS_REPORT = 0x0001;
internal const int LVS_LIST = 0x0003;
internal const int LVS_TYPEMASK = 0x0003;
internal const int LVS_SINGLESEL = 0x0004;
internal const int LVS_AUTOARRANGE = 0x0100;
internal const int LVS_EDITLABELS = 0x0200;
internal const int LVS_NOSCROLL = 0x2000;
internal const int LVS_NOCOLUMNHEADER = 0x4000;
// Listview extended styles
internal const int LVS_EX_CHECKBOXES = 0x4;
internal const int LVS_EX_FULLROWSELECT = 0x00000020;
internal const int LVS_EX_ONECLICKACTIVATE = 0x00000040;
internal const int LVS_EX_TWOCLICKACTIVATE = 0x00000080;
internal const int LVS_EX_UNDERLINEHOT = 0x00000800;
internal const int LVS_EX_UNDERLINECOLD = 0x00001000;
internal const int LVS_EX_JUSTIFYCOLUMNS = 0x00200000; // Icons are lined up in columns that use up the whole view area
// Listview item states
internal const int LVIS_FOCUSED = 0x0001;
internal const int LVIS_SELECTED = 0x0002;
internal const int LVIS_STATEIMAGEMASK = 0xFFFF;
// commctrl MONTHCAL CONTROL style constants
internal const int MCS_DAYSTATE = 0x0001;
internal const int MCS_MULTISELECT = 0x0002;
internal const int MCS_WEEKNUMBERS = 0x0004;
internal const int MCS_NOTODAYCIRCLE = 0x0008;
internal const int MCS_NOTODAY = 0x0010;
// PAGER CONTROL styles from commctrl.h
internal const int PGS_VERT = 0x00000000;
internal const int PGS_HORZ = 0x00000001;
// Scrollbar style
internal const int SBS_HORZ = 0x0000;
internal const int SBS_VERT = 0x0001;
// Slider style
internal const int TBS_VERT = 0x0002;
internal const int TBS_REVERSED = 0x0200;
// Static styles
internal const int SS_LEFT = 0x00000000;
internal const int SS_CENTER = 0x00000001;
internal const int SS_RIGHT = 0x00000002;
internal const int SS_ICON = 0x00000003;
internal const int SS_BLACKRECT = 0x00000004;
internal const int SS_GRAYRECT = 0x00000005;
internal const int SS_WHITERECT = 0x00000006;
internal const int SS_BLACKFRAME = 0x00000007;
internal const int SS_GRAYFRAME = 0x00000008;
internal const int SS_WHITEFRAME = 0x00000009;
internal const int SS_USERITEM = 0x0000000A;
internal const int SS_SIMPLE = 0x0000000B;
internal const int SS_LEFTNOWORDWRAP = 0x0000000C;
internal const int SS_OWNERDRAW = 0x0000000D;
internal const int SS_BITMAP = 0x0000000E;
internal const int SS_ENHMETAFILE = 0x0000000F;
internal const int SS_ETCHEDHORZ = 0x00000010;
internal const int SS_ETCHEDVERT = 0x00000011;
internal const int SS_ETCHEDFRAME = 0x00000012;
internal const int SS_TYPEMASK = 0x0000001F;
// SysHeader32 styles
//internal const int HDS_HORZ = 0x0000;
internal const int HDS_VERT = 0x0001;
// Toolbar styles
internal const int TBSTYLE_EX_DRAWDDARROWS = 0x00000001;
// Toolbar button styles
internal const byte BTNS_SEP = 0x0001;
internal const byte BTNS_CHECK = 0x0002;
internal const byte BTNS_GROUP = 0x0004;
internal const byte BTNS_DROPDOWN = 0x0008;
// Image list constants
internal const int I_IMAGENONE = -2;
// Window styles
internal const int WS_OVERLAPPED = 0x00000000;
internal const int WS_TABSTOP = 0x00010000;
internal const int WS_MAXIMIZEBOX = 0x00010000;
internal const int WS_GROUP = 0x00020000;
internal const int WS_MINIMIZEBOX = 0x00020000;
internal const int WS_SYSMENU = 0x00080000;
internal const int WS_HSCROLL = 0x00100000;
internal const int WS_VSCROLL = 0x00200000;
internal const int WS_BORDER = 0x00800000;
internal const int WS_CAPTION = 0x00C00000;
internal const int WS_MAXIMIZE = 0x01000000;
internal const int WS_DISABLED = 0x08000000;
internal const int WS_VISIBLE = 0x10000000;
internal const int WS_MINIMIZE = 0x20000000;
internal const int WS_CHILD = 0x40000000;
internal const int WS_POPUP = unchecked((int)0x80000000);
// Window extended sytles
internal const int WS_EX_DLGMODALFRAME = 0x00000001;
internal const int WS_EX_MDICHILD = 0x00000040;
internal const int WS_EX_TOOLWINDOW = 0x00000080;
internal const int WS_EX_CONTEXTHELP = 0x00000400;
internal const int WS_EX_RTLREADING = 0x00002000;
internal const int WS_EX_CONTROLPARENT = 0x00010000;
internal const int WS_EX_LAYOUTRTL = 0x00400000; // Right to left mirroring
// Button states
internal const int BST_UNCHECKED = 0x0000;
internal const int BST_CHECKED = 0x0001;
internal const int BST_INDETERMINATE = 0x0002;
internal const int BST_PUSHED = 0x0004;
internal const int BST_FOCUS = 0x0008;
//GetDeviceCaps()
internal const int LOGPIXELSX = 88;
internal const int LOGPIXELSY = 90;
// GetWindow()
internal const int GW_HWNDFIRST = 0;
internal const int GW_HWNDLAST = 1;
internal const int GW_HWNDNEXT = 2;
internal const int GW_HWNDPREV = 3;
internal const int GW_OWNER = 4;
internal const int GW_CHILD = 5;
// GetWindowLong()
internal const int GWL_EXSTYLE = (-20);
internal const int GWL_STYLE = (-16);
internal const int GWL_ID = (-12);
internal const int GWL_HWNDPARENT = (-8);
internal const int GWL_WNDPROC = (-4);
// GetSysColor()
internal const int COLOR_WINDOW = 5;
internal const int COLOR_WINDOWTEXT = 8;
// Mouse Key
internal const int MK_LBUTTON = 0x0001;
internal const int MK_RBUTTON = 0x0002;
// Scrollbar
internal const int SB_HORZ = 0;
internal const int SB_VERT = 1;
internal const int SB_CTL = 2;
internal const int SB_LINEUP = 0;
internal const int SB_LINELEFT = 0;
internal const int SB_LINEDOWN = 1;
internal const int SB_LINERIGHT = 1;
internal const int SB_PAGEUP = 2;
internal const int SB_PAGELEFT = 2;
internal const int SB_PAGEDOWN = 3;
internal const int SB_PAGERIGHT = 3;
internal const int SB_THUMBPOSITION = 4;
internal const int SB_THUMBTRACK = 5;
internal const int SB_LEFT = 6;
internal const int SB_RIGHT = 7;
internal const int SB_ENDSCROLL = 8;
internal const int SB_TOP = 6;
internal const int SB_BOTTOM = 7;
internal const int SORT_DEFAULT = 0x0;
internal const int SUBLANG_DEFAULT = 0x01;
internal const int SC_TASKLIST = 0xF130;
// ShowWindow()
internal const int SW_HIDE = 0;
internal const int SW_NORMAL = 1;
internal const int SW_SHOWMINIMIZED = 2;
internal const int SW_SHOWMAXIMIZED = 3;
internal const int SW_MAXIMIZE = 3;
internal const int SW_SHOWNOACTIVATE = 4;
internal const int SW_SHOW = 5;
internal const int SW_MINIMIZE = 6;
internal const int SW_SHOWMINNOACTIVE = 7;
internal const int SW_SHOWNA = 8;
internal const int SW_RESTORE = 9;
internal const int SW_MAX = 10;
internal const int SWP_NOSIZE = 0x0001;
internal const int SWP_NOMOVE = 0x0002;
internal const int SWP_NOZORDER = 0x0004;
internal const int SWP_NOACTIVATE = 0x0010;
internal const int SWP_SHOWWINDOW = 0x0040;
internal const int SWP_HIDEWINDOW = 0x0080;
internal const int SWP_DRAWFRAME = 0x0020;
// System Metrics
internal const int SM_CXSCREEN = 0;
internal const int SM_CYSCREEN = 1;
internal const int SM_CXVSCROLL = 2;
internal const int SM_CYHSCROLL = 3;
internal const int SM_CYCAPTION = 4;
internal const int SM_CXBORDER = 5;
internal const int SM_CYBORDER = 6;
internal const int SM_CYVTHUMB = 9;
internal const int SM_CXHTHUMB = 10;
internal const int SM_CXICON = 11;
internal const int SM_CYICON = 12;
internal const int SM_CXCURSOR = 13;
internal const int SM_CYCURSOR = 14;
internal const int SM_CYMENU = 15;
internal const int SM_CYKANJIWINDOW = 18;
internal const int SM_MOUSEPRESENT = 19;
internal const int SM_CYVSCROLL = 20;
internal const int SM_CXHSCROLL = 21;
internal const int SM_DEBUG = 22;
internal const int SM_SWAPBUTTON = 23;
internal const int SM_CXMIN = 28;
internal const int SM_CYMIN = 29;
internal const int SM_CXSIZE = 30;
internal const int SM_CYSIZE = 31;
internal const int SM_CXFRAME = 32;
internal const int SM_CYFRAME = 33;
internal const int SM_CXMINTRACK = 34;
internal const int SM_CYMINTRACK = 35;
internal const int SM_CXDOUBLECLK = 36;
internal const int SM_CYDOUBLECLK = 37;
internal const int SM_CXICONSPACING = 38;
internal const int SM_CYICONSPACING = 39;
internal const int SM_MENUDROPALIGNMENT = 40;
internal const int SM_PENWINDOWS = 41;
internal const int SM_DBCSENABLED = 42;
internal const int SM_CMOUSEBUTTONS = 43;
internal const int SM_CXFIXEDFRAME = 7;
internal const int SM_CYFIXEDFRAME = 8;
internal const int SM_SECURE = 44;
internal const int SM_CXEDGE = 45;
internal const int SM_CYEDGE = 46;
internal const int SM_CXMINSPACING = 47;
internal const int SM_CYMINSPACING = 48;
internal const int SM_CXSMICON = 49;
internal const int SM_CYSMICON = 50;
internal const int SM_CYSMCAPTION = 51;
internal const int SM_CXSMSIZE = 52;
internal const int SM_CYSMSIZE = 53;
internal const int SM_CXMENUSIZE = 54;
internal const int SM_CYMENUSIZE = 55;
internal const int SM_ARRANGE = 56;
internal const int SM_CXMINIMIZED = 57;
internal const int SM_CYMINIMIZED = 58;
internal const int SM_CXMAXTRACK = 59;
internal const int SM_CYMAXTRACK = 60;
internal const int SM_CXMAXIMIZED = 61;
internal const int SM_CYMAXIMIZED = 62;
internal const int SM_NETWORK = 63;
internal const int SM_CLEANBOOT = 67;
internal const int SM_CXDRAG = 68;
internal const int SM_CYDRAG = 69;
internal const int SM_SHOWSOUNDS = 70;
internal const int SM_CXMENUCHECK = 71;
internal const int SM_CYMENUCHECK = 72;
internal const int SM_MIDEASTENABLED = 74;
internal const int SM_MOUSEWHEELPRESENT = 75;
internal const int SM_XVIRTUALSCREEN = 76;
// Stock Logical Objects
internal const int SYSTEM_FONT = 13;
internal const int SM_YVIRTUALSCREEN = 77;
internal const int SM_CXVIRTUALSCREEN = 78;
internal const int SM_CYVIRTUALSCREEN = 79;
// Virtal Keys
internal const int VK_TAB = 0x09;
internal const int VK_RETURN = 0x0D;
internal const int VK_ESCAPE = 0x1B;
internal const int VK_PRIOR = 0x21;
internal const int VK_NEXT = 0x22;
internal const int VK_F4 = 0x73;
internal const int MAX_PATH = 260;
internal const int MDITILE_VERTICAL = 0x0000;
internal const int MDITILE_HORIZONTAL = 0x0001;
internal const int MDITILE_SKIPDISABLED = 0x0002;
internal const int S_OK = 0x00000000;
internal const int S_FALSE = 0x00000001;
// We have this wrapper because casting IntPtr to int may
// generate OverflowException when one of high 32 bits is set.
public static int IntPtrToInt32(IntPtr intPtr)
{
return unchecked((int)intPtr.ToInt64());
}
internal unsafe delegate bool EnumChildrenCallbackVoid(IntPtr hwnd, void* lParam);
[StructLayout (LayoutKind.Sequential)]
internal struct MSG
{
internal IntPtr hwnd;
internal int message;
internal IntPtr wParam;
internal IntPtr lParam;
internal int time;
// pt was a by-value POINT structure
internal int pt_x;
internal int pt_y;
}
[StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct LOGFONT
{
internal int lfHeight;
internal int lfWidth;
internal int lfEscapement;
internal int lfOrientation;
internal int lfWeight;
internal byte lfItalic;
internal byte lfUnderline;
internal byte lfStrikeOut;
internal byte lfCharSet;
internal byte lfOutPrecision;
internal byte lfClipPrecision;
internal byte lfQuality;
internal byte lfPitchAndFamily;
[MarshalAs (UnmanagedType.ByValTStr, SizeConst = 32)]
internal string lfFaceName;
}
// struct for unmanaged SYSTEMTIME struct
[StructLayout (LayoutKind.Sequential)]
internal struct SYSTEMTIME
{
internal ushort wYear;
internal ushort wMonth;
internal ushort wDayOfWeek;
internal ushort wDay;
internal ushort wHour;
internal ushort wMinute;
internal ushort wSecond;
internal ushort wMilliseconds;
}
[StructLayout(LayoutKind.Sequential)]
internal struct NMHDR
{
internal IntPtr hwndFrom;
internal int idFrom;
internal int code;
}
[StructLayout (LayoutKind.Sequential, Pack = 1)]
internal struct TBBUTTON
{
internal int iBitmap;
internal int idCommand;
internal byte fsState;
internal byte fsStyle;
internal byte bReserved0;
internal byte bReserved1;
internal int dwData;
internal IntPtr iString;
}
//
// ListView constants and strucs
//
// ListView item relation flags
// internal const int LVNI_ALL = 0x0000;
internal const int LVNI_FOCUSED = 0x0001;
internal const int LVNI_SELECTED = 0x0002;
internal const int LVNI_BELOW = 0x0200;
internal const int LVNI_TORIGHT = 0x0800;
internal const int LVNI_VISIBLEORDER = 0x0010;
internal const int LVNI_PREVIOUS = 0x0020;
internal const int LVNI_VISIBLEONLY = 0x0040;
internal const int LVNI_SAMEGROUPONLY = 0x0080;
// Listview's VIEW. v5 and up
internal const int LV_VIEW_ICON = 0x0000;
internal const int LV_VIEW_DETAILS = 0x0001;
internal const int LV_VIEW_SMALLICON = 0x0002;
internal const int LV_VIEW_LIST = 0x0003;
internal const int LV_VIEW_TILE = 0x0004;
// ListView rectangle related constants
internal const int LVIR_BOUNDS = 0;
internal const int LVIR_ICON = 1;
internal const int LVIR_LABEL = 2;
internal const int LVIR_SELECTBOUNDS = 3;
// ListView hit test defines
internal const int LVHT_NOWHERE = 0x0001;
internal const int LVHT_ONITEMICON = 0x0002;
internal const int LVHT_ONITEMLABEL = 0x0004;
internal const int LVHT_ONITEMSTATEICON = 0x0008;
internal const int LVHT_ONITEM = (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON);
internal const int LVHT_EX_GROUP_HEADER = 0x10000000;
internal const int LVHT_EX_GROUP_FOOTER = 0x20000000;
internal const int LVHT_EX_GROUP_COLLAPSE = 0x40000000;
internal const int LVHT_EX_GROUP_BACKGROUND = unchecked((int)0x80000000);
internal const int LVHT_EX_GROUP_STATEICON = 0x01000000;
internal const int LVHT_EX_GROUP_SUBSETLINK = 0x02000000;
internal const int LVHT_EX_GROUP = (LVHT_EX_GROUP_BACKGROUND | LVHT_EX_GROUP_COLLAPSE | LVHT_EX_GROUP_FOOTER | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON | LVHT_EX_GROUP_SUBSETLINK);
internal const int LVHT_EX_ONCONTENTS = 0x04000000;
internal const int LVHT_EX_FOOTER = 0x08000000;
// ListView item flag
internal const int LVIF_TEXT = 0x0001;
internal const int LVIF_STATE = 0x0008;
internal const int LVIF_GROUPID = 0x0100;
// This used internally and not passed to the listview the other two
// struct will be passed to the listview depending on what version the list is.
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Auto)]
internal struct LVHITTESTINFO_INTERNAL
{
internal Win32Point pt;
internal uint flags;
internal int iItem;
internal int iSubItem; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
internal int iGroup; // version 6 common control
}
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Auto)]
internal struct LVHITTESTINFO
{
internal Win32Point pt;
internal uint flags;
internal int iItem;
internal int iSubItem; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
internal LVHITTESTINFO(LVHITTESTINFO_INTERNAL htinfo)
{
pt = htinfo.pt;
flags = htinfo.flags;
iItem = htinfo.iItem;
iSubItem = htinfo.iSubItem;
}
}
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Auto)]
internal struct LVHITTESTINFO_V6
{
internal Win32Point pt;
internal uint flags;
internal int iItem;
internal int iSubItem; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
internal int iGroup; // version 6 common control
internal LVHITTESTINFO_V6(LVHITTESTINFO_INTERNAL htinfo)
{
pt = htinfo.pt;
flags = htinfo.flags;
iItem = htinfo.iItem;
iSubItem = htinfo.iSubItem;
iGroup = htinfo.iGroup;
}
}
// Should be class so we can use it with our XSendMessage.XSend
[StructLayout (LayoutKind.Sequential, CharSet = CharSet.Auto)]
internal struct LVITEM
{
internal int mask;
internal int iItem;
internal int iSubItem;
internal int state;
internal int stateMask;
internal IntPtr pszText;
internal int cchTextMax;
internal int iImage;
internal IntPtr lParam;
internal int iIndent;
}
// new LVITEM structure
[StructLayout (LayoutKind.Sequential)]
internal struct LVITEM_V6
{
internal uint mask;
internal int iItem;
internal int iSubItem;
internal int state;
internal int stateMask;
internal IntPtr pszText;
internal int cchTextMax;
internal int iImage;
internal IntPtr lParam;
internal int iIndent;
internal int iGroupID;
internal int cColumns;
internal IntPtr puColumns;
}
// Listview group specific flags
internal const int LVGF_HEADER = 0x00000001;
internal const int LVGF_FOOTER = 0x00000002;
internal const int LVGF_STATE = 0x00000004;
internal const int LVGF_ALIGN = 0x00000008;
internal const int LVGF_GROUPID = 0x00000010;
internal const int LVGF_SUBTITLE = 0x00000100;
internal const int LVGF_TASK = 0x00000200;
internal const int LVGF_DESCRIPTIONTOP = 0x00000400;
internal const int LVGF_DESCRIPTIONBOTTOM = 0x00000800;
internal const int LVGF_TITLEIMAGE = 0x00001000;
internal const int LVGF_EXTENDEDIMAGE = 0x00002000;
internal const int LVGF_ITEMS = 0x00004000;
internal const int LVGF_SUBSET = 0x00008000;
internal const int LVGF_SUBSETITEMS = 0x00010000;
// Listview group styles
internal const int LVGS_NORMAL = 0x00000000;
internal const int LVGS_COLLAPSED = 0x00000001;
internal const int LVGS_HIDDEN = 0x00000002;
internal const int LVGS_NOHEADER = 0x00000004;
internal const int LVGS_COLLAPSIBLE = 0x00000008;
internal const int LVGS_FOCUSED = 0x00000010;
internal const int LVGS_SELECTED = 0x00000020;
internal const int LVGS_SUBSETED = 0x00000040;
internal const int LVGS_SUBSETLINKFOCUSED = 0x00000080;
internal const int LVGGR_GROUP = 0;
internal const int LVGGR_HEADER = 1;
internal const int LVGGR_LABEL = 2;
internal const int LVGGR_SUBSETLINK = 3;
// Should be class so we can use it with our XSendMessage.XSend
[StructLayout (LayoutKind.Sequential)]
internal struct LVGROUP
{
internal int cbSize;
internal int mask;
internal IntPtr pszHeader;
internal int cchHeader;
internal IntPtr pszFooter;
internal int cchFooter;
internal int iGroupID;
internal int stateMask;
internal int state;
internal int align;
internal void Init (int size)
{
cbSize = size;
mask = 0;
pszHeader = pszFooter = IntPtr.Zero;
cchFooter = cchHeader = 0;
iGroupID = -1;
stateMask = state = align = 0;
}
}
// Should be class so we can use it with our XSendMessage.XSend
[StructLayout (LayoutKind.Sequential)]
internal struct LVGROUP_V6
{
internal int cbSize;
internal int mask;
internal IntPtr pszHeader;
internal int cchHeader;
internal IntPtr pszFooter;
internal int cchFooter;
internal int iGroupID;
internal int stateMask;
internal int state;
internal int align;
// new stuff for v6
internal IntPtr pszSubtitle;
internal int cchSubtitle;
internal IntPtr pszTask;
internal int cchTask;
internal IntPtr pszDescriptionTop;
internal int cchDescriptionTop;
internal IntPtr pszDescriptionBottom;
internal int cchDescriptionBottom;
internal int iTitleImage;
internal int iExtendedImage;
internal int iFirstItem; // Read only
internal int cItems; // Read only
internal IntPtr pszSubsetTitle; // NULL if group is not subset
internal int cchSubsetTitle;
internal void Init (int size)
{
cbSize = size;
mask = 0;
pszHeader = pszFooter = IntPtr.Zero;
cchFooter = cchHeader = 0;
iGroupID = -1;
stateMask = state = align = 0;
//new stuff for v6
pszSubtitle = IntPtr.Zero;
cchSubtitle = 0;
pszTask = IntPtr.Zero;
cchTask = 0;
pszDescriptionTop = IntPtr.Zero;
cchDescriptionTop = 0;
pszDescriptionBottom = IntPtr.Zero;
cchDescriptionBottom = 0;
iTitleImage = 0;
iExtendedImage = 0;
iFirstItem = 0; // Read only
cItems = 0; // Read only
pszSubsetTitle = IntPtr.Zero; // NULL if group is not subset
cchSubsetTitle = 0;
}
}
internal const int LVGMF_BORDERSIZE = 0x00000001;
[StructLayout(LayoutKind.Sequential)]
internal struct LVGROUPMETRICS
{
internal int cbSize;
internal int mask;
internal int Left;
internal int Top;
internal int Right;
internal int Bottom;
internal int crLeft;
internal int crTop;
internal int crBottom;
internal int crRightHeader;
internal int crFooter;
internal LVGROUPMETRICS (int size, int flag)
{
cbSize = size;
mask = flag;
Left = Top = Bottom = Right = 0;
crLeft = crTop = crBottom = crLeft = crFooter = crRightHeader = 0;
}
}
// supports a single item in multiple groups.
[StructLayout(LayoutKind.Sequential)]
internal struct LVITEMINDEX
{
internal int iItem; // listview item index
internal int iGroup; // group index (must be -1 if group view is not enabled)
internal LVITEMINDEX (int item, int group)
{
iItem = item;
iGroup = group;
}
}
//
// Getting the version of the common controls
//
internal const int CCM_FIRST = 0x2000;
internal const int CCM_GETVERSION = CCM_FIRST + 0x8;
//
// PAGER CONTROL consts and structs from commctrl.h
//
internal const int PGB_TOPORLEFT = 0;
internal const int PGB_BOTTOMORRIGHT = 1;
// height and width values
internal const int PGF_CALCWIDTH = 1;
internal const int PGF_CALCHEIGHT = 2;
//The scroll can be in one of the following control State
internal const int PGF_INVISIBLE = 0; // Scroll button is not visible
internal const int PGF_NORMAL = 1; // Scroll button is in normal state
internal const int PGF_GRAYED = 2; // Scroll button is in grayed state
internal const int PGF_DEPRESSED = 4; // Scroll button is in depressed state
internal const int PGF_HOT = 8; // Scroll button is in hot state
[StructLayout(LayoutKind.Sequential)]
private struct NMPGSCROLL
{
internal NMHDR hdr;
internal bool fwKeys;
internal Rect rcParent;
internal int iDir;
internal int iXpos;
internal int iYpos;
internal int iScroll;
}
[StructLayout(LayoutKind.Sequential)]
private struct NMPGCALCSIZE
{
internal NMHDR hdr;
internal uint dwFlag;
internal int iWidth;
internal int iHeight;
}
static internal class Util
{
internal static int MAKELONG (int low, int high)
{
return (high << 16) | (low & 0xffff);
}
internal static IntPtr MAKELPARAM (int low, int high)
{
return (IntPtr)((high << 16) | (low & 0xffff));
}
internal static int HIWORD (int n)
{
return (n >> 16) & 0xffff;
}
internal static int HIDWORD(long n)
{
return unchecked((int)((n >> 32) & 0xffffffff));
}
internal static int LOWORD (int n)
{
return n & 0xffff;
}
internal static int LODWORD(long n)
{
return unchecked((int)(n & 0xffffffff));
}
}
//Win32 additions
internal const int EventSystemSound = 0x0001;
internal const int EventSystemAlert = 0x0002;
internal const int EventSystemForeground = 0x0003;
internal const int EventSystemMenuStart = 0x0004;
internal const int EventSystemMenuEnd = 0x0005;
internal const int EventSystemMenuPopupStart = 0x0006;
internal const int EventSystemMenuPopupEnd = 0x0007;
internal const int EventSystemCaptureStart = 0x0008;
internal const int EventSystemCaptureEnd = 0x0009;
internal const int EventSystemMoveSizeStart = 0x000a;
internal const int EventSystemMoveSizeEnd = 0x000b;
internal const int EventSystemContextHelpStart = 0x000c;
internal const int EventSystemContextHelpEnd = 0x000d;
internal const int EventSystemDragDropStart = 0x000e;
internal const int EventSystemDragDropEnd = 0x000f;
internal const int EventSystemDialogStart = 0x0010;
internal const int EventSystemDialogEnd = 0x0011;
internal const int EventSystemScrollingStart = 0x0012;
internal const int EventSystemScrollingEnd = 0x0013;
internal const int EventSystemSwitchEnd = 0x0015;
internal const int EventSystemMinimizeStart = 0x0016;
internal const int EventSystemMinimizeEnd = 0x0017;
internal const int EventSystemPaint = 0x0019;
internal const int EventConsoleCaret = 0x4001;
internal const int EventConsoleUpdateRegion = 0x4002;
internal const int EventConsoleUpdateSimple = 0x4003;
internal const int EventConsoleUpdateScroll = 0x4004;
internal const int EventConsoleLayout = 0x4005;
internal const int EventConsoleStartApplication = 0x4006;
internal const int EventConsoleEndApplication = 0x4007;
internal const int EventObjectCreate = 0x8000;
internal const int EventObjectDestroy = 0x8001;
internal const int EventObjectShow = 0x8002;
internal const int EventObjectHide = 0x8003;
internal const int EventObjectReorder = 0x8004;
internal const int EventObjectFocus = 0x8005;
internal const int EventObjectSelection = 0x8006;
internal const int EventObjectSelectionAdd = 0x8007;
internal const int EventObjectSelectionRemove = 0x8008;
internal const int EventObjectSelectionWithin = 0x8009;
internal const int EventObjectStateChange = 0x800A;
internal const int EventObjectLocationChange = 0x800B;
internal const int EventObjectNameChange = 0x800C;
internal const int EventObjectDescriptionChange = 0x800D;
internal const int EventObjectValueChange = 0x800E;
internal const int EventObjectParentChange = 0x800F;
internal const int EventObjectHelpChange = 0x8010;
internal const int EventObjectDefactionChange = 0x8011;
internal const int EventObjectAcceleratorChange = 0x8012;
internal const int EventObjectInvoke = 0x8013;
internal const int EventObjectTextSelectionChanged = 0x8014;
#region Oleacc
internal const int OBJID_CLIENT = unchecked((int)0xFFFFFFFC);
internal const int OBJID_WINDOW = 0x00000000;
internal const int OBJID_VSCROLL = unchecked((int)0xFFFFFFFB);
internal const int OBJID_HSCROLL = unchecked((int)0xFFFFFFFA);
internal const int OBJID_MENU = unchecked((int)0xFFFFFFFD);
internal const int OBJID_SYSMENU = unchecked((int)0xFFFFFFFF);
internal const int OBJID_NATIVEOM = unchecked((int)0xFFFFFFF0);
internal const int OBJID_CARET = unchecked((int)0xFFFFFFF8);
#endregion
internal const int SELFLAG_TAKEFOCUS = 0x1;
internal const int SELFLAG_TAKESELECTION = 0x2;
internal const int SELFLAG_ADDSELECTION = 0x8;
internal const int SELFLAG_REMOVESELECTION = 0x10;
internal const int E_ACCESSDENIED = unchecked((int)0x80070005);
internal const int E_FAIL = unchecked((int)0x80004005);
internal const int E_UNEXPECTED = unchecked((int)0x8000FFFF);
internal const int E_INVALIDARG = unchecked((int)0x80070057);
internal const int E_MEMBERNOTFOUND = unchecked((int)0x80020003);
internal const int E_NOTIMPL = unchecked((int)0x80004001);
internal const int E_OUTOFMEMORY = unchecked((int)0x8007000E);
// Thrown during stress (Win32 call failing in COM)
internal const int RPC_E_SYS_CALL_FAILED = unchecked((int)0x80010100);
internal const int RPC_E_SERVERFAULT = unchecked((int)0x80010105);
internal const int RPC_E_DISCONNECTED = unchecked((int)0x80010108);
internal const int DISP_E_BADINDEX = unchecked((int)0x8002000B);
// Thrown by Word and possibly others
// The RPC server is unavailable
internal const int RPC_E_UNAVAILABLE = unchecked((int)0x800706BA);
// The interface is unknown
internal const int E_INTERFACEUNKNOWN = unchecked((int)0x800706B5);
// An unknown Error code thrown by Word being closed while a search is running
internal const int E_UNKNOWNWORDERROR = unchecked((int)0x800A01A8);
[StructLayout(LayoutKind.Sequential)]
internal struct Win32Rect
{
internal int left;
internal int top;
internal int right;
internal int bottom;
internal Win32Rect (int left, int top, int right, int bottom)
{
this.left = left;
this.top = top;
this.right = right;
this.bottom = bottom;
}
internal Win32Rect (Rect rc)
{
this.left = (int)rc.Left;
this.top = (int)rc.Top;
this.right = (int)rc.Right;
this.bottom = (int)rc.Bottom;
}
internal bool IsEmpty
{
get
{
return left >= right || top >= bottom;
}
}
static internal Win32Rect Empty
{
get
{
return new Win32Rect (0, 0, 0, 0);
}
}
static public explicit operator Rect (Win32Rect rc)
{
// Convert to Windows.Rect (x, y, witdh, heigh)
// Note we need special case Win32Rect.Empty since Rect with widht/height of 0
// does not consider to be Empty (see Rect in Base\System\Windows\Rect.cs)
// This test is necessary to prevent throwing an exception in new Rect()
if (rc.IsEmpty)
{
return Rect.Empty;
}
return new Rect(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);
}
internal Rect ToRect(bool isRtoL)
{
Normalize(isRtoL);
return (Rect)this;
}
internal void Normalize(bool isRtoL)
{
// Invert the left and right values for right-to-left windows
if (isRtoL)
{
int temp = this.left;
this.left = this.right;
this.right = temp;
}
}
}
[StructLayout (LayoutKind.Sequential)]
internal struct Win32Point
{
internal int x;
internal int y;
internal Win32Point (int x, int y)
{
this.x = x;
this.y = y;
}
static public explicit operator Win32Point(Point pt)
{
return checked (new Win32Point((int)pt.X, (int)pt.Y));
}
}
[StructLayout (LayoutKind.Sequential)]
internal struct SIZE
{
internal int cx;
internal int cy;
internal SIZE (int cx, int cy)
{
this.cx = cx;
this.cy = cy;
}
}
internal const int PROCESSOR_ARCHITECTURE_INTEL = 0;
internal const int PROCESSOR_ARCHITECTURE_MIPS = 1;
internal const int PROCESSOR_ARCHITECTURE_ALPHA = 2;
internal const int PROCESSOR_ARCHITECTURE_PPC = 3;
internal const int PROCESSOR_ARCHITECTURE_SHX = 4;
internal const int PROCESSOR_ARCHITECTURE_ARM = 5;
internal const int PROCESSOR_ARCHITECTURE_IA64 = 6;
internal const int PROCESSOR_ARCHITECTURE_ALPHA64 = 7;
internal const int PROCESSOR_ARCHITECTURE_MSIL = 8;
internal const int PROCESSOR_ARCHITECTURE_AMD64 = 9;
internal const int PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF;
[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct SYSTEM_INFO
{
internal ushort wProcessorArchitecture;
internal ushort wReserved;
internal uint dwPageSize;
internal IntPtr lpMinimumApplicationAddress;
internal IntPtr lpMaximumApplicationAddress;
internal IntPtr dwActiveProcessorMask;
internal uint dwNumberOfProcessors;
internal uint dwProcessorType;
internal uint dwAllocationGranularity;
internal ushort wProcessorLevel;
internal ushort wProcessorRevision;
}
//
// ScrollInfo consts and struct
//
internal const int SIF_RANGE = 0x0001;
internal const int SIF_PAGE = 0x0002;
internal const int SIF_POS = 0x0004;
internal const int SIF_TRACKPOS = 0x0010;
internal const int SIF_ALL = (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS);
[StructLayout(LayoutKind.Sequential)]
internal struct ScrollInfo
{
internal int cbSize;
internal int fMask;
internal int nMin;
internal int nMax;
internal int nPage;
internal int nPos;
internal int nTrackPos;
}
[StructLayout (LayoutKind.Sequential)]
internal struct ScrollBarInfo
{
internal int cbSize;
internal Win32Rect rcScrollBar;
internal int dxyLineButton;
internal int xyThumbTop;
internal int xyThumbBottom;
internal int reserved;
internal int scrollBarInfo;
internal int upArrowInfo;
internal int largeDecrementInfo;
internal int thumbnfo;
internal int largeIncrementInfo;
internal int downArrowInfo;
}
internal const int QS_KEY = 0x0001;
internal const int QS_MOUSEMOVE = 0x0002;
internal const int QS_MOUSEBUTTON = 0x0004;
internal const int QS_POSTMESSAGE = 0x0008;
internal const int QS_TIMER = 0x0010;
internal const int QS_PAINT = 0x0020;
internal const int QS_SENDMESSAGE = 0x0040;
internal const int QS_HOTKEY = 0x0080;
internal const int QS_ALLPOSTMESSAGE = 0x0100;
internal const int QS_MOUSE = QS_MOUSEMOVE | QS_MOUSEBUTTON;
internal const int QS_INPUT = QS_MOUSE | QS_KEY;
internal const int QS_ALLEVENTS = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY;
internal const int QS_ALLINPUT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE;
internal const int INFINITE = unchecked((int)0xFFFFFFFF);
internal const int WAIT_FAILED = unchecked((int)0xFFFFFFFF);
internal const int WAIT_TIMEOUT = 0x00000102;
internal const int SMTO_BLOCK = 0x0001;
//
// INPUT consts and structs
//
internal const int KEYEVENTF_EXTENDEDKEY = 0x0001;
internal const int KEYEVENTF_KEYUP = 0x0002;
internal const int KEYEVENTF_SCANCODE = 0x0008;
internal const int MOUSEEVENTF_VIRTUALDESK = 0x4000;
internal const int INPUT_MOUSE = 0;
internal const int INPUT_KEYBOARD = 1;
[StructLayout(LayoutKind.Sequential)]
internal struct INPUT
{
internal int type;
internal INPUTUNION union;
};
[StructLayout(LayoutKind.Explicit)]
internal struct INPUTUNION
{
[FieldOffset(0)]
internal MOUSEINPUT mouseInput;
[FieldOffset(0)]
internal KEYBDINPUT keyboardInput;
};
[StructLayout(LayoutKind.Sequential)]
internal struct MOUSEINPUT
{
internal int dx;
internal int dy;
internal int mouseData;
internal int dwFlags;
internal int time;
internal IntPtr dwExtraInfo;
};
[StructLayout(LayoutKind.Sequential)]
internal struct KEYBDINPUT
{
internal short wVk;
internal short wScan;
internal int dwFlags;
internal int time;
internal IntPtr dwExtraInfo;
};
internal const int GA_PARENT = 1;
internal const int PM_REMOVE = 0x0001;
internal const int HEAP_SHARED = 0x04000000; // Win95 only
internal const int PROCESS_VM_OPERATION = 0x0008;
internal const int PROCESS_VM_READ = 0x0010;
internal const int PROCESS_VM_WRITE = 0x0020;
internal const int PROCESS_QUERY_INFORMATION = 0x0400;
internal const int STANDARD_RIGHTS_REQUIRED = 0x000F0000;
internal const int SYNCHRONIZE = 0x00100000;
internal const int PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF;
internal const int CHILD_SELF = 0x0;
internal const int ROLE_SYSTEM_MENUBAR = 0x2;
internal const int ROLE_SYSTEM_TOOLBAR = 0x16;
internal const int ROLE_SYSTEM_CLIENT = 0xa;
internal const int ROLE_SYSTEM_MENUPOPUP = 0xb;
internal const int ROLE_SYSTEM_LINK = 0x1e;
internal const int ROLE_SYSTEM_TEXT = 0x0000002A;
internal const int ROLE_SYSTEM_BUTTONDROPDOWN = 0x00000038;
internal const int ROLE_SYSTEM_BUTTONMENU = 0x39;
internal const int ROLE_SYSTEM_MENUITEM = 0x0000000C;
internal const int ROLE_SYSTEM_GROUPING = 0x14;
internal const int ROLE_SYSTEM_BUTTONDROPDOWNGRID = 0x0000003A;
internal const int ROLE_SYSTEM_DROPLIST = 0x0000002F;
internal const int ROLE_SYSTEM_LISTITEM = 0x22;
internal const int ROLE_SYSTEM_PUSHBUTTON = 0x2b;
internal const int ROLE_SYSTEM_CHECKBUTTON = 0x2c;
internal const int ROLE_SYSTEM_RADIOBUTTON = 0x2d;
internal const int ROLE_SYSTEM_COMBOBOX = 0x2e;
internal const int ROLE_SYSTEM_SPINBUTTON = 0x34;
internal const int STATE_SYSTEM_FLOATING = 0x00001000;
internal const int STATE_SYSTEM_FOCUSED = 0x4;
internal const int STATE_SYSTEM_MOVEABLE = 0x00040000;
internal const int STATE_SYSTEM_CHECKED = 0x10;
internal const int STATE_SYSTEM_MIXED = 0x20;
internal const int STATE_SYSTEM_UNAVAILABLE = 0x0001;
internal const int STATE_SYSTEM_INVISIBLE = 0x8000;
internal const int STATE_SYSTEM_OFFSCREEN = 0x010000;
internal const int STATE_SYSTEM_PRESSED = 0x8;
internal const int STATE_SYSTEM_SIZEABLE = 0x00020000;
internal const int STATE_SYSTEM_HOTTRACKED = 0x00000080;
internal const int CBS_SIMPLE = 0x0001;
internal const int CBS_DROPDOWN = 0x0002;
internal const int CBS_DROPDOWNLIST = 0x0003;
internal const int CBS_COMBOTYPEMASK = 0x0003;
internal const int CBN_EDITUPDATE = 6;
internal const int CBN_DROPDOWN = 7;
[StructLayout (LayoutKind.Sequential)]
internal struct COMBOBOXINFO
{
internal int cbSize;
internal Win32Rect rcItem;
internal Win32Rect rcButton;
internal int stateButton;
internal IntPtr hwndCombo;
internal IntPtr hwndItem;
internal IntPtr hwndList;
internal COMBOBOXINFO(int size)
{
cbSize = size;
rcItem = Win32Rect.Empty;
rcButton = Win32Rect.Empty;
stateButton = 0;
hwndCombo = IntPtr.Zero;
hwndItem = IntPtr.Zero;
hwndList = IntPtr.Zero;
}
};
internal static int comboboxInfoSize = Marshal.SizeOf(typeof(NativeMethods.COMBOBOXINFO));
[StructLayout (LayoutKind.Sequential)]
internal struct MENUBARINFO
{
internal int cbSize;
internal Win32Rect rcBar;
internal IntPtr hMenu;
internal IntPtr hwndMenu;
internal int focusFlags;
}
internal const int GUI_CARETBLINKING = 0x00000001;
internal const int GUI_INMOVESIZE = 0x00000002;
internal const int GUI_INMENUMODE = 0x00000004;
internal const int GUI_SYSTEMMENUMODE = 0x00000008;
internal const int GUI_POPUPMENUMODE = 0x00000010;
[StructLayout(LayoutKind.Sequential)]
internal struct GUITHREADINFO
{
internal int cbSize;
internal int dwFlags;
internal IntPtr hwndActive;
internal IntPtr hwndFocus;
internal IntPtr hwndCapture;
internal IntPtr hwndMenuOwner;
internal IntPtr hwndMoveSize;
internal IntPtr hwndCaret;
internal Win32Rect rc;
}
//
// Menu consts and structs
//
internal const int MF_BYCOMMAND = 0x00000000;
internal const int MF_GRAYED = 0x00000001;
internal const int MF_DISABLED = 0x00000002;
internal const int MF_BITMAP = 0x00000004;
internal const int MF_CHECKED = 0x00000008;
internal const int MF_MENUBARBREAK = 0x00000020;
internal const int MF_MENUBREAK = 0x00000040;
internal const int MF_HILITE = 0x00000080;
internal const int MF_OWNERDRAW = 0x00000100;
internal const int MF_BYPOSITION = 0x00000400;
internal const int MF_SEPARATOR = 0x00000800;
internal const int MFT_RADIOCHECK = 0x00000200;
internal const int MIIM_STATE = 0x00000001;
internal const int MIIM_ID = 0x00000002;
internal const int MIIM_SUBMENU = 0x00000004;
internal const int MIIM_CHECKMARKS = 0x00000008;
internal const int MIIM_TYPE = 0x00000010;
internal const int MIIM_DATA = 0x00000020;
internal const int MIIM_FTYPE = 0x00000100;
// obtain the HMENU from the hwnd
internal const int MN_GETHMENU = 0x01E1;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct MENUITEMINFO
{
internal int cbSize;
internal int fMask;
internal int fType;
internal int fState;
internal int wID;
internal IntPtr hSubMenu;
internal IntPtr hbmpChecked;
internal IntPtr hbmpUnchecked;
internal IntPtr dwItemData;
internal IntPtr dwTypeData;
internal int cch;
internal IntPtr hbmpItem;
}
#region REBAR Constants and Structs
[StructLayout (LayoutKind.Sequential)]
internal struct RB_HITTESTINFO
{
internal Win32Point pt;
internal uint uFlags;
internal int iBand;
}
[StructLayout (LayoutKind.Sequential)]
internal struct REBARBANDINFO
{
internal uint cbSize;
internal uint fMask;
internal uint fStyle;
internal int clrFore;
internal int clrBack;
internal IntPtr lpText;
internal uint cch;
internal int iImage;
internal IntPtr hwndChild;
internal uint cxMinChild;
internal uint cyMinChild;
internal uint cx;
internal IntPtr hbmBack;
internal uint wID;
internal uint cyChild;
internal uint cyMaxChild;
internal uint cyIntegral;
internal uint cxIdeal;
internal IntPtr lParam;
internal uint cxHeader;
}
//
// TreeView constants and strucs
//
internal const int TVIF_TEXT = 0x0001;
internal const int TVIF_IMAGE = 0x0002;
internal const int TVIF_STATE = 0x0008;
internal const int TVIF_CHILDREN = 0x0040;
internal const int TVIS_SELECTED = 0x0002;
internal const int TVIS_EXPANDED = 0x0020;
internal const int TVIS_STATEIMAGEMASK = 0xF000;
internal const int TVGN_ROOT = 0x0000;
internal const int TVGN_NEXT = 0x0001;
internal const int TVGN_PREVIOUS = 0x0002;
internal const int TVGN_PARENT = 0x0003;
internal const int TVGN_CHILD = 0x0004;
internal const int TVGN_CARET = 0x0009;
// note: this flag has effect only on WinXP and up
internal const int TVSI_NOSINGLEEXPAND = 0x8000;
internal const int TVE_COLLAPSE = 0x0001;
internal const int TVE_EXPAND = 0x0002;
// style
internal const int TVS_EDITLABELS = 0x0008;
internal const int TVS_CHECKBOXES = 0x0100;
[StructLayout(LayoutKind.Sequential)]
internal struct TVITEM
{
internal uint mask;
internal IntPtr hItem;
internal uint state;
internal uint stateMask;
internal IntPtr pszText;
internal int cchTextMax;
internal int iImage;
internal int iSelectedImage;
internal int cChildren;
internal IntPtr lParam;
internal void Init (IntPtr item)
{
mask = 0;
hItem = item;
state = 0;
stateMask = 0;
pszText = IntPtr.Zero;
cchTextMax = 0;
iImage = 0;
iSelectedImage = 0;
cChildren = 0;
lParam = IntPtr.Zero;
}
}
[StructLayout (LayoutKind.Sequential)]
internal struct TVHITTESTINFO
{
internal Win32Point pt;
internal uint flags;
internal IntPtr hItem;
internal TVHITTESTINFO (int x, int y, uint flg)
{
pt.x = x;
pt.y = y;
flags = flg;
hItem = IntPtr.Zero;
}
}
#endregion
internal const int INDEX_TITLEBAR_SELF = 0;
internal const int INDEX_TITLEBAR_IMEBUTTON = 1;
internal const int INDEX_TITLEBAR_MINBUTTON = 2;
internal const int INDEX_TITLEBAR_MAXBUTTON = 3;
internal const int INDEX_TITLEBAR_HELPBUTTON = 4;
internal const int INDEX_TITLEBAR_CLOSEBUTTON = 5;
internal const int INDEX_TITLEBAR_MIC = 1;
internal const int INDEX_TITLEBAR_MAC = 5;
internal const int CCHILDREN_TITLEBAR = 5;
// Hit Test areas
internal const int HTTRANSPARENT = -1;
internal const int HTCAPTION = 2;
internal const int HTSYSMENU = 3;
internal const int HTGROWBOX = 4;
internal const int HTMENU = 5;
internal const int HTHSCROLL = 6;
internal const int HTVSCROLL = 7;
internal const int HTMINBUTTON = 8;
internal const int HTMAXBUTTON = 9;
internal const int HTLEFT = 10;
internal const int HTRIGHT = 11;
internal const int HTTOP = 12;
internal const int HTTOPLEFT = 13;
internal const int HTTOPRIGHT = 14;
internal const int HTBOTTOM = 15;
internal const int HTBOTTOMLEFT = 16;
internal const int HTBOTTOMRIGHT = 17;
internal const int HTBORDER = 18;
internal const int HTCLOSE = 20;
internal const int HTHELP = 21;
internal const int HTMDIMAXBUTTON = 66;
internal const int HTMDIMINBUTTON = 67;
internal const int HTMDICLOSE = 68;
// System Commands
internal const int SC_MINIMIZE = 0xF020;
internal const int SC_MAXIMIZE = 0xF030;
internal const int SC_CLOSE = 0xF060;
internal const int SC_KEYMENU = 0xF100;
internal const int SC_RESTORE = 0xF120;
internal const int SC_CONTEXTHELP = 0xF180;
// WinEvent specific consts and delegates
internal const int WINEVENT_OUTOFCONTEXT = 0x0000;
internal const int EVENT_MIN = 0x00000001;
internal const int EVENT_MAX = 0x7FFFFFFF;
internal const int EVENT_SYSTEM_SOUND = 0x0001;
internal const int EVENT_SYSTEM_ALERT = 0x0002;
internal const int EVENT_SYSTEM_FOREGROUND = 0x0003;
internal const int EVENT_SYSTEM_MENUSTART = 0x0004;
internal const int EVENT_SYSTEM_MENUEND = 0x0005;
internal const int EVENT_SYSTEM_MENUPOPUPSTART = 0x0006;
internal const int EVENT_SYSTEM_MENUPOPUPEND = 0x0007;
internal const int EVENT_SYSTEM_CAPTURESTART = 0x0008;
internal const int EVENT_SYSTEM_CAPTUREEND = 0x0009;
internal const int EVENT_SYSTEM_MOVESIZESTART = 0x000A;
internal const int EVENT_SYSTEM_MOVESIZEEND = 0x000B;
internal const int EVENT_SYSTEM_CONTEXTHELPSTART = 0x000C;
internal const int EVENT_SYSTEM_CONTEXTHELPEND = 0x000D;
internal const int EVENT_SYSTEM_DRAGDROPSTART = 0x000E;
internal const int EVENT_SYSTEM_DRAGDROPEND = 0x000F;
internal const int EVENT_SYSTEM_DIALOGSTART = 0x0010;
internal const int EVENT_SYSTEM_DIALOGEND = 0x0011;
internal const int EVENT_SYSTEM_SCROLLINGSTART = 0x0012;
internal const int EVENT_SYSTEM_SCROLLINGEND = 0x0013;
internal const int EVENT_SYSTEM_SWITCHEND = 0x0015;
internal const int EVENT_SYSTEM_MINIMIZESTART = 0x0016;
internal const int EVENT_SYSTEM_MINIMIZEEND = 0x0017;
internal const int EVENT_SYSTEM_PAINT = 0x0019;
internal const int EVENT_CONSOLE_CARET = 0x4001;
internal const int EVENT_CONSOLE_UPDATE_REGION = 0x4002;
internal const int EVENT_CONSOLE_UPDATE_SIMPLE = 0x4003;
internal const int EVENT_CONSOLE_UPDATE_SCROLL = 0x4004;
internal const int EVENT_CONSOLE_LAYOUT = 0x4005;
internal const int EVENT_CONSOLE_START_APPLICATION = 0x4006;
internal const int EVENT_CONSOLE_END_APPLICATION = 0x4007;
internal const int EVENT_OBJECT_CREATE = 0x8000;
internal const int EVENT_OBJECT_DESTROY = 0x8001;
internal const int EVENT_OBJECT_SHOW = 0x8002;
internal const int EVENT_OBJECT_HIDE = 0x8003;
internal const int EVENT_OBJECT_REORDER = 0x8004;
internal const int EVENT_OBJECT_FOCUS = 0x8005;
internal const int EVENT_OBJECT_SELECTION = 0x8006;
internal const int EVENT_OBJECT_SELECTIONADD = 0x8007;
internal const int EVENT_OBJECT_SELECTIONREMOVE = 0x8008;
internal const int EVENT_OBJECT_SELECTIONWITHIN = 0x8009;
internal const int EVENT_OBJECT_STATECHANGE = 0x800A;
internal const int EVENT_OBJECT_LOCATIONCHANGE = 0x800B;
internal const int EVENT_OBJECT_NAMECHANGE = 0x800C;
internal const int EVENT_OBJECT_DESCRIPTIONCHANGE = 0x800D;
internal const int EVENT_OBJECT_VALUECHANGE = 0x800E;
internal const int EVENT_OBJECT_PARENTCHANGE = 0x800F;
internal const int EVENT_OBJECT_HELPCHANGE = 0x8010;
internal const int EVENT_OBJECT_DEFACTIONCHANGE = 0x8011;
internal const int EVENT_OBJECT_ACCELERATORCHANGE = 0x8012;
// WinEvent fired when new Avalon UI is created
public const int EventObjectUIFragmentCreate = 0x6FFFFFFF;
// the delegate passed to USER for receiving a WinEvent
public delegate void WinEventProcDef(int winEventHook, int eventId, IntPtr hwnd, int idObject, int idChild, int eventThread, uint eventTime);
//
// SysTabControl32 constants and strucs
//
internal const int TCIF_TEXT = 0x0001;
internal const int TCIF_STATE = 0x0010;
internal const int TCIS_BUTTONPRESSED = 0x0001;
internal const int TCS_RIGHT = 0x0002;
internal const int TCS_MULTISELECT = 0x0004;
internal const int TCS_VERTICAL = 0x0080;
internal const int TCS_BUTTONS = 0x0100;
internal const int TCS_MULTILINE = 0x0200;
internal const int TCS_FOCUSNEVER = 0x8000;
[StructLayout(LayoutKind.Sequential)]
internal struct TCITEM
{
internal int mask;
internal int dwState;
internal int dwStateMask;
internal IntPtr pszText;
internal int cchTextMax;
internal int iImage;
internal IntPtr lParam;
internal void Init()
{
mask = 0;
dwState = 0;
dwStateMask = 0;
pszText = IntPtr.Zero;
cchTextMax = 0;
iImage = 0;
lParam = IntPtr.Zero;
}
internal void Init(int m)
{
mask = m;
dwState = 0;
dwStateMask = 0;
pszText = IntPtr.Zero;
cchTextMax = 0;
iImage = 0;
lParam = IntPtr.Zero;
}
}
//
// SysHeader constants and strucs
//
internal const uint HDI_TEXT = 0x0002;
internal const uint HDI_FORMAT = 0x0004;
internal const uint HDI_ORDER = 0x0080;
internal const int HDS_BUTTONS = 0x0002;
internal const int HDS_HIDDEN = 0x0008;
internal const int HDS_FILTERBAR = 0x0100;
internal const int HDF_SORTUP = 0x0400;
internal const int HDF_SORTDOWN = 0x0200;
internal const int HDF_SPLITBUTTON = 0x1000000;
internal const int HHT_ONHEADER = 0x0002;
[StructLayout(LayoutKind.Sequential)]
internal struct HDITEM
{
internal uint mask;
internal int cxy;
internal IntPtr pszText;
internal IntPtr hbm;
internal int cchTextMax;
internal int fmt;
internal IntPtr lParam;
internal int iImage;
internal int iOrder;
internal uint type;
internal IntPtr pvFilter;
internal void Init()
{
mask = 0;
cxy = 0;
pszText = IntPtr.Zero;
hbm = IntPtr.Zero;
cchTextMax = 0;
fmt = 0;
lParam = IntPtr.Zero;
iImage = 0;
iOrder = 0;
type = 0;
pvFilter = IntPtr.Zero;
}
// return an empty HDITEM
internal static readonly HDITEM Empty = new HDITEM();
}
[StructLayout(LayoutKind.Sequential)]
internal struct HDHITTESTINFO
{
internal NativeMethods.Win32Point pt;
internal uint flags;
internal int item;
}
//
// Win32 Hyperlink constants and strucs
//
internal const int LIF_ITEMINDEX = 0x00000001;
internal const int LIF_STATE = 0x00000002;
internal const int LIF_ITEMID = 0x00000004;
internal const int LIF_URL = 0x00000008;
internal const int LIS_FOCUSED = 0x00000001;
internal const int LIS_ENABLED = 0x00000002;
internal const int LIS_VISITED = 0x00000004;
internal const int L_MAX_URL_LENGTH = 2048 + 32 + 3;
//
// Win32API SpinControl constants
//
internal const int UDS_HORZ = 0x0040;
//
// Tooltip strucs
//
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct TOOLINFO
{
internal int cbSize;
internal int uFlags;
internal IntPtr hwnd;
internal int uId;
internal Win32Rect rect;
internal IntPtr hinst;
internal IntPtr pszText;
internal IntPtr lParam;
internal void Init(int size)
{
cbSize = size;
uFlags = 0;
hwnd = IntPtr.Zero;
uId = 0;
rect = Win32Rect.Empty;
hinst = IntPtr.Zero;
pszText = IntPtr.Zero;
lParam = IntPtr.Zero;
}
}
internal const int TTF_IDISHWND = 0x0001;
}
}
|