mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-13 02:49:29 +02:00
2130 lines
53 KiB
ObjectPascal
2130 lines
53 KiB
ObjectPascal
{ $Id$ }
|
|
{
|
|
/***************************************************************************
|
|
LCLType.pp
|
|
----------
|
|
Component Library Windows Controls
|
|
Initial Revision : Fri Jul 23 20:00:00 PDT 1999
|
|
|
|
|
|
***************************************************************************/
|
|
|
|
*****************************************************************************
|
|
* *
|
|
* This file is part of the Lazarus Component Library (LCL) *
|
|
* *
|
|
* See the file COPYING.LCL, included in this distribution, *
|
|
* for details about the copyright. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
* *
|
|
*****************************************************************************
|
|
}
|
|
|
|
{
|
|
@author(Curtis White <cwhite@aracnet.com>)
|
|
@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 LCLType;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
|
|
{$ifdef Trace}
|
|
{$ASSERTIONS ON}
|
|
{$endif}
|
|
|
|
uses
|
|
{$ifdef win32}
|
|
windows,
|
|
{$endif win32}
|
|
VCLGlobals, Classes;
|
|
|
|
type
|
|
//TODO: check this against vclglobals
|
|
|
|
PLongInt = ^LongInt;
|
|
PInteger = ^Integer;
|
|
PSmallInt = ^SmallInt;
|
|
PDouble = ^Double;
|
|
PRect = ^TRect;
|
|
PANSICHAR = ^AnsiChar;
|
|
PWideChar = ^WideChar;
|
|
UINT = LongWord;
|
|
PPoint = ^TPoint;
|
|
|
|
TCriticalSection = longint;
|
|
PCriticalSection = ^TCriticalSection;
|
|
|
|
{$if defined(VER1_0) or not(defined(win32))}
|
|
{ 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;
|
|
HGLOBAL = THAndle;
|
|
Short = SmallInt;
|
|
hwnd = THandle;
|
|
HMENU = type LongWord;
|
|
HBitmap = type LongWord;
|
|
HPalette = type LongWord;
|
|
|
|
HBRUSH = type LongWord;
|
|
{$else}
|
|
HKEY = Windows.HKEY;
|
|
PHKEY = ^HKEY;
|
|
HDC = Windows.HDC;
|
|
HHOOK = Windows.HHOOK;
|
|
HFONT = Windows.HFont;
|
|
HGDIOBJ = Windows.HGDIOBJ;
|
|
HPEN = Windows.HPEN;
|
|
HRGN = Windows.HRGN;
|
|
HINST = Windows.HINST;
|
|
HICON = Windows.HICON;
|
|
HCURSOR = HICON;
|
|
Bool = Windows.Bool;
|
|
HGLOBAL = Windows.HGLOBAL;
|
|
Short = Windows.Short;
|
|
hwnd = Windows.hwnd;
|
|
HMENU = Windows.HMENU;
|
|
HBitmap = Windows.HBitmap;
|
|
HPalette = Windows.HPalette;
|
|
|
|
HBRUSH = Windows.HBrush;
|
|
{$endif}
|
|
|
|
var
|
|
hInstance :HINST;
|
|
|
|
const
|
|
INVALID_HANDLE_VALUE = 0;
|
|
MaxByte = 255;
|
|
|
|
{ Ternary raster operations }
|
|
SRCCOPY = $00CC0020; { dest = source }
|
|
SRCPAINT = $00EE0086; { dest = source OR dest }
|
|
SRCAND = $008800C6; { dest = source AND dest }
|
|
SRCINVERT = $00660046; { dest = source XOR dest }
|
|
SRCERASE = $00440328; { dest = source AND (NOT dest ) }
|
|
NOTSRCCOPY = $00330008; { dest = (NOT source) }
|
|
NOTSRCERASE = $001100A6; { dest = (NOT src) AND (NOT dest) }
|
|
MERGECOPY = $00C000CA; { dest = (source AND pattern) }
|
|
MERGEPAINT = $00BB0226; { dest = (NOT source) OR dest }
|
|
PATCOPY = $00F00021; { dest = pattern }
|
|
PATPAINT = $00FB0A09; { dest = DPSnoo }
|
|
PATINVERT = $005A0049; { dest = pattern XOR dest }
|
|
DSTINVERT = $00550009; { dest = (NOT dest) }
|
|
BLACKNESS = $00000042; { dest = BLACK }
|
|
WHITENESS = $00FF0062; { dest = WHITE }
|
|
|
|
type
|
|
WPARAM = longint;
|
|
LPARAM = LongInt;
|
|
LRESULT = LongInt;
|
|
|
|
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);
|
|
|
|
//------------
|
|
// CombineRgn Mode flags
|
|
//------------
|
|
RGN_AND = 1;
|
|
RGN_OR = 2;
|
|
RGN_XOR = 3;
|
|
RGN_DIFF = 4;
|
|
RGN_COPY = 5;
|
|
|
|
//------------
|
|
// DrawText flags
|
|
//------------
|
|
DT_TOP = 0;
|
|
DT_LEFT = 0;
|
|
DT_CENTER = 1;
|
|
DT_RIGHT = 2;
|
|
DT_VCENTER = 4;
|
|
DT_BOTTOM = 8;
|
|
DT_WORDBREAK = $10;
|
|
DT_SINGLELINE = $20;
|
|
DT_NOCLIP = $100;
|
|
DT_CALCRECT = $400;
|
|
DT_NOPREFIX = $800;
|
|
DT_INTERNAL = $1000;
|
|
DT_EDITCONTROL = $2000;
|
|
|
|
//==============================================
|
|
// 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;
|
|
|
|
//==============================================
|
|
// Keyboard 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
|
|
//-------------
|
|
//
|
|
// Source: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
|
|
//
|
|
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 = $5B;
|
|
VK_RWIN = $5C;
|
|
VK_APPS = $5D;
|
|
// $5E reserved
|
|
VK_SLEEP = $5F;
|
|
|
|
VK_NUMPAD0 = 96; // $60
|
|
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; // $87
|
|
|
|
// $88-$8F unassigned
|
|
|
|
VK_NUMLOCK = $90;
|
|
VK_SCROLL = $91;
|
|
|
|
// $92-$96 OEM specific
|
|
// $97-$9F Unassigned
|
|
|
|
// not in VCL defined:
|
|
//MWE: And should not be used.
|
|
// The keys they are on map to another VK
|
|
|
|
(*
|
|
VK_EQUAL = 187;
|
|
VK_COMMA = 188;
|
|
VK_POINT = 190;
|
|
VK_SLASH = 191;
|
|
VK_AT = 192;
|
|
*)
|
|
|
|
// 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 = $A0;
|
|
VK_RSHIFT = $A1;
|
|
VK_LCONTROL = $A2;
|
|
VK_RCONTROL = $A3;
|
|
VK_LMENU = $A4;
|
|
VK_RMENU = $A5;
|
|
|
|
VK_BROWSER_BACK = $A6;
|
|
VK_BROWSER_FORWARD = $A7;
|
|
VK_BROWSER_REFRESH = $A8;
|
|
VK_BROWSER_STOP = $A9;
|
|
VK_BROWSER_SEARCH = $AA;
|
|
VK_BROWSER_FAVORITES = $AB;
|
|
VK_BROWSER_HOME = $AC;
|
|
VK_VOLUME_MUTE = $AD;
|
|
VK_VOLUME_DOWN = $AE;
|
|
VK_VOLUME_UP = $AF;
|
|
VK_MEDIA_NEXT_TRACK = $B0;
|
|
VK_MEDIA_PREV_TRACK = $B1;
|
|
VK_MEDIA_STOP = $B2;
|
|
VK_MEDIA_PLAY_PAUSE = $B3;
|
|
VK_LAUNCH_MAIL = $B4;
|
|
VK_LAUNCH_MEDIA_SELECT = $B5;
|
|
VK_LAUNCH_APP1 = $B6;
|
|
VK_LAUNCH_APP2 = $B7;
|
|
// $B8-$B9 Reserved
|
|
VK_OEM_1 = $BA; // Used for miscellaneous characters; it can vary by keyboard.
|
|
// For the US standard keyboard, the ';:' key
|
|
VK_OEM_PLUS = $BB; // For any country/region, the '+' key
|
|
VK_OEM_COMMA = $BC; // For any country/region, the ',' key
|
|
VK_OEM_MINUS = $BD; // For any country/region, the '-' key
|
|
VK_OEM_PERIOD = $BE; // For any country/region, the '.' key
|
|
VK_OEM_2 = $BF; // Used for miscellaneous characters; it can vary by keyboard.
|
|
// For the US standard keyboard, the '/?' key
|
|
VK_OEM_3 = $C0; // Used for miscellaneous characters; it can vary by keyboard.
|
|
// For the US standard keyboard, the '`~' key
|
|
// $C1-$D7 Reserved
|
|
// $D8-$DA Unassigned
|
|
VK_OEM_4 = $DB; // Used for miscellaneous characters; it can vary by keyboard.
|
|
// For the US standard keyboard, the '[{' key
|
|
VK_OEM_5 = $DC; // Used for miscellaneous characters; it can vary by keyboard.
|
|
// For the US standard keyboard, the '\|' key
|
|
VK_OEM_6 = $DD; // Used for miscellaneous characters; it can vary by keyboard.
|
|
// For the US standard keyboard, the ']}' key
|
|
VK_OEM_7 = $DE; // Used for miscellaneous characters; it can vary by keyboard.
|
|
// For the US standard keyboard, the 'single-quote/double-quote' key
|
|
VK_OEM_8 = $DF; // Used for miscellaneous characters; it can vary by keyboard.
|
|
|
|
// $E0 Reserved
|
|
// $E1 OEM specific
|
|
VK_OEM_102 = $E2; // Either the angle bracket key or the backslash key on the RT 102-key keyboard
|
|
|
|
// $E3-$E4 OEM specific
|
|
|
|
VK_PROCESSKEY = $E7; // IME Process key
|
|
|
|
// $E8 Unassigned
|
|
// $E9-$F5 OEM specific
|
|
|
|
VK_ATTN = $F6;
|
|
VK_CRSEL = $F7;
|
|
VK_EXSEL = $F8;
|
|
VK_EREOF = $F9;
|
|
VK_PLAY = $FA;
|
|
VK_ZOOM = $FB;
|
|
VK_NONAME = $FC;
|
|
VK_PA1 = $FD;
|
|
VK_OEM_CLEAR = $FE;
|
|
|
|
// all other keys with no virtual key code are mapped to
|
|
// VK_IRREGULAR + KeyCode
|
|
// MWE: Obsolete
|
|
// VK_IRREGULAR = 1000;
|
|
|
|
|
|
//==============================================
|
|
//
|
|
//==============================================
|
|
|
|
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;
|
|
MB_ICONHAND = $00000010;
|
|
MB_ICONQUESTION = $00000020;
|
|
MB_ICONEXCLAMATION = $00000030;
|
|
MB_ICONASTERICK = $00000040;
|
|
MB_ICONWARNING = MB_ICONEXCLAMATION;
|
|
MB_ICONERROR = MB_ICONHAND;
|
|
MB_ICONINFORMATION = MB_ICONASTERICK;
|
|
|
|
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;
|
|
|
|
SBS_HORZ = 0;
|
|
SBS_VERT = 1;
|
|
SBS_TOPALIGN = 2;
|
|
SBS_LEFTALIGN = 2;
|
|
SBS_BOTTOMALIGN = 4;
|
|
SBS_RIGHTALIGN = 4;
|
|
SBS_SIZEBOXTOPLEFTALIGN = 2;
|
|
SBS_SIZEBOXBOTTOMRIGHTALIGN = 4;
|
|
SBS_SIZEBOX = 8;
|
|
SBS_SIZEGRIP = $10;
|
|
|
|
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; // the default
|
|
Size_Minimized = 1;
|
|
Size_Maximized = 2;
|
|
Size_MaxShow = 3;
|
|
Size_MaxHide = 4;
|
|
Size_SourceIsInterface = 128; // this is flag. Can be combined with the above
|
|
|
|
SIZENORMAL = Size_Restored;
|
|
SIZEICONIC = Size_Minimized;
|
|
SIZEFULLSCREEN = Size_Maximized;
|
|
SIZEZOOMSHOW = Size_MaxShow;
|
|
SIZEZOOMHIDE = Size_MaxHide;
|
|
|
|
{ WMMove Message Constants }
|
|
Move_Default = 0;
|
|
Move_SourceIsInterface = 128; // this is flag. Can be combined with the above
|
|
|
|
{ Window Styles }
|
|
WS_OVERLAPPED = 0;
|
|
WS_POPUP = DWORD($80000000);
|
|
WS_CHILD = DWORD($40000000);
|
|
WS_MINIMIZE = DWORD($20000000);
|
|
WS_VISIBLE = DWORD($10000000);
|
|
WS_DISABLED = DWORD($8000000);
|
|
WS_CLIPSIBLINGS = DWORD($4000000);
|
|
WS_CLIPCHILDREN = DWORD($2000000);
|
|
WS_MAXIMIZE = DWORD($1000000);
|
|
WS_BORDER = DWORD($800000);
|
|
WS_DLGFRAME = DWORD($400000);
|
|
WS_CAPTION = DWORD(WS_BORDER or WS_DLGFRAME);
|
|
WS_VSCROLL = DWORD($200000);
|
|
WS_HSCROLL = DWORD($100000);
|
|
WS_SYSMENU = DWORD($80000);
|
|
WS_THICKFRAME = DWORD($40000);
|
|
WS_GROUP = DWORD($20000);
|
|
WS_TABSTOP = DWORD($10000);
|
|
|
|
WS_MINIMIZEBOX = DWORD($20000);
|
|
WS_MAXIMIZEBOX = DWORD($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);
|
|
|
|
const
|
|
{ SetWindowPos Flags }
|
|
HWND_TOP = 0;
|
|
HWND_BOTTOM = 1;
|
|
HWND_TOPMOST = HWND(-1);
|
|
HWND_NOTOPMOST = HWND(-2);
|
|
|
|
{ ShowWindow() Commands }
|
|
SW_HIDE = 0;
|
|
SW_SHOWNORMAL = 1;
|
|
SW_NORMAL = 1;
|
|
SW_SHOWMINIMIZED = 2;
|
|
SW_SHOWMAXIMIZED = 3;
|
|
SW_MAXIMIZE = 3;
|
|
SW_SHOWNOACTIVATE = 4;
|
|
SW_SHOW = 5;
|
|
SW_MINIMIZE = 6;
|
|
SW_SHOWMINNOACTIVE = 7;
|
|
SW_SHOWNA = 8;
|
|
SW_RESTORE = 9;
|
|
SW_SHOWDEFAULT = 10;
|
|
SW_MAX = 10;
|
|
|
|
const
|
|
{ DIB color table identifiers }
|
|
|
|
DIB_RGB_COLORS = 0; { color table in RGBs }
|
|
DIB_PAL_COLORS = 1; { color table in palette indices }
|
|
|
|
const
|
|
{ Gradient Fill Modes }
|
|
GRADIENT_FILL_RECT_H = 0;
|
|
GRADIENT_FILL_RECT_V = 1;
|
|
GRADIENT_FILL_TRIANGLE = 2;
|
|
|
|
|
|
type
|
|
|
|
PNMHdr = ^TNMHdr;
|
|
tagNMHDR = packed record
|
|
hwndFrom: HWND;
|
|
idFrom: UINT;
|
|
code: Integer;
|
|
end;
|
|
TNMHdr = tagNMHDR;
|
|
NMHDR = tagNMHDR;
|
|
|
|
{painting stuff}
|
|
|
|
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;
|
|
|
|
|
|
TOwnerDrawStateType = (
|
|
odSelected, odGrayed, odDisabled, odChecked,
|
|
odFocused, odDefault, odHotLight, odInactive, odNoAccel,
|
|
odNoFocusRect, odReserved1, odReserved2, odComboBoxEdit,
|
|
odPainted // item already painted
|
|
);
|
|
TOwnerDrawState = set of TOwnerDrawStateType;
|
|
|
|
PDrawListItemStruct = ^TDrawListItemStruct;
|
|
TDrawListItemStruct = record
|
|
ItemID: longint;
|
|
Area: TRect;
|
|
DC: HDC;
|
|
ItemState: TOwnerDrawState;
|
|
end;
|
|
|
|
|
|
PPaintStruct = ^TPaintStruct;
|
|
tagPAINTSTRUCT = packed record
|
|
hdc: HDC;
|
|
fErase: BOOL;
|
|
rcPaint: TRect;
|
|
fRestore: BOOL;
|
|
fIncUpdate: BOOL;
|
|
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;
|
|
|
|
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;
|
|
|
|
{ Palette Structures }
|
|
PPaletteEntry = ^tagPaletteEntry;
|
|
tagPALETTEENTRY = packed record
|
|
peRed: Byte;
|
|
peGreen: Byte;
|
|
peBlue: Byte;
|
|
peFlags: Byte;
|
|
end;
|
|
TPaletteEntry = tagPALETTEENTRY;
|
|
PALETTEENTRY = tagPALETTEENTRY;
|
|
|
|
PLogPalette = ^tagLogPalette;
|
|
tagLOGPALETTE = packed record
|
|
palVersion: Word;
|
|
palNumEntries: Word;
|
|
palPalEntry: array[0..0] of tagPaletteEntry;
|
|
end;
|
|
LOGPALETTE = tagLOGPALETTE;
|
|
TLOGPALETTE = tagLOGPALETTE;
|
|
|
|
{ GradientFill Structures }
|
|
PTriVertex = ^tagTriVertex;
|
|
tagTRIVERTEX = packed record
|
|
x: Longint;
|
|
y: Longint;
|
|
Red: Shortint;
|
|
Green: Shortint;
|
|
Blue: Shortint;
|
|
Alpha: Shortint;
|
|
end;
|
|
TRIVERTEX = tagTRIVERTEX;
|
|
|
|
PGradientTriangle = ^tagGradientTriangle;
|
|
tagGRADIENTTRIANGLE = packed record
|
|
Vertex1: Longint;
|
|
Vertex2: Longint;
|
|
Vertex3: Longint;
|
|
end;
|
|
GRADIENTTRIANGLE = tagGRADIENTTRIANGLE;
|
|
|
|
PGradientRect = ^tagGradientRect;
|
|
tagGRADIENTRECT = packed record
|
|
UpperLeft: Longint;
|
|
LowerRight: Longint;
|
|
end;
|
|
GRADIENTRECT = tagGRADIENTRECT;
|
|
|
|
{ ********************************** }
|
|
{ B I T M A P S T U F F }
|
|
|
|
{ TBitmap is an encapsulation of a matrix of pixels. }
|
|
PBitmap = ^TagBitmap;
|
|
tagBITMAP = packed record
|
|
bmType: Longint;
|
|
bmWidth: Longint;
|
|
bmHeight: Longint;
|
|
bmWidthBytes: Longint;
|
|
bmPlanes: Word;
|
|
bmBitsPixel: Word;
|
|
bmBits: Pointer;
|
|
end;
|
|
BITMAP = tagBITMAP;
|
|
|
|
|
|
PBitmapCoreHeader = ^TBitmapCoreHeader;
|
|
tagBITMAPCOREHEADER = packed record
|
|
bcSize: DWORD;
|
|
bcWidth: Word;
|
|
bcHeight: Word;
|
|
bcPlanes: Word;
|
|
bcBitCount: Word;
|
|
end;
|
|
TBitmapCoreHeader = tagBITMAPCOREHEADER;
|
|
BITMAPCOREHEADER = tagBITMAPCOREHEADER;
|
|
|
|
|
|
PBitmapInfoHeader = ^TBitmapInfoHeader;
|
|
tagBITMAPINFOHEADER = packed record
|
|
biSize : DWORD;
|
|
biWidth : Longint;
|
|
biHeight : Longint;
|
|
biPlanes : WORD;
|
|
biBitCount : WORD;
|
|
biCompression : DWORD;
|
|
biSizeImage : DWORD;
|
|
biXPelsPerMeter : Longint;
|
|
biYPelsPerMeter : Longint;
|
|
biClrUsed : DWORD;
|
|
biClrImportant : DWORD;
|
|
end;
|
|
TBitmapInfoHeader = tagBITMAPINFOHEADER;
|
|
BITMAPINFOHEADER = tagBITMAPINFOHEADER;
|
|
|
|
|
|
PRGBTriple = ^TRGBTriple;
|
|
tagRGBTRIPLE = packed record
|
|
rgbtBlue: Byte;
|
|
rgbtGreen: Byte;
|
|
rgbtRed: Byte;
|
|
end;
|
|
TRGBTriple = tagRGBTRIPLE;
|
|
RGBTRIPLE = tagRGBTRIPLE;
|
|
|
|
PRGBQUAD = ^TRGBQUAD;
|
|
tagRGBQUAD = packed record
|
|
rgbBlue : BYTE;
|
|
rgbGreen : BYTE;
|
|
rgbRed : BYTE;
|
|
rgbReserved : BYTE;
|
|
end;
|
|
TRGBQuad = tagRGBQUAD;
|
|
RGBQUAD = tagRGBQUAD;
|
|
|
|
PBitmapInfo = ^TBitmapInfo;
|
|
tagBITMAPINFO = packed record
|
|
bmiHeader: TBitmapInfoHeader;
|
|
bmiColors: array[0..0] of TRGBQuad;
|
|
end;
|
|
TBitmapInfo = tagBITMAPINFO;
|
|
BITMAPINFO = tagBITMAPINFO;
|
|
|
|
PBitmapCoreInfo = ^TBitmapCoreInfo;
|
|
tagBITMAPCOREINFO = record
|
|
bmciHeader: TBitmapCoreHeader;
|
|
bmciColors: array[0..0] of TRGBTriple;
|
|
Reserved: array[0..0] of Char;
|
|
end;
|
|
TBitmapCoreInfo = tagBITMAPCOREINFO;
|
|
BITMAPCOREINFO = tagBITMAPCOREINFO;
|
|
|
|
|
|
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: TagBitmap;
|
|
dsBmih: tagBITMAPINFOHEADER;
|
|
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;
|
|
MAC_CHARSET = 77;
|
|
SHIFTJIS_CHARSET = 128;
|
|
HANGEUL_CHARSET = 129;
|
|
JOHAB_CHARSET = 130;
|
|
GB2312_CHARSET = 134;
|
|
CHINESEBIG5_CHARSET = 136;
|
|
GREEK_CHARSET = 161;
|
|
TURKISH_CHARSET = 162;
|
|
VIETNAMESE_CHARSET = 163;
|
|
HEBREW_CHARSET = 177;
|
|
ARABIC_CHARSET = 178;
|
|
BALTIC_CHARSET = 186;
|
|
RUSSIAN_CHARSET = 204;
|
|
THAI_CHARSET = 222;
|
|
EASTEUROPE_CHARSET = 238;
|
|
OEM_CHARSET = 255;
|
|
|
|
|
|
//-----------
|
|
// 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_FORM = 29;
|
|
COLOR_ENDCOLORS = COLOR_FORM;
|
|
|
|
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_ENDCOLORS;
|
|
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;
|
|
|
|
|
|
//==============================================
|
|
// Stock Pixmap Types
|
|
//==============================================
|
|
idButtonBase = 0;
|
|
idButtonOk = idButtonBase + 1;
|
|
idButtonCancel = idButtonBase + 2;
|
|
idButtonHelp = idButtonBase + 3;
|
|
idButtonYes = idButtonBase + 4;
|
|
idButtonNo = idButtonBase + 5;
|
|
idButtonClose = idButtonBase + 6;
|
|
idButtonAbort = idButtonBase + 7;
|
|
idButtonRetry = idButtonBase + 8;
|
|
idButtonIgnore = idButtonBase + 9;
|
|
idButtonAll = idButtonBase + 10;
|
|
idButtonYesToAll = idButtonBase + 11;
|
|
idButtonNoToAll = idButtonBase + 12;
|
|
|
|
idDialogBase = $FF;
|
|
idDialogWarning = idDialogBase + 1;
|
|
idDialogError = idDialogBase + 2;
|
|
idDialogInfo = idDialogBase + 3;
|
|
idDialogConfirm = idDialogBase + 4;
|
|
|
|
//==============================================
|
|
// 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;
|
|
|
|
//==============================================
|
|
// GetDeviceCaps constants
|
|
//==============================================
|
|
BI_RGB = 0;
|
|
BI_BITFIELDS = 3;
|
|
|
|
|
|
HORZSIZE = 4; { Horizontal size in millimeters }
|
|
VERTSIZE = 6; { Vertical size in millimeters }
|
|
HORZRES = 8; { Horizontal width in pixels }
|
|
VERTRES = 10; { Vertical height in pixels }
|
|
BITSPIXEL = 12; { Number of bits per pixel }
|
|
PLANES = 14; { Number of planes }
|
|
LOGPIXELSX = 88; { Logical pixelsinch in X }
|
|
LOGPIXELSY = 90; { Logical pixelsinch in Y }
|
|
SIZEPALETTE = 104; { Number of entries in physical palette }
|
|
NUMRESERVED = 106; { Number of reserved entries in palette }
|
|
|
|
|
|
{ Text Alignment Options }
|
|
|
|
TA_NOUPDATECP = 0;
|
|
TA_UPDATECP = 1;
|
|
TA_LEFT = 0;
|
|
TA_RIGHT = 2;
|
|
TA_CENTER = 6;
|
|
TA_TOP = 0;
|
|
TA_BOTTOM = 8;
|
|
TA_BASELINE = $18;
|
|
TA_RTLREADING = $100;
|
|
TA_MASK = (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING);
|
|
|
|
{ PolyFill() Modes }
|
|
ALTERNATE = 1;
|
|
WINDING = 2;
|
|
POLYFILL_LAST = 2;
|
|
|
|
{ StretchBlt() Modes }
|
|
BLACKONWHITE = 1;
|
|
WHITEONBLACK = 2;
|
|
COLORONCOLOR = 3;
|
|
HALFTONE = 4;
|
|
MAXSTRETCHBLTMODE = 4;
|
|
|
|
{ constants for CreateDIBitmap }
|
|
|
|
CBM_INIT = 4; { initialize bitmap }
|
|
|
|
|
|
type
|
|
TFarProc = Pointer;
|
|
|
|
TFNWndProc = TFarProc;
|
|
|
|
MakeIntResourceA = PAnsiChar;
|
|
MakeIntResource = MakeIntResourceA;
|
|
|
|
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;
|
|
|
|
|
|
PMaxLogPalette = ^TMaxLogPalette; // not in Windows Headers
|
|
TMaxLogPalette = packed record
|
|
palVersion: Word;
|
|
palNumEntries: Word;
|
|
palPalEntry: array [Byte] of TPaletteEntry;
|
|
end;
|
|
|
|
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;
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// prototype for timer callback
|
|
type
|
|
TFNTimerProc = procedure of object;
|
|
|
|
//------------------------------------------------------------------------------
|
|
// clipboard
|
|
type
|
|
TClipboardFormat = cardinal;
|
|
PClipboardFormat = ^TClipboardFormat;
|
|
|
|
TClipboardRequestEvent = procedure(const RequestedFormatID: TClipboardFormat;
|
|
Data: TStream) of object;
|
|
|
|
TClipboardType = (ctPrimarySelection, ctSecondarySelection, ctClipboard);
|
|
|
|
const
|
|
ClipboardTypeName : array[TClipboardType] of string = (
|
|
'primary selection', 'secondary selection', 'clipboard'
|
|
);
|
|
|
|
type
|
|
TPredefinedClipboardFormat = (
|
|
pcfText,
|
|
pcfBitmap,
|
|
pcfPixmap,
|
|
pcfIcon,
|
|
pcfPicture,
|
|
pcfObject,
|
|
pcfComponent,
|
|
pcfCustomData,
|
|
|
|
// Delphi definitions (only for compatibility)
|
|
pcfDelphiText,
|
|
pcfDelphiBitmap,
|
|
pcfDelphiPicture,
|
|
pcfDelphiMetaFilePict,
|
|
pcfDelphiObject,
|
|
pcfDelphiComponent,
|
|
|
|
// Kylix definitions (only for compatibility)
|
|
pcfKylixPicture,
|
|
pcfKylixBitmap,
|
|
pcfKylixDrawing,
|
|
pcfKylixComponent
|
|
);
|
|
|
|
const
|
|
PredefinedClipboardMimeTypes : array[TPredefinedClipboardFormat] of string = (
|
|
'text/plain',
|
|
'image/bmp',
|
|
'image/xpm',
|
|
'image/lcl.icon',
|
|
'image/lcl.picture',
|
|
'application/lcl.object',
|
|
'application/lcl.component',
|
|
'application/lcl.customdata',
|
|
|
|
// Delphi definitions (only for compatibility)
|
|
'text/plain',
|
|
'image/delphi.bitmap',
|
|
'Delphi Picture',
|
|
'image/delphi.metafilepict',
|
|
'application/delphi.object',
|
|
'Delphi Component',
|
|
|
|
// Kylix definitons (only for compatibility)
|
|
'image/delphi.picture',
|
|
'image/delphi.bitmap',
|
|
'image/delphi.drawing',
|
|
'application/delphi.component'
|
|
);
|
|
|
|
|
|
// key mapping
|
|
|
|
type
|
|
TShortCut = Low(Word)..High(Word); {should be moved to classes}
|
|
|
|
{$IFDEF VER1_1}
|
|
type
|
|
TRTLCriticalSection = pointer;
|
|
{$ENDIF}
|
|
|
|
|
|
function hiword(i: integer): word;
|
|
function loword(i: integer): word;
|
|
Function Char2VK(C : Char) : Word;
|
|
function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer;
|
|
|
|
|
|
implementation
|
|
|
|
|
|
function hiword(i: integer): word;
|
|
begin
|
|
Result:=Hi(i);
|
|
end;
|
|
|
|
function loword(i: integer): word;
|
|
begin
|
|
Result:=Lo(i);
|
|
end;
|
|
|
|
Function Char2VK(C : Char) : Word;
|
|
begin
|
|
Case C of
|
|
'0'..'9' :Result := VK_0 + Ord(C) - Ord('0');
|
|
'a'..'z' :Result := VK_A + Ord(C) - Ord('a');
|
|
'A'..'Z' :Result := VK_A + Ord(C) - Ord('A');
|
|
end;
|
|
end;
|
|
|
|
function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer;
|
|
begin
|
|
Result:=(int64(nNumber)*int64(nNumerator)) div nDenominator;
|
|
end;
|
|
|
|
|
|
end.
|
|
|
|
{
|
|
$Log$
|
|
Revision 1.45 2003/10/23 16:15:30 micha
|
|
compatibility with new 1.1
|
|
|
|
Revision 1.44 2003/10/16 23:54:27 marc
|
|
Implemented new gtk keyevent handling
|
|
|
|
Revision 1.43 2003/10/15 20:33:36 ajgenius
|
|
add csForm, start fixing Style matching for syscolors and fonts
|
|
|
|
Revision 1.42 2003/09/10 19:15:15 mattias
|
|
implemented copying graphics from/to clipboard
|
|
|
|
Revision 1.41 2003/09/10 16:29:13 mattias
|
|
added Kylix 3 specials
|
|
|
|
Revision 1.40 2003/07/07 07:59:34 mattias
|
|
made Size_SourceIsInterface a flag
|
|
|
|
Revision 1.39 2003/07/02 10:02:51 mattias
|
|
fixed TPaintStruct
|
|
|
|
Revision 1.38 2003/07/01 09:29:51 mattias
|
|
attaching menuitems topdown
|
|
|
|
Revision 1.37 2003/05/19 08:16:33 mattias
|
|
fixed allocation of dc backcolor
|
|
|
|
Revision 1.36 2003/04/12 09:26:58 mattias
|
|
fixes for current fpc 1.1
|
|
|
|
Revision 1.35 2003/03/29 17:20:05 mattias
|
|
added TMemoScrollBar
|
|
|
|
Revision 1.34 2003/03/16 13:47:45 mattias
|
|
improved rpm building and added support for 1.0.7
|
|
|
|
Revision 1.33 2003/02/28 19:54:05 mattias
|
|
added ShowWindow
|
|
|
|
Revision 1.32 2003/02/26 12:44:52 mattias
|
|
readonly flag is now only saved if user set
|
|
|
|
Revision 1.31 2002/12/27 17:12:37 mattias
|
|
added more Delphi win32 compatibility functions
|
|
|
|
Revision 1.30 2002/12/25 13:30:36 mattias
|
|
added more windows funcs and fixed jump to compiler error end of file
|
|
|
|
Revision 1.29 2002/12/25 10:21:05 mattias
|
|
made Form.Close more Delphish, added some windows compatibility functions
|
|
|
|
Revision 1.28 2002/12/12 17:47:45 mattias
|
|
new constants for compatibility
|
|
|
|
Revision 1.27 2002/12/05 22:16:28 mattias
|
|
double byte char font started
|
|
|
|
Revision 1.26 2002/11/23 13:48:43 mattias
|
|
added Timer patch from Vincent Snijders
|
|
|
|
Revision 1.25 2002/11/22 09:59:29 mattias
|
|
removed duplicate PPoint
|
|
|
|
Revision 1.24 2002/10/26 10:21:01 lazarus
|
|
MG: broke actnlist <-> menus circle
|
|
|
|
Revision 1.23 2002/10/24 10:05:51 lazarus
|
|
MG: broke graphics.pp <-> clipbrd.pp circle
|
|
|
|
Revision 1.22 2002/10/15 17:09:53 lazarus
|
|
AJ: fixed GTK DrawText to use WordWrap, and add DT_EditControl
|
|
|
|
Revision 1.21 2002/10/12 16:36:39 lazarus
|
|
AJ: added new QueryUser/NotifyUser
|
|
|
|
Revision 1.20 2002/10/10 13:29:08 lazarus
|
|
AJ: added LoadStockPixmap routine & minor fixes to/for GNOMEInt
|
|
|
|
Revision 1.19 2002/10/04 14:24:14 lazarus
|
|
MG: added DrawItem to TComboBox/TListBox
|
|
|
|
Revision 1.18 2002/10/03 18:04:46 lazarus
|
|
MG: started customdrawitem
|
|
|
|
Revision 1.17 2002/09/27 20:52:22 lazarus
|
|
MWE: Applied patch from "Andrew Johnson" <aj_genius@hotmail.com>
|
|
|
|
Here is the run down of what it includes -
|
|
|
|
-Vasily Volchenko's Updated Russian Localizations
|
|
|
|
-improvements to GTK Styles/SysColors
|
|
-initial GTK Palette code - (untested, and for now useless)
|
|
|
|
-Hint Windows and Modal dialogs now try to stay transient to
|
|
the main program form, aka they stay on top of the main form
|
|
and usually minimize/maximize with it.
|
|
|
|
-fixes to Form BorderStyle code(tool windows needed a border)
|
|
|
|
-fixes DrawFrameControl DFCS_BUTTONPUSH to match Win32 better
|
|
when flat
|
|
|
|
-fixes DrawFrameControl DFCS_BUTTONCHECK to match Win32 better
|
|
and to match GTK theme better. It works most of the time now,
|
|
but some themes, noteably Default, don't work.
|
|
|
|
-fixes bug in Bitmap code which broke compiling in NoGDKPixbuf
|
|
mode.
|
|
|
|
-misc other cleanups/ fixes in gtk interface
|
|
|
|
-speedbutton's should now draw correctly when flat in Win32
|
|
|
|
-I have included an experimental new CheckBox(disabled by
|
|
default) which has initial support for cbGrayed(Tri-State),
|
|
and WordWrap, and misc other improvements. It is not done, it
|
|
is mostly a quick hack to test DrawFrameControl
|
|
DFCS_BUTTONCHECK, however it offers many improvements which
|
|
can be seen in cbsCheck/cbsCrissCross (aka non-themed) state.
|
|
|
|
-fixes Message Dialogs to more accurately determine
|
|
button Spacing/Size, and Label Spacing/Size based on current
|
|
System font.
|
|
-fixes MessageDlgPos, & ShowMessagePos in Dialogs
|
|
-adds InputQuery & InputBox to Dialogs
|
|
|
|
-re-arranges & somewhat re-designs Control Tabbing, it now
|
|
partially works - wrapping around doesn't work, and
|
|
subcontrols(Panels & Children, etc) don't work. TabOrder now
|
|
works to an extent. I am not sure what is wrong with my code,
|
|
based on my other tests at least wrapping and TabOrder SHOULD
|
|
work properly, but.. Anyone want to try and fix?
|
|
|
|
-SynEdit(Code Editor) now changes mouse cursor to match
|
|
position(aka over scrollbar/gutter vs over text edit)
|
|
|
|
-adds a TRegion property to Graphics.pp, and Canvas. Once I
|
|
figure out how to handle complex regions(aka polygons) data
|
|
properly I will add Region functions to the canvas itself
|
|
(SetClipRect, intersectClipRect etc.)
|
|
|
|
-BitBtn now has a Stored flag on Glyph so it doesn't store to
|
|
lfm/lrs if Glyph is Empty, or if Glyph is not bkCustom(aka
|
|
bkOk, bkCancel, etc.) This should fix most crashes with older
|
|
GDKPixbuf libs.
|
|
|
|
Revision 1.16 2002/09/12 05:56:15 lazarus
|
|
MG: gradient fill, minor issues from Andrew
|
|
|
|
Revision 1.15 2002/09/11 15:04:49 lazarus
|
|
MG: added stringhashlist.pas
|
|
|
|
Revision 1.14 2002/09/10 06:49:18 lazarus
|
|
MG: scrollingwincontrol from Andrew
|
|
|
|
Revision 1.13 2002/09/03 08:07:19 lazarus
|
|
MG: image support, TScrollBox, and many other things from Andrew
|
|
|
|
Revision 1.12 2002/08/27 06:40:50 lazarus
|
|
MG: ShortCut support for buttons from Andrew
|
|
|
|
Revision 1.11 2002/08/19 20:34:47 lazarus
|
|
MG: improved Clipping, TextOut, Polygon functions
|
|
|
|
Revision 1.10 2002/08/16 20:13:09 lazarus
|
|
MG: custom external tools are now shown in the menu
|
|
|
|
Revision 1.9 2002/08/15 15:46:48 lazarus
|
|
MG: added changes from Andrew (Clipping)
|
|
|
|
Revision 1.8 2002/07/29 13:39:07 lazarus
|
|
MG: removed ambigious TBitmap from LCLType and added Escape key to MessageDlgs
|
|
|
|
Revision 1.7 2002/06/04 15:17:22 lazarus
|
|
MG: improved TFont for XLFD font names
|
|
|
|
Revision 1.6 2002/05/28 19:39:45 lazarus
|
|
MG: added gtk rc file support and started stule dependent syscolors
|
|
|
|
Revision 1.5 2002/05/10 06:05:50 lazarus
|
|
MG: changed license to LGPL
|
|
|
|
Revision 1.4 2002/03/31 23:20:38 lazarus
|
|
MG: fixed initial size of TPage
|
|
|
|
Revision 1.3 2002/03/31 22:01:37 lazarus
|
|
MG: fixed unreleased/unpressed Ctrl/Alt/Shift
|
|
|
|
Revision 1.2 2002/03/16 21:40:54 lazarus
|
|
MG: reduced size+move messages between lcl and interface
|
|
|
|
Revision 1.1 2002/02/03 00:24:00 lazarus
|
|
TPanel implemented.
|
|
Basic graphic primitives split into GraphType package, so that we can
|
|
reference it from interface (GTK, Win32) units.
|
|
New Frame3d canvas method that uses native (themed) drawing (GTK only).
|
|
New overloaded Canvas.TextRect method.
|
|
LCLLinux and Graphics was split, so a bunch of files had to be modified.
|
|
|
|
Revision 1.14 2002/01/02 15:24:58 lazarus
|
|
MG: added TCanvas.Polygon and TCanvas.Polyline
|
|
|
|
Revision 1.13 2001/11/12 16:56:07 lazarus
|
|
MG: CLIPBOARD
|
|
|
|
Revision 1.12 2001/11/01 18:48:52 lazarus
|
|
Changed Application.Messagebox to use TMessageBox class.
|
|
Added icon images for mtError and mtConfirmation
|
|
Shane
|
|
|
|
Revision 1.11 2001/10/31 21:43:28 lazarus
|
|
Added code for TApplication to get it ready to accept exceptions.
|
|
Shane
|
|
|
|
Revision 1.10 2001/09/30 08:34:49 lazarus
|
|
MG: fixed mem leaks and fixed range check errors
|
|
|
|
Revision 1.9 2001/06/20 13:35:51 lazarus
|
|
MG: added VK_IRREGULAR and key grabbing
|
|
|
|
Revision 1.8 2001/06/15 10:31:06 lazarus
|
|
MG: set longstrings as default
|
|
|
|
Revision 1.7 2001/04/06 22:28:09 lazarus
|
|
* TTimer uses winapi interface now instead of sendmessage interface, stoppok
|
|
|
|
Revision 1.6 2001/03/26 14:58:31 lazarus
|
|
MG: setwindowpos + bugfixes
|
|
|
|
Revision 1.5 2001/02/01 16:45:19 lazarus
|
|
Started the code completion.
|
|
Shane
|
|
|
|
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
|
|
}
|