{ $Id$ } { /*************************************************************************** lMessages.pp ------------ Initial Revision : Wed Jun 30 CST 1999 Shane Miller ***************************************************************************/ ***************************************************************************** This file is part of the Lazarus Component Library (LCL) See the file COPYING.modifiedLGPL.txt, included in this distribution, for details about the license. ***************************************************************************** } unit LMessages; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Types, // LCL LCLType, WSReferences, // LazUtils GraphType {$ifdef WINDOWS} ,messages {$endif WINDOWS} ; const // TODO: review this list of messages and remove obsoleted/uneeded, move // internal gtk things (like LM_CONFIGUREEVENT) directly to gtk interface code //------------- // lcl messages // // This should be a list of LCL specific messages // RECEIVED from the interface, here are no defines // of messages send to the interface //------------- LM_USER = $400; // standard WM_USER value WM_USER = LM_USER; // reserve some space for LM_USER messages LM_LCL = LM_USER + $10000; LM_ACTIVATEITEM = LM_LCL + 04; // GTK internal. Should be removed later LM_CHANGED = LM_LCL + 05; LM_FOCUS = LM_LCL + 06; LM_CLICKED = LM_LCL + 07; LM_RELEASED = LM_LCL + 09; LM_ENTER = LM_LCL + 11; LM_LEAVE = LM_LCL + 12; LM_CHECKRESIZE = LM_LCL + 14; LM_SETEDITABLE = LM_LCL + 18; LM_MOVEWORD = LM_LCL + 19; LM_MOVEPAGE = LM_LCL + 20; LM_MOVETOROW = LM_LCL + 21; LM_MOVETOCOLUMN = LM_LCL + 22; LM_KILLCHAR = LM_LCL + 23; LM_KILLWORD = LM_LCL + 24; LM_KILLLINE = LM_LCL + 25; LM_CONFIGUREEVENT = LM_LCL + 31; // GTK internal. Should be removed later. LM_EXIT = LM_LCL + 60; LM_CLOSEQUERY = LM_LCL + 62; LM_DRAGSTART = LM_LCL + 63; LM_QUIT = LM_LCL + 65; LM_MONTHCHANGED = LM_LCL + 66; LM_YEARCHANGED = LM_LCL + 67; LM_DAYCHANGED = LM_LCL + 68; LM_MOUSEFIRST2 = LM_LCL + 70; LM_LBUTTONTRIPLECLK = LM_MOUSEFIRST2 + 0; LM_LBUTTONQUADCLK = LM_MOUSEFIRST2 + 1; LM_MBUTTONTRIPLECLK = LM_MOUSEFIRST2 + 2; LM_MBUTTONQUADCLK = LM_MOUSEFIRST2 + 3; LM_RBUTTONTRIPLECLK = LM_MOUSEFIRST2 + 4; LM_RBUTTONQUADCLK = LM_MOUSEFIRST2 + 5; LM_MOUSEENTER = LM_MOUSEFIRST2 + 6; LM_MOUSELEAVE = LM_MOUSEFIRST2 + 7; LM_XBUTTONTRIPLECLK = LM_MOUSEFIRST2 + 8; LM_XBUTTONQUADCLK = LM_MOUSEFIRST2 + 9; LM_MOUSELAST2 = LM_XBUTTONQUADCLK; // for triple and quad clicks see below LM_GRABFOCUS = LM_LCL + 80; LM_DRAWLISTITEM = LM_LCL + 81; LM_DEFERREDEDIT = LM_LCL + 82; // used in customdbcombobox // these IDs are reserved for internal messages in the interfaces LM_INTERFACEFIRST = LM_LCL + 99; LM_INTERFACELAST = LM_LCL + 199; LM_UNKNOWN = LM_INTERFACELAST + 1; LM_IM_COMPOSITION = LM_USER + $FFF0; // gtk IM // GTK IM Flags GTK_IM_FLAG_START = 1; GTK_IM_FLAG_PREEDIT = 2; GTK_IM_FLAG_END = 4; GTK_IM_FLAG_COMMIT = 8; GTK_IM_FLAG_REPLACE = 16; //------------- //end of messages that are sent to the interface //------------- //------------- // Windows Compatability} //------------- { System Menu Commands } SC_SIZE = $F000; // handling message WM_SYSCOMMAND SC_MOVE = $F010; // in certain places requires bit masking SC_MINIMIZE = $F020; // eg. (.CmdType and $FFF0) because SC_MAXIMIZE = $F030; // the four low-order bits of the wParam parameter SC_NEXTWINDOW = $F040; // are used internally by the system SC_PREVWINDOW = $F050; SC_CLOSE = $F060; SC_VSCROLL = $F070; SC_HSCROLL = $F080; SC_MOUSEMENU = $F090; SC_KEYMENU = $F100; SC_ARRANGE = $F110; SC_RESTORE = $F120; SC_TASKLIST = $F130; SC_SCREENSAVE = $F140; SC_HOTKEY = $F150; SC_DEFAULT = $F160; SC_MONITORPOWER = $F170; SC_CONTEXTHELP = $F180; SC_SEPARATOR = $F00F; //------------- // Messages //------------- LM_NULL = $0000; LM_CREATE = $0001; LM_DESTROY = $0002; LM_MOVE = $0003; LM_SIZE = $0005; LM_ACTIVATE = $0006; LM_SETFOCUS = $0007; LM_KILLFOCUS = $0008; LM_ENABLE = $000A; LM_GETTEXTLENGTH = $000E; LM_PAINT = $000F; LM_ERASEBKGND = $0014; LM_SHOWWINDOW = $0018; LM_CANCELMODE = $001F; LM_SETCURSOR = $0020; LM_DRAWITEM = $002B; LM_MEASUREITEM = $002C; LM_DELETEITEM = $002D; LM_VKEYTOITEM = $002E; LM_CHARTOITEM = $002F; LM_SETFONT = $0030; LM_COMPAREITEM = $0039; LM_WINDOWPOSCHANGING = $0046; LM_WINDOWPOSCHANGED = $0047; LM_NOTIFY = $004E; LM_HELP = $0053; LM_NOTIFYFORMAT = $0055; LM_CONTEXTMENU = $007B; LM_NCCALCSIZE = $0083; LM_NCHITTEST = $0084; LM_NCPAINT = $0085; LM_NCACTIVATE = $0086; LM_GETDLGCODE = $0087; LM_NCMOUSEMOVE = $00A0; LM_NCLBUTTONDOWN = $00A1; LM_NCLBUTTONUP = $00A2; LM_NCLBUTTONDBLCLK = $00A3; LM_KEYFIRST = $0100; LM_KEYDOWN = $0100; LM_KEYUP = $0101; LM_CHAR = $0102; LM_SYSKEYDOWN = $0104; LM_SYSKEYUP = $0105; LM_SYSCHAR = $0106; LM_KEYLAST = $0108; LM_COMMAND = $0111; LM_SYSCOMMAND = $0112; LM_TIMER = $0113; LM_HSCROLL = $0114; LM_VSCROLL = $0115; LM_CTLCOLORMSGBOX = $0132; LM_CTLCOLOREDIT = $0133; LM_CTLCOLORLISTBOX = $0134; LM_CTLCOLORBTN = $0135; LM_CTLCOLORDLG = $0136; LM_CTLCOLORSCROLLBAR = $0137; LM_CTLCOLORSTATIC = $0138; LM_MOUSEFIRST = $0200; LM_MOUSEMOVE = $0200; LM_LBUTTONDOWN = $0201; LM_LBUTTONUP = $0202; LM_LBUTTONDBLCLK = $0203; LM_RBUTTONDOWN = $0204; LM_RBUTTONUP = $0205; LM_RBUTTONDBLCLK = $0206; LM_MBUTTONDOWN = $0207; LM_MBUTTONUP = $0208; LM_MBUTTONDBLCLK = $0209; LM_MOUSEWHEEL = $020A; LM_XBUTTONDOWN = $020B; LM_XBUTTONUP = $020C; LM_XBUTTONDBLCLK = $020D; LM_MOUSEHWHEEL = $020E; LM_MOUSELAST = $020E; LM_PARENTNOTIFY = $0210; LM_CAPTURECHANGED = $0215; LM_DROPFILES = $0233; LM_SELCHANGE = $0234; LM_DPICHANGED = $02E0; LM_CUT = $0300; LM_COPY = $0301; LM_PASTE = $0302; LM_CLEAR = $0303; // _TASKDIALOG_MESSAGES enum TDM_NAVIGATE_PAGE = LM_USER+101; TDM_CLICK_BUTTON = LM_USER+102; // wParam = Button ID TDM_SET_MARQUEE_PROGRESS_BAR = LM_USER+103; // wParam = 0 (nonMarque) wParam != 0 (Marquee) TDM_SET_PROGRESS_BAR_STATE = LM_USER+104; // wParam = new progress state TDM_SET_PROGRESS_BAR_RANGE = LM_USER+105; // lParam = MAKELPARAM(nMinRange, nMaxRange) TDM_SET_PROGRESS_BAR_POS = LM_USER+106; // wParam = new position TDM_SET_PROGRESS_BAR_MARQUEE = LM_USER+107; // wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints) TDM_SET_ELEMENT_TEXT = LM_USER+108; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR) TDM_CLICK_RADIO_BUTTON = LM_USER+110; // wParam = Radio Button ID TDM_ENABLE_BUTTON = LM_USER+111; // lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID TDM_ENABLE_RADIO_BUTTON = LM_USER+112; // lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID TDM_CLICK_VERIFICATION = LM_USER+113; // wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus) TDM_UPDATE_ELEMENT_TEXT = LM_USER+114; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR) TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = LM_USER+115; // wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required) TDM_UPDATE_ICON = LM_USER+116; // wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise) {$I controlconsts.inc} //------------- // End of Windows Compatability and messages //------------- type { LCL Messages } TLMDrawItems = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Ctl: HWND; DrawItemStruct: PDrawItemStruct; Result: LRESULT; end; TLMDrawListItem = record // message from the interface to the LCL Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Unused: PtrInt; DrawListItemStruct : PDrawListItemStruct; Result: LRESULT; end; TLMMeasureItem = record // message from the interface to the LCL Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} idCtl: PtrUint; MeasureItemStruct: PMeasureItemStruct; Result: LRESULT; end; {$ifndef WINDOWS} TLMNoParams = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Unused: array[0..1] of PtrInt; Result: LRESULT; end; {$else} TLMNoParams = TWMNoParams; {$endif} TLMEraseBkgnd = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} DC: HDC; Unused: PtrInt; Result: LRESULT; end; TLMGetText = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} TextMax: PtrInt; Text: PChar; Result: LRESULT; end; TLMGetTextLength = TLMNoParams; TLMKey = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} {$IFDEF FPC_LITTLE_ENDIAN} CharCode: Word; // VK_XXX constants as TLMKeyDown/Up, ascii if TLMChar Unused: Word; {$ELSE} Unused: Word; CharCode: Word; // VK_XXX constants as TLMKeyDown/Up, ascii if TLMChar {$ENDIF} {$ifdef cpu64} Unused2 : Longint; {$endif cpu64} KeyData: PtrInt; Result: LRESULT; end; TLMChar = TLMKey; TLMKeyDown = TLMKey; TLMKeyUp = TLMKey; TLMSysChar = TLMKey; TLMSysKeyDown = TLMKey; TLMSysKeyUp = TLMKey; TCMWantSpecialKey = TLMKey; TLMGetDlgCode = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} {$IFDEF FPC_LITTLE_ENDIAN} CharCode: Word; // VK_XXX constants Unused: Word; {$ELSE} Unused: Word; CharCode: Word; // VK_XXX constants {$ENDIF} UnusedL: LPARAM; Result: LRESULT; end; TLMCut = TLMNoParams; TLMCopy = TLMNoParams; TLMPaste = TLMNoParams; TLMSetCursor = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} CursorWnd: HWND; case Boolean of False: ( HitTest: SmallInt; MouseMsg: Word; ); True: ( Dummy: LPARAM; Result: LRESULT; ); end; TLMMouse = record Msg : Cardinal; Keys: PtrInt; case Integer of 0: ( XPos: SmallInt; YPos: SmallInt); 1: ( Pos : TSmallPoint); 2: ( Dummy: LPARAM; // needed for64 bit alignment Result: LRESULT); end; TLMMouseMove = TLMMouse; TLMMove = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} MoveType: PtrInt; // 0 = update, 1 = force RequestAlign, // 128 = Source is Interface (Widget has moved) case Integer of 0: ( XPos: Smallint; YPos: Smallint); 1: ( Pos : TSmallPoint); 2: ( Dummy: LPARAM; // needed for64 bit alignment Result: LRESULT); end; // Active state const WA_INACTIVE = 0; WA_ACTIVE = 1; WA_CLICKACTIVE = 2; type TLMActivate = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} {$IFDEF FPC_LITTLE_ENDIAN} Active: Word; Minimized: WordBool; {$ELSE} Minimized: WordBool; Active: Word; {$ENDIF} {$ifdef cpu64} Unused : Longint; {$endif cpu64} ActiveWindow: HWND; Result: LRESULT; end; TLMNCActivate = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Active: LongBool; {$ifdef cpu64} Unused2 : Longint; {$endif cpu64} Unused: LPARAM; Result: LRESULT; end; TLMNotify = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} IDCtrl: PtrInt; NMHdr: PNMHdr; Result: LRESULT; end; TLMNotifyFormat = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} From: HWND; Command: LPARAM; Result: LRESULT; end; TLMPaint = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} DC: HDC; PaintStruct: PPaintStruct; Result: LRESULT; end; PWindowPos = ^TWindowPos; tagWINDOWPOS = record hwnd: TLCLHandle; hwndInsertAfter: TLCLHandle; x: Integer; y: Integer; cx: Integer; cy: Integer; flags: Cardinal; end; TWindowPos = tagWINDOWPOS; WINDOWPOS = tagWINDOWPOS; TLMWindowPosMsg = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Unused: WPARAM; WindowPos: PWindowPos; Result: LPARAM; end; TLMWindowPosChanged = TLMWindowPosMsg; TLMWindowPosChanging = TLMWindowPosMsg; {PNCCalcSizeParams} PNCCalcSizeParams = ^TNCCalcSizeParams; tagNCCalcSize_Params = record rgrc: array[0..2] of TRect; lpPos: PWindowPos; end; TNCCalcSizeParams = tagNCCalcSize_Params; ncCalcSizeParams = tagNCCalcSize_Params; TLMNCCalcSize = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} CalcValidRects: LongBool; {$ifdef cpu64} Unused : Longint; {$endif cpu64} CalcSize_Params: PNCCalcSizeParams; Result: LResult; end; TLMSysColorChange = TLMNoParams; TLMSysCommand = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} case CmdType: PtrInt of SC_HOTKEY: ( ActivateWnd: HWND; Result: LRESULT); SC_KEYMENU: ( {$IFDEF FPC_LITTLE_ENDIAN} Key: Word); {$ELSE} Unused: Word; Key: Word); {$ENDIF} SC_CLOSE, SC_HSCROLL, SC_MAXIMIZE, SC_MINIMIZE, SC_MOUSEMENU, SC_MOVE, SC_NEXTWINDOW, SC_PREVWINDOW, SC_RESTORE, SC_SCREENSAVE, SC_SIZE, SC_TASKLIST, SC_VSCROLL: ( XPos: Smallint; YPos: Smallint); end; TLMSysDeadChar = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} {$IFDEF FPC_LITTLE_ENDIAN} CharCode: Word; Unused: Word; {$ELSE} Unused: Word; CharCode: Word; {$ENDIF} {$ifdef cpu64} Unused2 : Longint; {$endif cpu64} KeyData: LPARAM; Result: LRESULT; end; TLMSystemError = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} {$IFDEF FPC_LITTLE_ENDIAN} ErrSpec: Word; Unused1 : Word; {$ELSE} Unused1 : Word; ErrSpec: Word; {$ENDIF} {$ifdef cpu64} Unused2 : Longint; {$endif cpu64} Unused: LPARAM; Result: LRESULT; end; TLMTimeChange = TLMNoParams; // todo: remove TLMSetText TLMSetText = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Unused: WPARAM; Text: PChar; Result: LRESULT; end; // A little similar to TCMMouseWheel from Delphi, // so be very careful when changing because some // ported components depend on that PLMMouseEvent = ^TLMMouseEvent; TLMMouseEvent = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} {$IFDEF FPC_LITTLE_ENDIAN} Button: Word; // 1=left, 2=right, 3=middle WheelDelta: SmallInt; // -1 for up, 1 for down {$ELSE} WheelDelta: SmallInt; // -1 for up, 1 for down Button: Word; // 1=left, 2=right, 3=middle {$ENDIF} {$ifdef cpu64} Unused1 : Longint; {$endif cpu64} X: Smallint; // under gtk this is longint Y: Smallint; // ditto {$ifdef cpu64} Unused2 : Longint; {$endif cpu64} Result: LRESULT; // to fit std message size UserData: pointer; // used under gtk State: TShiftState; // in win is the equivalent of button end; TLMLButtonDown = TLMMouse; TLMRButtonDown = TLMMouse; TLMMButtonDown = TLMMouse; TLMXButtonDown = TLMMouse; TLMLButtonDblClk = TLMMouse; TLMRButtonDblClk = TLMMouse; TLMMButtonDblClk = TLMMouse; TLMXButtonDblClk = TLMMouse; TLMLButtonTripleClk = TLMMouse; TLMRButtonTripleClk = TLMMouse; TLMMButtonTripleClk = TLMMouse; TLMXButtonTripleClk = TLMMouse; TLMLButtonQuadClk = TLMMouse; TLMRButtonQuadClk = TLMMouse; TLMMButtonQuadClk = TLMMouse; TLMXButtonQuadClk = TLMMouse; TLMLButtonUp = TLMMouse; TLMRButtonUp = TLMMouse; TLMMButtonUp = TLMMouse; TLMXButtonUp = TLMMouse; TLastMouseInfo = record WinHandle: TLCLHandle; WinControl: TObject; // can be nil in special cases MousePos: TPoint; Time: QWord; ClickCount: Integer; Button: Byte; // 1=left, 2=right, 3=middle, 4=Extra Down: Boolean; end; TLMSetFocus = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} FocusedWnd: HWND; Unused: LPARAM; Result: LRESULT; end; {$ifndef windows} TLMSize = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} SizeType: PtrInt; // see LCLType.pp (e.g. Size_Restored) Width: Word; Height: Word; {$ifdef cpu64} Unused : Longint; {$endif cpu64} Result: LResult; End; {$else} TLMSize = TWMSize; {$endif} PLMessage = ^TLMessage; {$ifndef windows} TLMessage = record Msg : Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} case Integer of 0 : ( WParam: LclType.WPARAM; LParam: LclType.LPARAM; Result: LclType.LRESULT); {$IFNDEF CPU64} // on a 64 bit platform these make no sense 1 : ( {$IFDEF FPC_LITTLE_ENDIAN} WParamLo: Word; WParamHi: Word; LParamLo: Word; LParamHi: Word; ResultLo: Word; ResultHi: Word); {$ELSE} WParamHi: Word; WParamLo: Word; LParamHi: Word; LParamLo: Word; ResultHi: Word; ResultLo: Word); {$ENDIF} {$endif} end; {$else} TLMessage = TMessage; {$endif} TLMEnter = TLMNoParams; TLMExit = TLMNoParams; // MWE: TLMScroll has not the same size as the VCL/Winapi counterpart. // IMO we don't have to force all widgetsets to be compatible in a shortcoming // in the win32 API. // So POS: SmallInt -> LongInt and a win32compatible smallpos is added // Due to this, the record is a LongInt to large. TLMScroll = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} {$IFDEF FPC_LITTLE_ENDIAN} ScrollCode: SmallInt; // SB_xxx SmallPos: SmallInt; {$ELSE} SmallPos: SmallInt; ScrollCode: SmallInt; // SB_xxx {$ENDIF} {$ifdef cpu64} Unused : Longint; {$endif cpu64} ScrollBar: HWND; Result: LRESULT; // See remark Pos: LongInt; // end; TLMHScroll = TLMScroll; TLMVScroll = TLMScroll; {$ifndef windows} TLMShowWindow = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Show: LongBool; {$ifdef cpu64} Unused : Longint; {$endif cpu64} Status: LPARAM; Result: LRESULT; end; {$else} TLMShowWindow = TWMShowWindow; {$endif} {$ifndef windows} TLMKILLFOCUS = TLMSetFocus; {$else} TLMKillFocus = TWMKillFocus; {$endif} TLMNCHITTEST = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Unused: WPARAM; case Integer of 0 : ( XPos : SmallInt; YPos : SmallInt); 1 : ( Pos : TSmallPoint); 2: ( Dummy: LPARAM; // needed for64 bit alignment Result: LRESULT); end; TLMDestroy = TLMNoParams; TLMCommand = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} {$IFDEF FPC_LITTLE_ENDIAN} ItemID: Word; NotifyCode: Word; {$ELSE} NotifyCode: Word; ItemID: Word; {$ENDIF} {$ifdef cpu64} Unused : Longint; {$endif cpu64} Ctl: HWND; Result: LRESULT; end; TLMContextMenu = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} hWnd: HWND; case Integer of 0: ( XPos: Smallint; YPos: Smallint ); 1: ( Pos: TSmallPoint; ); 2: ( Dummy: LPARAM; // needed for64 bit alignment Result: LResult); end; TLMHelp = record Msg: Cardinal; {$ifdef cpu64} UnusedMsg: Cardinal; {$endif} Unused: LCLType.WPARAM; HelpInfo: PHelpInfo; Result: LRESULT; end; { Combo Box Notification Codes } const CBN_ERRSPACE = (-1); CBN_SELCHANGE = 1; CBN_DBLCLK = 2; CBN_SETFOCUS = 3; CBN_KILLFOCUS = 4; CBN_EDITCHANGE = 5; CBN_EDITUPDATE = 6; CBN_DROPDOWN = 7; CBN_CLOSEUP = 8; CBN_SELENDOK = 9; CBN_SELENDCANCEL = 10; function GetMessageName(const AMessage: Integer): String; Implementation function GetMessageName(const AMessage: Integer): String; begin case AMessage of //------------- // lcl messages // // This should be a list of LCL specific messages // RECEIVED from the interface, here are no defines // of messages send to the interface //------------- // LM_NULL LM_CREATE : Result := 'LM_CREATE'; LM_DESTROY : Result := 'LM_DESTROY'; LM_MOVE : Result := 'LM_MOVE'; LM_SIZE : Result := 'LM_SIZE'; LM_ACTIVATE : Result := 'LM_ACTIVATE'; LM_SETFOCUS : Result := 'LM_SETFOCUS'; LM_KILLFOCUS : Result := 'LM_KILLFOCUS'; LM_ENABLE : Result := 'LM_ENABLE'; LM_GETTEXTLENGTH : Result := 'LM_GETTEXTLENGTH'; LM_PAINT : Result := 'LM_PAINT'; LM_ERASEBKGND : Result := 'LM_ERASEBKGND'; LM_SHOWWINDOW : Result := 'LM_SHOWWINDOW'; LM_CANCELMODE : Result := 'LM_CANCELMODE'; LM_SETCURSOR : Result := 'LM_SETCURSOR'; LM_DRAWITEM : Result := 'LM_DRAWITEM'; LM_MEASUREITEM : Result := 'LM_MEASUREITEM'; LM_DELETEITEM : Result := 'LM_DELETEITEM'; LM_VKEYTOITEM : Result := 'LM_VKEYTOITEM'; LM_CHARTOITEM : Result := 'LM_CHARTOITEM'; LM_SETFONT : Result := 'LM_SETFONT'; LM_COMPAREITEM : Result := 'LM_COMPAREITEM'; LM_WINDOWPOSCHANGING : Result := 'LM_WINDOWPOSCHANGING'; LM_WINDOWPOSCHANGED : Result := 'LM_WINDOWPOSCHANGED'; LM_NOTIFY : Result := 'LM_NOTIFY'; LM_HELP : Result := 'LM_HELP'; LM_NOTIFYFORMAT : Result := 'LM_NOTIFYFORMAT'; LM_CONTEXTMENU : Result := 'LM_CONTEXTMENU'; LM_NCCALCSIZE : Result := 'LM_NCCALCSIZE'; LM_NCHITTEST : Result := 'LM_NCHITTEST'; LM_NCPAINT : Result := 'LM_NCPAINT'; LM_NCACTIVATE : Result := 'LM_NCACTIVATE'; LM_GETDLGCODE : Result := 'LM_GETDLGCODE'; LM_NCMOUSEMOVE : Result := 'LM_NCMOUSEMOVE'; LM_NCLBUTTONDOWN : Result := 'LM_NCLBUTTONDOWN'; LM_NCLBUTTONUP : Result := 'LM_NCLBUTTONUP'; LM_NCLBUTTONDBLCLK : Result := 'LM_NCLBUTTONDBLCLK'; // LM_KEYFIRST LM_KEYDOWN : Result := 'LM_KEYDOWN'; LM_KEYUP : Result := 'LM_KEYUP'; LM_CHAR : Result := 'LM_CHAR'; LM_SYSKEYDOWN : Result := 'LM_SYSKEYDOWN'; LM_SYSKEYUP : Result := 'LM_SYSKEYUP'; LM_SYSCHAR : Result := 'LM_SYSCHAR'; // LM_KEYLAST LM_COMMAND : Result := 'LM_COMMAND'; LM_SYSCOMMAND : Result := 'LM_SYSCOMMAND'; LM_TIMER : Result := 'LM_TIMER'; LM_HSCROLL : Result := 'LM_HSCROLL'; LM_VSCROLL : Result := 'LM_VSCROLL'; LM_CTLCOLORMSGBOX : Result := 'LM_CTLCOLORMSGBOX'; LM_CTLCOLOREDIT : Result := 'LM_CTLCOLOREDIT'; LM_CTLCOLORLISTBOX : Result := 'LM_CTLCOLORLISTBOX'; LM_CTLCOLORBTN : Result := 'LM_CTLCOLORBTN'; LM_CTLCOLORDLG : Result := 'LM_CTLCOLORDLG'; LM_CTLCOLORSCROLLBAR : Result := 'LM_CTLCOLORSCROLLBAR'; LM_CTLCOLORSTATIC : Result := 'LM_CTLCOLORSTATIC'; // LM_MOUSEFIRST LM_MOUSEMOVE : Result := 'LM_MOUSEMOVE'; LM_LBUTTONDOWN : Result := 'LM_LBUTTONDOWN'; LM_LBUTTONUP : Result := 'LM_LBUTTONUP'; LM_LBUTTONDBLCLK : Result := 'LM_LBUTTONDBLCLK'; LM_RBUTTONDOWN : Result := 'LM_RBUTTONDOWN'; LM_RBUTTONUP : Result := 'LM_RBUTTONUP'; LM_RBUTTONDBLCLK : Result := 'LM_RBUTTONDBLCLK'; LM_MBUTTONDOWN : Result := 'LM_MBUTTONDOWN'; LM_MBUTTONUP : Result := 'LM_MBUTTONUP'; LM_MBUTTONDBLCLK : Result := 'LM_MBUTTONDBLCLK'; LM_MOUSEWHEEL : Result := 'LM_MOUSEWHEEL'; LM_XBUTTONDOWN : Result := 'LM_XBUTTONDOWN'; LM_XBUTTONUP : Result := 'LM_XBUTTONUP'; LM_XBUTTONDBLCLK : Result := 'LM_XBUTTONDBLCLK'; LM_MOUSEHWHEEL : Result := 'LM_MOUSEHWHEEL'; // LM_MOUSELAST LM_PARENTNOTIFY : Result := 'LM_PARENTNOTIFY'; LM_CAPTURECHANGED : Result := 'LM_CAPTURECHANGED'; LM_DROPFILES : Result := 'LM_DROPFILES'; LM_SELCHANGE : Result := 'LM_SELCHANGE'; LM_DPICHANGED : Result := 'LM_DPICHANGED'; LM_CUT : Result := 'LM_CUT'; LM_COPY : Result := 'LM_COPY'; LM_PASTE : Result := 'LM_PASTE'; LM_CLEAR : Result := 'LM_CLEAR'; // lcl messages LM_USER : Result := 'LM_USER'; LM_LCL : Result := 'LM_LCL'; LM_ACTIVATEITEM : Result := 'LM_ACTIVATEITEM'; LM_CHANGED : Result := 'LM_CHANGED'; LM_FOCUS : Result := 'LM_FOCUS'; LM_CLICKED : Result := 'LM_CLICKED'; LM_RELEASED : Result := 'LM_RELEASED'; LM_ENTER : Result := 'LM_ENTER'; LM_LEAVE : Result := 'LM_LEAVE'; LM_CHECKRESIZE : Result := 'LM_CHECKRESIZE'; LM_SETEDITABLE : Result := 'LM_SETEDITABLE'; LM_MOVEWORD : Result := 'LM_MOVEWORD'; LM_MOVEPAGE : Result := 'LM_MOVEPAGE'; LM_MOVETOROW : Result := 'LM_MOVETOROW'; LM_MOVETOCOLUMN : Result := 'LM_MOVETOCOLUMN'; LM_KILLCHAR : Result := 'LM_KILLCHAR'; LM_KILLWORD : Result := 'LM_KILLWORD'; LM_KILLLINE : Result := 'LM_KILLLINE'; LM_CONFIGUREEVENT : Result := 'LM_CONFIGUREEVENT'; LM_EXIT : Result := 'LM_EXIT'; LM_CLOSEQUERY : Result := 'LM_CLOSEQUERY'; LM_DRAGSTART : Result := 'LM_DRAGSTART'; LM_QUIT : Result := 'LM_QUIT'; LM_MONTHCHANGED : Result := 'LM_MONTHCHANGED'; LM_YEARCHANGED : Result := 'LM_YEARCHANGED'; LM_DAYCHANGED : Result := 'LM_DAYCHANGED'; // LM_MOUSEFIRST2 LM_LBUTTONTRIPLECLK : Result := 'LM_LBUTTONTRIPLECLK'; LM_LBUTTONQUADCLK : Result := 'LM_LBUTTONQUADCLK'; LM_MBUTTONTRIPLECLK : Result := 'LM_MBUTTONTRIPLECLK'; LM_MBUTTONQUADCLK : Result := 'LM_MBUTTONQUADCLK'; LM_RBUTTONTRIPLECLK : Result := 'LM_RBUTTONTRIPLECLK'; LM_RBUTTONQUADCLK : Result := 'LM_RBUTTONQUADCLK'; LM_MOUSEENTER : Result := 'LM_MOUSEENTER'; LM_MOUSELEAVE : Result := 'LM_MOUSELEAVE'; LM_XBUTTONTRIPLECLK : Result := 'LM_XBUTTONTRIPLECLK'; LM_XBUTTONQUADCLK : Result := 'LM_XBUTTONQUADCLK'; // LM_MOUSELAST2 LM_GRABFOCUS : Result := 'LM_GRABFOCUS'; LM_DRAWLISTITEM : Result := 'LM_DRAWLISTITEM'; // these IDs are reserved for internal messages in the interfaces LM_INTERFACEFIRST : Result := 'LM_INTERFACEFIRST'; LM_INTERFACELAST : Result := 'LM_INTERFACELAST'; LM_UNKNOWN : Result := 'LM_UNKNOWN'; CM_ACTIVATE : Result := 'CM_ACTIVATE'; CM_DEACTIVATE : Result := 'CM_DEACTIVATE'; // CM_GOTFOCUS : Result := 'CM_GOTFOCUS'; // CM_LOSTFOCUS : Result := 'CM_LOSTFOCUS'; // CM_CANCELMODE : Result := 'CM_CANCELMODE'; // CM_DIALOGKEY : Result := 'CM_DIALOGKEY'; // CM_DIALOGCHAR : Result := 'CM_DIALOGCHAR'; CM_FOCUSCHANGED : Result := 'CM_FOCUSCHANGED'; CM_PARENTFONTCHANGED : Result := 'CM_PARENTFONTCHANGED'; CM_PARENTCOLORCHANGED : Result := 'CM_PARENTCOLORCHANGED'; CM_HITTEST : Result := 'CM_HITTEST'; CM_VISIBLECHANGED : Result := 'CM_VISIBLECHANGED'; CM_ENABLEDCHANGED : Result := 'CM_ENABLEDCHANGED'; CM_COLORCHANGED : Result := 'CM_COLORCHANGED'; CM_FONTCHANGED : Result := 'CM_FONTCHANGED'; CM_CURSORCHANGED : Result := 'CM_CURSORCHANGED'; // CM_CTL3DCHANGED : Result := 'CM_CTL3DCHANGED'; // CM_PARENTCTL3DCHANGED : Result := 'CM_PARENTCTL3DCHANGED'; CM_TEXTCHANGED : Result := 'CM_TEXTCHANGED'; CM_MOUSEENTER : Result := 'CM_MOUSEENTER'; CM_MOUSELEAVE : Result := 'CM_MOUSELEAVE'; CM_MENUCHANGED : Result := 'CM_MENUCHANGED'; // CM_APPKEYDOWN : Result := 'CM_APPKEYDOWN'; CM_APPSYSCOMMAND : Result := 'CM_APPSYSCOMMAND'; CM_BUTTONPRESSED : Result := 'CM_BUTTONPRESSED'; CM_SHOWINGCHANGED : Result := 'CM_SHOWINGCHANGED'; CM_ENTER : Result := 'CM_ENTER'; CM_EXIT : Result := 'CM_EXIT'; CM_DESIGNHITTEST : Result := 'CM_DESIGNHITTEST'; CM_ICONCHANGED : Result := 'CM_ICONCHANGED'; CM_WANTSPECIALKEY : Result := 'CM_WANTSPECIALKEY'; // CM_INVOKEHELP : Result := 'CM_INVOKEHELP'; // CM_WINDOWHOOK : Result := 'CM_WINDOWHOOK'; CM_RELEASE : Result := 'CM_RELEASE'; CM_SHOWHINTCHANGED : Result := 'CM_SHOWHINTCHANGED'; CM_PARENTSHOWHINTCHANGED : Result := 'CM_PARENTSHOWHINTCHANGED'; // CM_SYSCOLORCHANGE : Result := 'CM_SYSCOLORCHANGE'; // CM_WININICHANGE : Result := 'CM_WININICHANGE'; CM_FONTCHANGE : Result := 'CM_FONTCHANGE'; // CM_TIMECHANGE : Result := 'CM_TIMECHANGE'; CM_TABSTOPCHANGED : Result := 'CM_TABSTOPCHANGED'; CM_UIACTIVATE : Result := 'CM_UIACTIVATE'; // CM_UIDEACTIVATE : Result := 'CM_UIDEACTIVATE'; // CM_DOCWINDOWACTIVATE : Result := 'CM_DOCWINDOWACTIVATE'; CM_CONTROLLISTCHANGE : Result := 'CM_CONTROLLISTCHANGE'; CM_GETDATALINK : Result := 'CM_GETDATALINK'; CM_CHILDKEY : Result := 'CM_CHILDKEY'; // CM_DRAG : Result := 'CM_DRAG'; CM_HINTSHOW : Result := 'CM_HINTSHOW'; // CM_DIALOGHANDLE : Result := 'CM_DIALOGHANDLE'; // CM_ISTOOLCONTROL : Result := 'CM_ISTOOLCONTROL'; // CM_RECREATEWND : Result := 'CM_RECREATEWND'; // CM_INVALIDATE : Result := 'CM_INVALIDATE'; CM_SYSFONTCHANGED : Result := 'CM_SYSFONTCHANGED'; CM_CONTROLCHANGE : Result := 'CM_CONTROLCHANGE'; CM_CHANGED : Result := 'CM_CHANGED'; // CM_DOCKCLIENT : Result := 'CM_DOCKCLIENT'; // CM_UNDOCKCLIENT : Result := 'CM_UNDOCKCLIENT'; // CM_FLOAT : Result := 'CM_FLOAT'; CM_BORDERCHANGED : Result := 'CM_BORDERCHANGED'; CM_BIDIMODECHANGED : Result := 'CM_BIDIMODECHANGED'; CM_PARENTBIDIMODECHANGED : Result := 'CM_PARENTBIDIMODECHANGED'; CM_ALLCHILDRENFLIPPED : Result := 'CM_ALLCHILDRENFLIPPED'; CM_ACTIONUPDATE : Result := 'CM_ACTIONUPDATE'; CM_ACTIONEXECUTE : Result := 'CM_ACTIONEXECUTE'; CM_HINTSHOWPAUSE : Result := 'CM_HINTSHOWPAUSE'; CM_DOCKNOTIFICATION : Result := 'CM_DOCKNOTIFICATION'; CM_MOUSEWHEEL : Result := 'CM_MOUSEWHEEL'; // CM_ISSHORTCUT : Result := 'CM_ISSHORTCUT'; // CM_UPDATEACTIONS : Result := 'CM_UPDATEACTIONS'; // CM_INVALIDATEDOCKHOST : Result := 'CM_INVALIDATEDOCKHOST'; // CM_SETACTIVECONTROL : Result := 'CM_SETACTIVECONTROL'; // CM_POPUPHWNDDESTROY : Result := 'CM_POPUPHWNDDESTROY'; // CM_CREATEPOPUP : Result := 'CM_CREATEPOPUP'; // CM_DESTROYHANDLE : Result := 'CM_DESTROYHANDLE'; // CM_MOUSEACTIVATE : Result := 'CM_MOUSEACTIVATE'; // CM_CONTROLLISTCHANGING : Result := 'CM_CONTROLLISTCHANGING'; // CM_BUFFEREDPRINTCLIENT : Result := 'CM_BUFFEREDPRINTCLIENT'; // CM_UNTHEMECONTROL : Result := 'CM_UNTHEMECONTROL'; CM_DOUBLEBUFFEREDCHANGED : Result := 'CM_DOUBLEBUFFEREDCHANGED'; CM_PARENTDOUBLEBUFFEREDCHANGED : Result := 'CM_PARENTDOUBLEBUFFEREDCHANGED'; // CM_THEMECHANGED : Result := 'CM_THEMECHANGED'; // CM_GESTURE : Result := 'CM_GESTURE'; // CM_CUSTOMGESTURESCHANGED : Result := 'CM_CUSTOMGESTURESCHANGED'; // CM_GESTUREMANAGERCHANGED : Result := 'CM_GESTUREMANAGERCHANGED'; // CM_STANDARDGESTURESCHANGED : Result := 'CM_STANDARDGESTURESCHANGED'; // CM_INPUTLANGCHANGE : Result := 'CM_INPUTLANGCHANGE'; // CM_TABLETOPTIONSCHANGED : Result := 'CM_TABLETOPTIONSCHANGED'; // CM_PARENTTABLETOPTIONSCHANGED : Result := 'CM_PARENTTABLETOPTIONSCHANGED'; CM_APPSHOWBTNGLYPHCHANGED : Result := 'CM_APPSHOWBTNGLYPHCHANGED'; CM_APPSHOWMENUGLYPHCHANGED : Result := 'CM_APPSHOWMENUGLYPHCHANGED'; CN_CHARTOITEM : Result := 'CN_CHARTOITEM'; CN_COMMAND : Result := 'CN_COMMAND'; CN_COMPAREITEM : Result := 'CN_COMPAREITEM'; CN_CTLCOLORBTN : Result := 'CN_CTLCOLORBTN'; CN_CTLCOLORDLG : Result := 'CN_CTLCOLORDLG'; CN_CTLCOLOREDIT : Result := 'CN_CTLCOLOREDIT'; CN_CTLCOLORLISTBOX : Result := 'CN_CTLCOLORLISTBOX'; CN_CTLCOLORMSGBOX : Result := 'CN_CTLCOLORMSGBOX'; CN_CTLCOLORSCROLLBAR : Result := 'CN_CTLCOLORSCROLLBAR'; CN_CTLCOLORSTATIC : Result := 'CN_CTLCOLORSTATIC'; CN_DELETEITEM : Result := 'CN_DELETEITEM'; CN_DRAWITEM : Result := 'CN_DRAWITEM'; CN_HSCROLL : Result := 'CN_HSCROLL'; CN_MEASUREITEM : Result := 'CN_MEASUREITEM'; CN_PARENTNOTIFY : Result := 'CN_PARENTNOTIFY'; CN_VKEYTOITEM : Result := 'CN_VKEYTOITEM'; CN_VSCROLL : Result := 'CN_VSCROLL'; CN_KEYDOWN : Result := 'CN_KEYDOWN'; CN_KEYUP : Result := 'CN_KEYUP'; CN_CHAR : Result := 'CN_CHAR'; CN_SYSKEYUP : Result := 'CN_SYSKEYUP'; CN_SYSKEYDOWN : Result := 'CN_SYSKEYDOWN'; CN_SYSCHAR : Result := 'CN_SYSCHAR'; CN_NOTIFY : Result := 'CN_NOTIFY'; else Result := Format('Unknown message 0x%x (%d)', [AMessage, AMessage]); end; end; end.