{ $Id$ } { /*************************************************************************** LCLLinux.pp ------------------- Component Library Windows Controls Initial Revision : Fri Jul 23 20:00:00 PDT 1999 ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ } { @author(Curtis White ) @created(17-Oct-1999) @lastmod(17-Oct-1999) This unit is being created specifically for compatibility with Delphi. It should only be used for constants and type definitions that are included in the Delphi Windows unit. This is only done for compatibiltiy. } unit LCLLinux; {$mode objfpc} interface uses VCLGlobals,Classes; {$ifdef Trace} {$ASSERTIONS ON} {$endif} type //TODO: check this against vclglobals PLongInt = ^LongInt; PInteger = ^Integer; PSmallInt = ^SmallInt; PDouble = ^Double; PRect = ^TRect; PANSICHAR = ^AnsiChar; PWideChar = ^WideChar; UINT = LongWord; { Provided for compatibility with Windows registry ONLY } HKEY = Integer; PHKEY = ^HKEY; HDC = type LongWord; HHOOK = type LongWord; HFONT = type LongWord; HGDIOBJ = type LongWord; HPEN = type LongWord; HRGN = type Longword; HINST = type LongWord; HICON = type LongWord; HCURSOR = HICON; Bool = LongBool; pByte = ^byte; HGLOBAL = THAndle; var hInstance :HINST; type TKeyBoardState = array[0..255] of byte; PABC = ^TABC; _ABC = packed record abcA: Integer; abcB: UINT; abcC: Integer; end; TABC = _ABC; const ETO_OPAQUE = 2; ETO_CLIPPED = 4; CS_VREDRAW = dword(1); CS_HREDRAW = dword(2); //============================================== // Draw frame constants //============================================== //------------ // Draw frame control flags //------------ dfc_Caption = $01; dfc_Menu = $02; dfc_Scroll = $03; dfc_Button = $04; //------------ // Draw frame control Styles //------------ DFCS_BUTTONCHECK = 0; DFCS_BUTTONRADIOIMAGE = 1; DFCS_BUTTONRADIOMASK = 2; DFCS_BUTTONRADIO = 4; DFCS_BUTTON3STATE = 8; DFCS_BUTTONPUSH = 16; DFCS_CAPTIONCLOSE = 0; DFCS_CAPTIONMIN = 1; DFCS_CAPTIONMAX = 2; DFCS_CAPTIONRESTORE = 3; DFCS_CAPTIONHELP = 4; DFCS_MENUARROW = 0; DFCS_MENUCHECK = 1; DFCS_MENUBULLET = 2; DFCS_SCROLLDOWN = 1; DFCS_SCROLLLEFT = 2; DFCS_SCROLLRIGHT = 3; DFCS_SCROLLCOMBOBOX = 5; DFCS_SCROLLSIZEGRIP = 8; DFCS_SCROLLUP = 0; DFCS_ADJUSTRECT = 8192; DFCS_CHECKED = 1024; DFCS_FLAT = 16384; DFCS_INACTIVE = 256; DFCS_MONO = 32768; DFCS_PUSHED = 512; //============================================== // Registry constants //============================================== { Provided for compatibility with Windows registry ONLY } HKEY_CLASSES_ROOT = $80000000; HKEY_CURRENT_USER = $80000001; HKEY_LOCAL_MACHINE = $80000002; HKEY_USERS = $80000003; HKEY_PERFORMANCE_DATA = $80000004; HKEY_CURRENT_CONFIG = $80000005; HKEY_DYN_DATA = $80000006; HTERROR = -2; HTTRANSPARENT = -1; HTNOWHERE = 0; HTCLIENT = 1; HTCAPTION = 2; MSGF_DIALOGBOX = 0; MSGF_MESSAGEBOX = 1; MSGF_MENU = 2; MSGF_MOVE = 3; MSGF_SIZE = 4; MSGF_SCROLLBAR = 5; MSGF_NEXTWINDOW = 6; //PEEKMESSAGE stuff PM_Noremove = 0; PM_Remove = 1; //============================================== // Font constants //============================================== //------------ // KeyFlags (High word part !!!) //------------ KF_EXTENDED = $100; KF_DLGMODE = $800; KF_MENUMODE = $1000; KF_ALTDOWN = $2000; KF_REPEAT = $4000; KF_UP = $8000; //------------- // Virtual keys //------------- VK_UNKNOWN = 0; // defined by LCL VK_LBUTTON = 1; VK_RBUTTON = 2; VK_CANCEL = 3; VK_MBUTTON = 4; VK_BACK = 8; VK_TAB = 9; VK_CLEAR = 12; VK_RETURN = 13; VK_SHIFT = 16; VK_CONTROL = 17; VK_MENU = 18; VK_PAUSE = 19; VK_CAPITAL = 20; VK_KANA = 21; VK_HANGUL = 21; VK_JUNJA = 23; VK_FINAL = 24; VK_HANJA = 25; VK_KANJI = 25; VK_ESCAPE = 27; VK_CONVERT = 28; VK_NONCONVERT = 29; VK_ACCEPT = 30; VK_MODECHANGE = 31; VK_SPACE = 32; VK_PRIOR = 33; VK_NEXT = 34; VK_END = 35; VK_HOME = 36; VK_LEFT = 37; VK_UP = 38; VK_RIGHT = 39; VK_DOWN = 40; VK_SELECT = 41; VK_PRINT = 42; VK_EXECUTE = 43; VK_SNAPSHOT = 44; VK_INSERT = 45; VK_DELETE = 46; VK_HELP = 47; VK_0 = $30; VK_1 = $31; VK_2 = $32; VK_3 = $33; VK_4 = $34; VK_5 = $35; VK_6 = $36; VK_7 = $37; VK_8 = $38; VK_9 = $39; //3A-40 Undefined VK_A = $41; VK_B = $42; VK_C = $43; VK_D = $44; VK_E = $45; VK_F = $46; VK_G = $47; VK_H = $48; VK_I = $49; VK_J = $4A; VK_K = $4B; VK_L = $4C; VK_M = $4D; VK_N = $4E; VK_O = $4F; VK_P = $50; VK_Q = $51; VK_R = $52; VK_S = $53; VK_T = $54; VK_U = $55; VK_V = $56; VK_W = $57; VK_X = $58; VK_Y = $59; VK_Z = $5A; VK_LWIN = 91; VK_RWIN = 92; VK_APPS = 93; VK_NUMPAD0 = 96; VK_NUMPAD1 = 97; VK_NUMPAD2 = 98; VK_NUMPAD3 = 99; VK_NUMPAD4 = 100; VK_NUMPAD5 = 101; VK_NUMPAD6 = 102; VK_NUMPAD7 = 103; VK_NUMPAD8 = 104; VK_NUMPAD9 = 105; VK_MULTIPLY = 106; VK_ADD = 107; VK_SEPARATOR = 108; VK_SUBTRACT = 109; VK_DECIMAL = 110; VK_DIVIDE = 111; VK_F1 = 112; VK_F2 = 113; VK_F3 = 114; VK_F4 = 115; VK_F5 = 116; VK_F6 = 117; VK_F7 = 118; VK_F8 = 119; VK_F9 = 120; VK_F10 = 121; VK_F11 = 122; VK_F12 = 123; VK_F13 = 124; VK_F14 = 125; VK_F15 = 126; VK_F16 = 127; VK_F17 = 128; VK_F18 = 129; VK_F19 = 130; VK_F20 = 131; VK_F21 = 132; VK_F22 = 133; VK_F23 = 134; VK_F24 = 135; VK_NUMLOCK = 144; VK_SCROLL = 145; // VK_L & VK_R - left and right Alt, Ctrl and Shift virtual keys. // Used only as parameters to GetAsyncKeyState() and GetKeyState(). // No other API or message will distinguish left and right keys in this way VK_LSHIFT = 160; VK_RSHIFT = 161; VK_LCONTROL = 162; VK_RCONTROL = 163; VK_LMENU = 164; VK_RMENU = 165; VK_PROCESSKEY = 229; VK_ATTN = 246; VK_CRSEL = 247; VK_EXSEL = 248; VK_EREOF = 249; VK_PLAY = 250; VK_ZOOM = 251; VK_NONAME = 252; VK_PA1 = 253; VK_OEM_CLEAR = 254; const { 3D border styles } BDR_RAISEDOUTER = 1; BDR_SUNKENOUTER = 2; BDR_RAISEDINNER = 4; BDR_SUNKENINNER = 8; BDR_OUTER = 3; BDR_INNER = 12; BDR_RAISED = 5; BDR_SUNKEN = 10; EDGE_BUMP = (BDR_RAISEDOUTER or BDR_SUNKENINNER); EDGE_ETCHED = (BDR_SUNKENOUTER or BDR_RAISEDINNER); EDGE_RAISED = (BDR_RAISEDOUTER or BDR_RAISEDINNER); EDGE_SUNKEN = (BDR_SUNKENOUTER or BDR_SUNKENINNER); { Border flags } BF_LEFT = 1; BF_TOP = 2; BF_RIGHT = 4; BF_BOTTOM = 8; BF_TOPLEFT = (BF_TOP or BF_LEFT); BF_TOPRIGHT = (BF_TOP or BF_RIGHT); BF_BOTTOMLEFT = (BF_BOTTOM or BF_LEFT); BF_BOTTOMRIGHT = (BF_BOTTOM or BF_RIGHT); BF_RECT = (BF_LEFT or BF_TOP or BF_RIGHT or BF_BOTTOM); BF_DIAGONAL = $10; BF_DIAGONAL_ENDTOPRIGHT = (BF_DIAGONAL or BF_TOP or BF_RIGHT); BF_DIAGONAL_ENDTOPLEFT = (BF_DIAGONAL or BF_TOP or BF_LEFT); BF_DIAGONAL_ENDBOTTOMLEFT = (BF_DIAGONAL or BF_BOTTOM or BF_LEFT); BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL or BF_BOTTOM or BF_RIGHT); BF_MIDDLE = $800; { Fill in the middle } BF_SOFT = $1000; { For softer buttons. Not sure what the use is for this } BF_ADJUST = $2000; { Calculate the space left over } BF_FLAT = $4000; { For flat rather than 3D borders } BF_MONO = $8000; { For monochrome borders } {Dialog codes} DLGC_WANTARROWS = 1; DLGC_WANTTAB = 2; DLGC_WANTALLKEYS = 4; DLGC_WANTCHARS = $80; {owner drawn constants} ODT_MENU = 1; ODT_LISTBOX = 2; ODT_COMBOBOX = 3; ODT_BUTTON = 4; ODT_STATIC = 5; GWL_WNDPROC = -4; GWL_HINSTANCE = -6; GWL_HWNDPARENT = -8; GWL_STYLE = -16; GWL_EXSTYLE = -20; GWL_USERDATA = -21; GWL_ID = -12; MB_OK = $00000000; MB_OKCANCEL = $00000001; MB_ABORTRETRYIGNORE = $00000002; MB_YESNOCANCEL = $00000003; MB_YESNO = $00000004; MB_RETRYCANCEL = $00000005; IDOK = 1; ID_OK = IDOK; IDCANCEL = 2; ID_CANCEL = IDCANCEL; IDABORT = 3; ID_ABORT = IDABORT; IDRETRY = 4; ID_RETRY = IDRETRY; IDIGNORE = 5; ID_IGNORE = IDIGNORE; IDYES = 6; ID_YES = IDYES; IDNO = 7; ID_NO = IDNO; IDCLOSE = 8; ID_CLOSE = IDCLOSE; IDHELP = 9; ID_HELP = IDHELP; MB_DEFBUTTON1 = $00000000; MB_DEFBUTTON2 = $00000100; MB_DEFBUTTON3 = $00000200; MB_DEFBUTTON4 = $00000300; {Region Flags} Error = 0; NullRegion = 1; SimpleRegion = 2; ComplexRegion = 3; Region_Error = Error; {Scroll bar stuff} SB_Horz = 0; SB_Vert = 1; SB_CTL = 2; SB_BOTH = 3; {Scroll Bar Commands} SB_LINEUP = 0; SB_LINELEFT = 0; SB_LINEDOWN = 1; SB_LINERIGHT = 1; SB_PAGEUP = 2; SB_PAGELEFT = 2; SB_PAGEDOWN = 3; SB_PAGERIGHT = 3; SB_THUMBPOSITION = 4; SB_THUMBTRACK = 5; SB_TOP = 6; SB_LEFT = 6; SB_BOTTOM = 7; SB_RIGHT = 7; SB_ENDSCROLL = 8; SIF_Range = 1; SIF_PAGE = 2; SIF_POS = 4; SIF_DISABLENOSCROLL = 8; SIF_TRACKPOS = 100; SIF_ALL = (SIF_RANGE or SIF_PAGE or SIF_POS or SIF_TRACKPOS); SWP_NOSIZE = 1; SWP_NOMOVE = 2; SWP_NOZORDER = 3; SWP_NOREDRAW = 4; SWP_NOACTIVATE = 5; { WMSIZE MEssage Constants} Size_Restored = 0; Size_Minimized = 1; Size_Maximized = 2; Size_MaxShow = 3; Size_MaxHide = 4; SIZENORMAL = Size_Restored; SIZEICONIC = Size_Minimized; SIZEFULLSCREEN = Size_Maximized; SIZEZOOMSHOW = Size_MaxShow; SIZEZOOMHIDE = Size_MaxHide; { Window Styles } WS_OVERLAPPED = 0; WS_POPUP = DWORD($80000000); WS_CHILD = $40000000; WS_MINIMIZE = $20000000; WS_VISIBLE = $10000000; WS_DISABLED = $8000000; WS_CLIPSIBLINGS = $4000000; WS_CLIPCHILDREN = $2000000; WS_MAXIMIZE = $1000000; WS_CAPTION = $C00000; { WS_BORDER or WS_DLGFRAME } WS_BORDER = $800000; WS_DLGFRAME = $400000; WS_VSCROLL = $200000; WS_HSCROLL = $100000; WS_SYSMENU = $80000; WS_THICKFRAME = $40000; WS_GROUP = $20000; WS_TABSTOP = $10000; WS_MINIMIZEBOX = $20000; WS_MAXIMIZEBOX = $10000; WS_TILED = WS_OVERLAPPED; WS_ICONIC = WS_MINIMIZE; WS_SIZEBOX = WS_THICKFRAME; { Common Window Styles } WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_THICKFRAME or WS_MINIMIZEBOX or WS_MAXIMIZEBOX); WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW; WS_POPUPWINDOW = (WS_POPUP or WS_BORDER or WS_SYSMENU); WS_CHILDWINDOW = (WS_CHILD); { Extended Window Styles } WS_EX_DLGMODALFRAME = 1; WS_EX_NOPARENTNOTIFY = 4; WS_EX_TOPMOST = 8; WS_EX_ACCEPTFILES = $10; WS_EX_TRANSPARENT = $20; WS_EX_MDICHILD = $40; WS_EX_TOOLWINDOW = $80; WS_EX_WINDOWEDGE = $100; WS_EX_CLIENTEDGE = $200; WS_EX_CONTEXTHELP = $400; WS_EX_RIGHT = $1000; WS_EX_LEFT = 0; WS_EX_RTLREADING = $2000; WS_EX_LTRREADING = 0; WS_EX_LEFTSCROLLBAR = $4000; WS_EX_RIGHTSCROLLBAR = 0; WS_EX_CONTROLPARENT = $10000; WS_EX_STATICEDGE = $20000; WS_EX_APPWINDOW = $40000; WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE or WS_EX_CLIENTEDGE); WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE or WS_EX_TOOLWINDOW or WS_EX_TOPMOST); type PNMHdr = ^TNMHdr; tagNMHDR = packed record hwndFrom: HWND; idFrom: UINT; code: Integer; end; TNMHdr = tagNMHDR; NMHDR = tagNMHDR; PDrawItemStruct = ^TDrawItemStruct; tagDrawItemStruct = packed record ctlType: UINT; ctlID : UINT; itemID : UINT; itemAction : UINT; itemState : UINT; hwndItem: HWND; _hDc: HDC; rcItem: TRect; itemData : DWord; end; TDrawItemStruct = tagDrawItemStruct; DrawItemStruct = tagDrawItemStruct; {painting stuff} PPaintStruct = ^TPaintStruct; tagPAINTSTRUCT = packed record hdc: HDC; fErase: Boolean; rcPaint: TRect; fRestore: Boolean; fIncUpdate: Boolean; rgbReserved: array[0..31] of Byte; end; TPaintStruct = tagPAINTSTRUCT; PAINTSTRUCT = tagPAINTSTRUCT; PWindowPos = ^TWIndowPos; tagWindowPos = packed record _hwnd : HWND; hwndInsertAfter: HWND; x : Integer; y : Integer; cx : Integer; cy : Integer; flags: UINT; end; TWindowPos = tagWindowPos; WindowPos = tagWindowPos; PPoint = ^TPoint; tagScrollInfo = packed record cbSize : UINT; fMask : UINT; nMin: Integer; nMax: Integer; nPage: UInt; npos: Integer; nTrackPos: Integer; end; PScrollInfo = ^TScrollInfo; TScrollInfo = tagScrollinfo; PSize = ^TSize; tagSIZE = record cx: Longint; cy: Longint; end; TSize = tagSIZE; SIZE = tagSIZE; { Bitmap Header Definition } PBitmap = ^TBitmap; tagBITMAP = packed record bmType: Longint; bmWidth: Longint; bmHeight: Longint; bmWidthBytes: Longint; bmPlanes: Word; bmBitsPixel: Word; bmBits: Pointer; end; TBitmap = tagBITMAP; BITMAP = tagBITMAP; { ********************************** } { B I T M A P S T U F F } PBitmapFileHeader = ^TBitmapFileHeader; tagBITMAPFILEHEADER = packed record bfType: Word; bfSize: DWORD; bfReserved1: Word; bfReserved2: Word; bfOffBits: DWORD; end; TBitmapFileHeader = tagBITMAPFILEHEADER; BITMAPFILEHEADER = tagBITMAPFILEHEADER; PDIBSection = ^TDIBSection; tagDIBSECTION = packed record dsBm: TBitmap; dsBmih: pointer;//TBitmapInfoHeader; dsBitfields: array[0..2] of DWORD; dshSection: THandle; dsOffset: DWORD; end; TDIBSection = tagDIBSECTION; DIBSECTION = tagDIBSECTION; const TRUETYPE_FONTTYPE = 4; GCP_DBCS = 1; //============================================== // Background Modes //============================================== TRANSPARENT = 1; OPAQUE = 2; BKMODE_LAST = 2; //============================================== // Font constants //============================================== //------------ // Font Styles //------------ LF_FULLFACESIZE = 64; LF_FACESIZE = 32; OUT_DEFAULT_PRECIS = 0; OUT_STRING_PRECIS = 1; OUT_CHARACTER_PRECIS = 2; OUT_STROKE_PRECIS = 3; OUT_TT_PRECIS = 4; OUT_DEVICE_PRECIS = 5; OUT_RASTER_PRECIS = 6; OUT_TT_ONLY_PRECIS = 7; OUT_OUTLINE_PRECIS = 8; OUT_SCREEN_OUTLINE_PRECIS = 9; CLIP_DEFAULT_PRECIS = 0; CLIP_CHARACTER_PRECIS = 1; CLIP_STROKE_PRECIS = 2; CLIP_MASK = 15; CLIP_LH_ANGLES = (1 shl 4); CLIP_TT_ALWAYS = (2 shl 4); CLIP_EMBEDDED = (8 shl 4); DEFAULT_QUALITY = 0; DRAFT_QUALITY = 1; PROOF_QUALITY = 2; NONANTIALIASED_QUALITY = 3; ANTIALIASED_QUALITY = 4; DEFAULT_PITCH = 0; FIXED_PITCH = 1; VARIABLE_PITCH = 2; MONO_FONT = 8; ANSI_CHARSET = 0; DEFAULT_CHARSET = 1; SYMBOL_CHARSET = 2; SHIFTJIS_CHARSET = $80; HANGEUL_CHARSET = 129; GB2312_CHARSET = 134; CHINESEBIG5_CHARSET = 136; OEM_CHARSET = 255; JOHAB_CHARSET = 130; HEBREW_CHARSET = 177; ARABIC_CHARSET = 178; GREEK_CHARSET = 161; TURKISH_CHARSET = 162; VIETNAMESE_CHARSET = 163; THAI_CHARSET = 222; EASTEUROPE_CHARSET = 238; RUSSIAN_CHARSET = 204; MAC_CHARSET = 77; BALTIC_CHARSET = 186; //----------- // Font Sets //----------- FS_LATIN1 = 1; FS_LATIN2 = 2; FS_CYRILLIC = 4; FS_GREEK = 8; FS_TURKISH = $10; FS_HEBREW = $20; FS_ARABIC = $40; FS_BALTIC = $80; FS_VIETNAMESE = $00000100; FS_THAI = $10000; FS_JISJAPAN = $20000; FS_CHINESESIMP = $40000; FS_WANSUNG = $80000; FS_CHINESETRAD = $100000; FS_JOHAB = $200000; FS_SYMBOL = DWORD($80000000); //--------------- // Font Families //--------------- FF_DONTCARE = (0 shl 4); FF_ROMAN = (1 shl 4); FF_SWISS = (2 shl 4); FF_MODERN = (3 shl 4); FF_SCRIPT = (4 shl 4); FF_DECORATIVE = (5 shl 4); //-------------- // Font Weights //-------------- FW_DONTCARE = 0; FW_THIN = 100; FW_EXTRALIGHT = 200; FW_LIGHT = 300; FW_NORMAL = 400; FW_MEDIUM = 500; FW_SEMIBOLD = 600; FW_BOLD = 700; FW_EXTRABOLD = 800; FW_HEAVY = 900; FW_ULTRALIGHT = FW_EXTRALIGHT; FW_REGULAR = FW_NORMAL; FW_DEMIBOLD = FW_SEMIBOLD; FW_ULTRABOLD = FW_EXTRABOLD; FW_BLACK = FW_HEAVY; //============================================== // Brush constants //============================================== //-------------- // Brush Styles //-------------- BS_SOLID = 0; BS_NULL = 1; BS_HOLLOW = BS_NULL; BS_HATCHED = 2; BS_PATTERN = 3; BS_INDEXED = 4; BS_DIBPATTERN = 5; BS_DIBPATTERNPT = 6; BS_PATTERN8X8 = 7; BS_DIBPATTERN8X8 = 8; BS_MONOPATTERN = 9; //-------------- // Hatch Styles //-------------- HS_HORIZONTAL = 0; { ----- } HS_VERTICAL = 1; { ||||| } HS_FDIAGONAL = 2; { ///// } HS_BDIAGONAL = 3; { \\\\\ } HS_CROSS = 4; { +++++ } HS_DIAGCROSS = 5; { xxxxx } //============================================== // Pen constants //============================================== //------------ // Pen Styles //------------ PS_SOLID = 0; PS_DASH = 1; { ------- } PS_DOT = 2; { ....... } PS_DASHDOT = 3; { _._._._ } PS_DASHDOTDOT = 4; { _.._.._ } PS_NULL = 5; PS_INSIDEFRAME = 6; PS_USERSTYLE = 7; PS_ALTERNATE = 8; PS_STYLE_MASK = 15; PS_ENDCAP_ROUND = 0; PS_ENDCAP_SQUARE = $100; PS_ENDCAP_FLAT = $200; PS_ENDCAP_MASK = 3840; PS_JOIN_ROUND = 0; PS_JOIN_BEVEL = $1000; PS_JOIN_MITER = $2000; PS_JOIN_MASK = 61440; PS_COSMETIC = 0; PS_GEOMETRIC = $10000; PS_TYPE_MASK = $F0000; //============================================== // Color constants //============================================== CLR_INVALID = LongWord($FFFFFFFF); //============================================== // API system Color constants pbd // note these are usually shown ORed with // $80000000 as these would have interfered with // other MS color enumerations // GetSysColor and SetSysColor expects the values // below //============================================== COLOR_SCROLLBAR = 0; COLOR_BACKGROUND = 1; COLOR_ACTIVECAPTION = 2; COLOR_INACTIVECAPTION = 3; COLOR_MENU = 4; COLOR_WINDOW = 5; COLOR_WINDOWFRAME = 6; COLOR_MENUTEXT = 7; COLOR_WINDOWTEXT = 8; COLOR_CAPTIONTEXT = 9; COLOR_ACTIVEBORDER = 10; COLOR_INACTIVEBORDER = 11; COLOR_APPWORKSPACE = 12; COLOR_HIGHLIGHT = 13; COLOR_HIGHLIGHTTEXT = 14; COLOR_BTNFACE = 15; COLOR_BTNSHADOW = 16; COLOR_GRAYTEXT = 17; COLOR_BTNTEXT = 18; COLOR_INACTIVECAPTIONTEXT = 19; COLOR_BTNHIGHLIGHT = 20; COLOR_3DDKSHADOW = 21; COLOR_3DLIGHT = 22; COLOR_INFOTEXT = 23; COLOR_INFOBK = 24; // PBD: 25 is unassigned in all the docs I can find // if someone finds what this is supposed to be then fill it in // note defaults below, and cl[ColorConst] in graphics COLOR_HOTLIGHT = 26; COLOR_GRADIENTACTIVECAPTION = 27; COLOR_GRADIENTINACTIVECAPTION = 28; COLOR_ENDCOLORS = COLOR_GRADIENTINACTIVECAPTION; COLOR_DESKTOP = COLOR_BACKGROUND; COLOR_3DFACE = COLOR_BTNFACE; COLOR_3DSHADOW = COLOR_BTNSHADOW; COLOR_3DHIGHLIGHT = COLOR_BTNHIGHLIGHT; COLOR_3DHILIGHT = COLOR_BTNHIGHLIGHT; COLOR_BTNHILIGHT = COLOR_BTNHIGHLIGHT; MAX_SYS_COLORS = COLOR_GRADIENTINACTIVECAPTION; SYS_COLOR_BASE = $80000000; //============================================== // Stock Objects //============================================== WHITE_BRUSH = 0; LTGRAY_BRUSH = 1; GRAY_BRUSH = 2; DKGRAY_BRUSH = 3; BLACK_BRUSH = 4; NULL_BRUSH = 5; HOLLOW_BRUSH = NULL_BRUSH; WHITE_PEN = 6; BLACK_PEN = 7; NULL_PEN = 8; OEM_FIXED_FONT = 10; ANSI_FIXED_FONT = 11; ANSI_VAR_FONT = 12; SYSTEM_FONT = 13; DEVICE_DEFAULT_FONT = 14; DEFAULT_PALETTE = 15; SYSTEM_FIXED_FONT = 16; DEFAULT_GUI_FONT = 17; DC_BRUSH = 18; DC_PEN = 19; STOCK_LAST = 19; //============================================== // SystemMetrics constants //============================================== SM_CXSCREEN = 0; SM_CYSCREEN = 1; SM_CXVSCROLL = 2; SM_CYHSCROLL = 3; SM_CYCAPTION = 4; SM_CXBORDER = 5; SM_CYBORDER = 6; SM_CXDLGFRAME = 7; SM_CYDLGFRAME = 8; SM_CYVTHUMB = 9; SM_CXHTHUMB = 10; SM_CXICON = 11; SM_CYICON = 12; SM_CXCURSOR = 13; SM_CYCURSOR = 14; SM_CYMENU = 15; SM_CXFULLSCREEN = 16; SM_CYFULLSCREEN = 17; SM_CYKANJIWINDOW = 18; SM_MOUSEPRESENT = 19; SM_CYVSCROLL = 20; SM_CXHSCROLL = 21; SM_DEBUG = 22; SM_SWAPBUTTON = 23; SM_RESERVED1 = 24; SM_RESERVED2 = 25; SM_RESERVED3 = 26; SM_RESERVED4 = 27; SM_CXMIN = 28; SM_CYMIN = 29; SM_CXSIZE = 30; SM_CYSIZE = 31; SM_CXFRAME = 32; SM_CYFRAME = 33; SM_CXMINTRACK = 34; SM_CYMINTRACK = 35; SM_CXDOUBLECLK = 36; SM_CYDOUBLECLK = 37; SM_CXICONSPACING = 38; SM_CYICONSPACING = 39; SM_MENUDROPALIGNMENT = 40; SM_PENWINDOWS = 41; SM_DBCSENABLED = 42; SM_CMOUSEBUTTONS = 43; SM_CXFIXEDFRAME = SM_CXDLGFRAME; SM_CYFIXEDFRAME = SM_CYDLGFRAME; SM_CXSIZEFRAME = SM_CXFRAME; SM_CYSIZEFRAME = SM_CYFRAME; SM_SECURE = 44; SM_CXEDGE = 45; SM_CYEDGE = 46; SM_CXMINSPACING = 47; SM_CYMINSPACING = 48; SM_CXSMICON = 49; SM_CYSMICON = 50; SM_CYSMCAPTION = 51; SM_CXSMSIZE = 52; SM_CYSMSIZE = 53; SM_CXMENUSIZE = 54; SM_CYMENUSIZE = 55; SM_ARRANGE = 56; SM_CXMINIMIZED = 57; SM_CYMINIMIZED = 58; SM_CXMAXTRACK = 59; SM_CYMAXTRACK = 60; SM_CXMAXIMIZED = 61; SM_CYMAXIMIZED = 62; SM_NETWORK = 63; SM_CLEANBOOT = 67; SM_CXDRAG = 68; SM_CYDRAG = 69; SM_SHOWSOUNDS = 70; SM_CXMENUCHECK = 71; SM_CYMENUCHECK = 72; SM_SLOWMACHINE = 73; SM_MIDEASTENABLED = 74; SM_MOUSEWHEELPRESENT = 75; SM_CMETRICS = 76; //============================================== // Clipboard format constant //============================================== //------------ // Predefined Clipboard Formats //------------ CF_TEXT = 1; CF_BITMAP = 2; CF_METAFILEPICT = 3; CF_OBJECT = 230; type TFarProc = Pointer; TFNWndProc = TFarProc; PLogFontA = ^TLogFontA; PLogFontW = ^TLogFontW; PLogFont = PLogFontA; tagLOGFONTA = packed record lfHeight: Longint; lfWidth: Longint; lfEscapement: Longint; lfOrientation: Longint; lfWeight: Longint; lfItalic: Byte; lfUnderline: Byte; lfStrikeOut: Byte; lfCharSet: Byte; lfOutPrecision: Byte; lfClipPrecision: Byte; lfQuality: Byte; lfPitchAndFamily: Byte; lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar; end; tagLOGFONTW = packed record lfHeight: Longint; lfWidth: Longint; lfEscapement: Longint; lfOrientation: Longint; lfWeight: Longint; lfItalic: Byte; lfUnderline: Byte; lfStrikeOut: Byte; lfCharSet: Byte; lfOutPrecision: Byte; lfClipPrecision: Byte; lfQuality: Byte; lfPitchAndFamily: Byte; lfFaceName: array[0..LF_FACESIZE - 1] of WideChar; end; tagLOGFONT = tagLOGFONTA; TLogFontA = tagLOGFONTA; TLogFontW = tagLOGFONTW; TLogFont = TLogFontA; LOGFONTA = tagLOGFONTA; LOGFONTW = tagLOGFONTW; LOGFONT = LOGFONTA; COLORREF = LongWord; TColorRef = LongWord; PLogBrush = ^TLogBrush; tagLOGBRUSH = packed record lbStyle: LongWord; lbColor: COLORREF; lbHatch: Longint; end; TLogBrush = tagLOGBRUSH; LOGBRUSH = tagLOGBRUSH; type PEnumLogFontA = ^TEnumLogFontA; PEnumLogFontW = ^TEnumLogFontW; PEnumLogFont = PEnumLogFontA; tagENUMLOGFONTA = packed record elfLogFont: TLogFontA; elfFullName: array[0..LF_FULLFACESIZE - 1] of AnsiChar; elfStyle: array[0..LF_FACESIZE - 1] of AnsiChar; end; tagENUMLOGFONTW = packed record elfLogFont: TLogFontW; elfFullName: array[0..LF_FULLFACESIZE - 1] of WideChar; elfStyle: array[0..LF_FACESIZE - 1] of WideChar; end; tagENUMLOGFONT = tagENUMLOGFONTA; TEnumLogFontA = tagENUMLOGFONTA; TEnumLogFontW = tagENUMLOGFONTW; TEnumLogFont = TEnumLogFontA; ENUMLOGFONTA = tagENUMLOGFONTA; ENUMLOGFONTW = tagENUMLOGFONTW; ENUMLOGFONT = ENUMLOGFONTA; PEnumLogFontExA = ^TEnumLogFontExA; PEnumLogFontExW = ^TEnumLogFontExW; PEnumLogFontEx = PEnumLogFontExA; tagENUMLOGFONTEXA = packed record elfLogFont: TLogFontA; elfFullName: array[0..LF_FULLFACESIZE - 1] of AnsiChar; elfStyle: array[0..LF_FACESIZE - 1] of AnsiChar; elfScript: array[0..LF_FACESIZE - 1] of AnsiChar; end; tagENUMLOGFONTEXW = packed record elfLogFont: TLogFontW; elfFullName: array[0..LF_FULLFACESIZE - 1] of WideChar; elfStyle: array[0..LF_FACESIZE - 1] of WideChar; elfScript: array[0..LF_FACESIZE - 1] of WideChar; end; tagENUMLOGFONTEX = tagENUMLOGFONTEXA; TEnumLogFontExA = tagENUMLOGFONTEXA; TEnumLogFontExW = tagENUMLOGFONTEXW; TEnumLogFontEx = TEnumLogFontExA; ENUMLOGFONTEXA = tagENUMLOGFONTEXA; ENUMLOGFONTEXW = tagENUMLOGFONTEXW; ENUMLOGFONTEX = ENUMLOGFONTEXA; PLogPen = ^TLogPen; tagLOGPEN = packed record lopnStyle: LongWord; lopnWidth: TPoint; lopnColor: TColorRef; end; TLogPen = tagLOGPEN; LOGPEN = tagLOGPEN; type PTextMetricA = ^TTextMetricA; PTextMetricW = ^TTextMetricW; PTextMetric = PTextMetricA; tagTEXTMETRICA = record tmHeight: Longint; tmAscent: Longint; tmDescent: Longint; tmInternalLeading: Longint; tmExternalLeading: Longint; tmAveCharWidth: Longint; tmMaxCharWidth: Longint; tmWeight: Longint; tmOverhang: Longint; tmDigitizedAspectX: Longint; tmDigitizedAspectY: Longint; tmFirstChar: AnsiChar; tmLastChar: AnsiChar; tmDefaultChar: AnsiChar; tmBreakChar: AnsiChar; tmItalic: Byte; tmUnderlined: Byte; tmStruckOut: Byte; tmPitchAndFamily: Byte; tmCharSet: Byte; end; tagTEXTMETRICW = record tmHeight: Longint; tmAscent: Longint; tmDescent: Longint; tmInternalLeading: Longint; tmExternalLeading: Longint; tmAveCharWidth: Longint; tmMaxCharWidth: Longint; tmWeight: Longint; tmOverhang: Longint; tmDigitizedAspectX: Longint; tmDigitizedAspectY: Longint; tmFirstChar: WideChar; tmLastChar: WideChar; tmDefaultChar: WideChar; tmBreakChar: WideChar; tmItalic: Byte; tmUnderlined: Byte; tmStruckOut: Byte; tmPitchAndFamily: Byte; tmCharSet: Byte; end; tagTEXTMETRIC = tagTEXTMETRICA; TTextMetricA = tagTEXTMETRICA; TTextMetricW = tagTEXTMETRICW; TTextMetric = TTextMetricA; TEXTMETRICA = tagTEXTMETRICA; TEXTMETRICW = tagTEXTMETRICW; TEXTMETRIC = TEXTMETRICA; PWndClassExA = ^TWndClassExA; PWndClassExW = ^TWndClassExW; PWndClassEx = PWndClassExA; tagWNDCLASSEXA = packed record cbSize: UINT; style: UINT; lpfnWndProc: TFNWndProc; cbClsExtra: Integer; cbWndExtra: Integer; hInstance: HINST; _hIcon: HICON; hCursor: HCURSOR; hbrBackground: HBRUSH; lpszMenuName: PAnsiChar; lpszClassName: PAnsiChar; hIconSm: HICON; end; tagWNDCLASSEXW = packed record cbSize: UINT; style: UINT; lpfnWndProc: TFNWndProc; cbClsExtra: Integer; cbWndExtra: Integer; hInstance: HINST; _hIcon: HICON; hCursor: HCURSOR; hbrBackground: HBRUSH; lpszMenuName: PWideChar; lpszClassName: PWideChar; hIconSm: HICON; end; tagWNDCLASSEX = tagWNDCLASSEXA; TWndClassExA = tagWNDCLASSEXA; TWndClassExW = tagWNDCLASSEXW; TWndClassEx = TWndClassExA; WNDCLASSEXA = tagWNDCLASSEXA; WNDCLASSEXW = tagWNDCLASSEXW; WNDCLASSEX = WNDCLASSEXA; PWndClassA = ^TWndClassA; PWndClassW = ^TWndClassW; PWndClass = PWndClassA; tagWNDCLASSA = packed record style: UINT; lpfnWndProc: TFNWndProc; cbClsExtra: Integer; cbWndExtra: Integer; hInstance: HINST; hIcon: HICON; hCursor: HCURSOR; hbrBackground: HBRUSH; lpszMenuName: PAnsiChar; lpszClassName: PAnsiChar; end; tagWNDCLASSW = packed record style: UINT; lpfnWndProc: TFNWndProc; cbClsExtra: Integer; cbWndExtra: Integer; hInstance: HINST; hIcon: HICON; hCursor: HCURSOR; hbrBackground: HBRUSH; lpszMenuName: PWideChar; lpszClassName: PWideChar; end; tagWNDCLASS = tagWNDCLASSA; TWndClassA = tagWNDCLASSA; TWndClassW = tagWNDCLASSW; TWndClass = TWndClassA; WNDCLASSA = tagWNDCLASSA; WNDCLASSW = tagWNDCLASSW; WNDCLASS = WNDCLASSA; type PMsg = ^TMsg; tagMSG = packed record hwnd: HWND; message: LongWord; wParam: Longint; lParam: Longint; time: DWORD; pt: TPoint; end; TMsg = tagMSG; _MSG = tagMSG; // All winapi related stuff {$I winapih.inc} function MakeLong(A,B : Word) : LongInt; function MakeWord(A,B : Byte) : Word; implementation uses SysUtils, Interfaces, Strings, Math; function MakeLong(A,B : Word) : LongInt; begin Result := A or B shl 16; end; function MakeWord(A,B : Byte) : Word; Begin Result := A or B shl 8; end; {$I winapi.inc} //initialization //finalization end. { $Log$ Revision 1.4 2000/09/10 23:08:30 lazarus MWE: + Added CreateCompatibeleBitamp function + Updated TWinControl.WMPaint + Added some checks to avoid gtk/gdk errors - Removed no fixed warning from GetDC - Removed some output Revision 1.3 2000/08/11 14:59:09 lazarus Adding all the Synedit files. Changed the GDK_KEY_PRESS and GDK_KEY_RELEASE stuff to fix the problem in the editor with the shift key being ignored. Shane Revision 1.1 2000/07/13 10:28:24 michael + Initial import Revision 1.39 2000/05/09 00:01:26 lazarus Updated my email address in the documentation to the current one. Also removed email references in comments that were not @author comments to fix problems with the documentation produced by pasdoc. CAW Revision 1.38 2000/04/24 23:22:52 lazarus MWE: + Added ide option to the makfiles to only compile the ide (don't compile its dependencies because they will be compiled anyhow) "Vincent Snijders" : - removed the references to the windows unit in mwCustomEdit = moved the cf_xxxx constants from clipbrd.pp to lcllinux Revision 1.37 2000/03/31 18:41:03 lazarus Implemented MessageBox / Application.MessageBox calls. No icons yet, though... Revision 1.36 2000/03/15 00:51:58 lazarus MWE: + Added LM_Paint on expose + Added forced creation of gdkwindow if needed ~ Modified DrawFrameControl + Added BF_ADJUST support on DrawEdge - Commented out LM_IMAGECHANGED in TgtkObject.IntSendMessage3 (It did not compile) Revision 1.35 2000/03/14 19:49:05 lazarus Modified the painting process for TWincontrol. Now it runs throug it's FCONTROLS list and paints all them Shane Revision 1.34 2000/03/10 18:31:10 lazarus Added TSpeedbutton code Shane Revision 1.33 2000/03/10 13:14:32 lazarus *** empty log message *** Revision 1.32 2000/03/08 23:57:39 lazarus MWE: Added SetSysColors Fixed TEdit text bug (thanks to hans-joachim ott ) Finished GetKeyState Added changes from Peter Dyson - a new GetSysColor - some improvements on ExTextOut Revision 1.31 2000/03/06 00:05:05 lazarus MWE: Added changes from Peter Dyson for a new release of mwEdit (0.92) Revision 1.30 2000/03/03 22:58:26 lazarus MWE: Fixed focussing problem. LM-FOCUS was bound to the wrong signal Added GetKeyState api func. Now LCL knows if shift/trl/alt is pressed (might be handy for keyboard selections ;-) Revision 1.29 2000/02/28 19:16:04 lazarus Added code to the FILE CLOSE to check if the file was modified. HAven't gotten the application.messagebox working yet though. It won't stay visible. Shane Revision 1.28 2000/02/24 21:15:30 lazarus Added TCustomForm.GetClientRect and RequestAlign to try and get the controls to align correctly when a MENU is present. Not Complete yet. Fixed the bug in TEdit that caused it not to update it's text property. I will have to look at TMemo to see if anything there was affected. Added SetRect to WinAPI calls Added AdjustWindowRectEx to WINAPI calls. Shane Revision 1.27 2000/01/31 20:00:22 lazarus Added code for Application.ProcessMessages. Needs work. Added TScreen.Width and TScreen.Height. Added the code into GetSystemMetrics for these two properties. Shane Revision 1.26 2000/01/10 00:07:13 lazarus MWE: Added more scrollbar support for TWinControl Most signals for TWinContorl are jet connected to the wrong widget (now scrolling window, should be fixed) Added some cvs entries Revision 1.25 2000/01/07 21:14:14 lazarus Added code for getwindowlong and setwindowlong. Shane Revision 1.24 1999/12/28 01:10:54 lazarus MWE: Added most common virtual keycodes Revision 1.23 1999/12/21 21:35:54 lazarus committed the latest toolbar code. Currently it doesn't appear anywhere and I have to get it to add buttons correctly through (I think) setstyle. I think I'll implement the LM_TOOLBARINSERTBUTTON call there. Shane Revision 1.22 1999/12/20 21:37:12 lazarus Added ISRIGHTTOLEFT in menus file. Added ISACCEL in forms.pp Shane Revision 1.21 1999/12/20 21:01:14 lazarus Added a few things for compatability with Delphi and TToolbar Shane Revision 1.20 1999/12/14 21:07:12 lazarus Added more stuff for TToolbar Shane Revision 1.19 1999/12/14 19:37:49 lazarus Added a few record structures and such for preperation for the toolbar. Shane Revision 1.18 1999/12/14 00:16:43 lazarus MWE: Renamed LM... message handlers to WM... to be compatible and to get more edit parts to compile Started to implement GetSystemMetrics Removed some Lazarus specific parts from mwEdit Revision 1.17 1999/12/10 00:47:01 lazarus MWE: Fixed some samples Fixed Dialog parent is no longer needed Fixed (Win)Control Destruction Fixed MenuClick Revision 1.16 1999/12/02 19:00:59 lazarus MWE: Added (GDI)Pen Changed (GDI)Brush Changed (GDI)Font (color) Changed Canvas to use/create pen/brush/font Hacked mwedit to allow setting the number of chars (till it get a WM/LM_SIZE event) The editor shows a line ! Revision 1.15 1999/11/29 00:46:47 lazarus MWE: Added TBrush as gdiobject commented out some more mwedit MWE_FPC ifdefs Revision 1.14 1999/11/25 23:45:08 lazarus MWE: Added font as GDIobject Added some API testcode to testform Commented out some more IFDEFs in mwCustomEdit Revision 1.13 1999/11/18 00:13:08 lazarus MWE: Partly Implemented SelectObject Added ExTextOut Added GetTextExtentPoint Added TCanvas.TextExtent/TextWidth/TextHeight Added TSize and HPEN Revision 1.12 1999/11/17 01:16:40 lazarus MWE: Added some more API stuff Added an initial TBitmapCanvas Added some DC stuff Changed and commented out, original gtk linedraw/rectangle code. This is now called through the winapi wrapper. Revision 1.11 1999/11/13 13:03:34 lazarus MWE: Started to implement some platform dependent WINAPI stuff Added a baseclass for InterfaceObject Started messing around with canvasses Revision 1.10 1999/11/09 06:33:09 lazarus Added more constants to get more mwCustomEdit beta files to compile. CAW Revision 1.9 1999/11/02 16:02:34 lazarus Added a bunch of wndproc stuff and a lot of functions that really don't do a thing at this point. Shane Revision 1.8 1999/11/01 01:28:30 lazarus MWE: Implemented HandleNeeded/CreateHandle/CreateWND Now controls are created on demand. A call to CreateComponent shouldn't be needed. It is now part of CreateWnd Revision 1.7 1999/10/30 17:39:35 peter * reallocmem is now in the system unit Revision 1.6 1999/10/28 23:48:57 lazarus MWE: Added new menu classes and started to use handleneeded Revision 1.5 1999/10/28 19:25:10 lazarus Added a ton of messaging stuff Shane Revision 1.4 1999/10/27 18:23:29 lazarus mwEdit compiles. Shane Revision 1.3 1999/10/27 17:27:07 lazarus Added alot of changes and TODO: statements shane Revision 1.2 1999/10/27 13:11:51 lazarus Added some LM_??? stuff to LMEssages. Shane Revision 1.1 1999/10/27 12:53:23 lazarus Added LCLLinux.pp and removed Linux.pp Also, added the TCustomForm.ISFORM function. Shane Revision 1.1 1999/10/26 14:51:20 lazarus Removed WINDOWS.PP and added LINUX.PP Shane }