Explorar o código

+ added the win16api window creation/destroy functions

git-svn-id: trunk@31733 -
nickysn %!s(int64=10) %!d(string=hai) anos
pai
achega
e01d57cea3
Modificáronse 3 ficheiros con 177 adicións e 0 borrados
  1. 7 0
      rtl/win16/win31.pp
  2. 37 0
      rtl/win16/winprocsh.inc
  3. 133 0
      rtl/win16/wintypes.inc

+ 7 - 0
rtl/win16/win31.pp

@@ -508,6 +508,13 @@ const
 { Class field offsets for GetClassLong() and GetClassWord() }
   GCW_ATOM = (-32);
 
+{ Window creation/destroy }
+
+{ Window Styles }
+  WS_EX_TOPMOST     = $00000008;
+  WS_EX_ACCEPTFILES = $00000010;
+  WS_EX_TRANSPARENT = $00000020;
+
 function GetFreeSystemResources(SysResource: UINT): UINT; external 'USER';
 
 procedure LogError(err: UINT; lpInfo: FarPointer); external 'KERNEL';

+ 37 - 0
rtl/win16/winprocsh.inc

@@ -811,3 +811,40 @@ function GetClassWord(hwnd: HWND; offset: SmallInt): WORD; external 'USER';
 function SetClassWord(hwnd: HWND; nIndex: SmallInt; wNewWord: WORD): WORD; external 'USER';
 function GetClassLong(hwnd: HWND; offset: SmallInt): LONG; external 'USER';
 function SetClassLong(hwnd: HWND; nIndex: SmallInt; nVal: LONG): LONG; external 'USER';
+
+{ Window creation/destroy }
+
+function IsWindow(hwnd: HWND): BOOL; external 'USER';
+
+function CreateWindowEx(dwExStyle: DWORD; lpszClassName, lpszWindowName: LPCSTR; dwStyle: DWORD; x, y, nWidth, nHeight: SmallInt; hwndParent: HWND; hmenu: HMENU; hinst: HINST; lpvCreateParams: FarPointer): HWND; external 'USER';
+function CreateWindow(lpszClassName, lpszWindowName: LPCSTR; dwStyle: DWORD; x, y, nWidth, nHeight: SmallInt; hwndParent: HWND; hmenu: HMENU; hinst: HINST; lpvParam: FarPointer): HWND; external 'USER';
+
+function DestroyWindow(hwnd: HWND): BOOL; external 'USER';
+
+{ Basic window attributes }
+
+function GetWindowTask(hwnd: HWND): HTASK; external 'USER';
+
+function IsChild(hwndParent, hwndChild: HWND): BOOL; external 'USER';
+
+function GetParent(hwnd: HWND): HWND; external 'USER';
+function SetParent(hwndChild, hwndNewParent: HWND): HWND; external 'USER';
+
+function IsWindowVisible(hwnd: HWND): BOOL; external 'USER';
+
+function ShowWindow(hwnd: HWND; nCmdShow: SmallInt): BOOL; external 'USER';
+
+{ Enabled state }
+function EnableWindow(hwnd: HWND; fEnable: BOOL): BOOL; external 'USER';
+function IsWindowEnabled(hwnd: HWND): BOOL; external 'USER';
+
+{ Window text }
+procedure SetWindowText(hwnd: HWND; lpsz: LPCSTR); external 'USER';
+function GetWindowText(hwnd: HWND; lpsz: LPSTR; cbMax: SmallInt): SmallInt; external 'USER';
+function GetWindowTextLength(hwnd: HWND): SmallInt; external 'USER';
+
+{ Window words }
+function GetWindowWord(hwnd: HWND; nOffset: SmallInt): WORD; external 'USER';
+function SetWindowWord(hwnd: HWND; nOffset: SmallInt; nVal: WORD): WORD; external 'USER';
+function GetWindowLong(hwnd: HWND; nOffset: SmallInt): LONG; external 'USER';
+function SetWindowLong(hwnd: HWND; nOffset: SmallInt; nVal: LONG): LONG; external 'USER';

+ 133 - 0
rtl/win16/wintypes.inc

@@ -1414,3 +1414,136 @@ const
   GCW_CBCLSEXTRA    = (-20);
   GCL_WNDPROC       = (-24);
   GCW_STYLE         = (-26);
+
+{ Window creation/destroy }
+
+{ Window Styles }
+
+{ Basic window types }
+  WS_OVERLAPPED        = $00000000;
+  WS_POPUP             = $80000000;
+  WS_CHILD             = $40000000;
+
+{ Clipping styles }
+  WS_CLIPSIBLINGS      = $04000000;
+  WS_CLIPCHILDREN      = $02000000;
+
+{ Generic window states }
+  WS_VISIBLE           = $10000000;
+  WS_DISABLED          = $08000000;
+
+{ Main window states }
+  WS_MINIMIZE          = $20000000;
+  WS_MAXIMIZE          = $01000000;
+
+{ Main window styles }
+  WS_CAPTION           = $00C00000;     { WS_BORDER | WS_DLGFRAME }
+  WS_BORDER            = $00800000;
+  WS_DLGFRAME          = $00400000;
+  WS_VSCROLL           = $00200000;
+  WS_HSCROLL           = $00100000;
+  WS_SYSMENU           = $00080000;
+  WS_THICKFRAME        = $00040000;
+  WS_MINIMIZEBOX       = $00020000;
+  WS_MAXIMIZEBOX       = $00010000;
+
+{ Control window styles }
+  WS_GROUP             = $00020000;
+  WS_TABSTOP           = $00010000;
+
+{ Common Window Styles }
+  WS_OVERLAPPEDWINDOW  = (WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_THICKFRAME or WS_MINIMIZEBOX or WS_MAXIMIZEBOX);
+  WS_POPUPWINDOW       = (WS_POPUP or WS_BORDER or WS_SYSMENU);
+  WS_CHILDWINDOW       = (WS_CHILD);
+
+{ Extended Window Styles }
+  WS_EX_DLGMODALFRAME  = $00000001;
+  WS_EX_NOPARENTNOTIFY = $00000004;
+
+{ Obsolete style names }
+  WS_TILED             = WS_OVERLAPPED;
+  WS_ICONIC            = WS_MINIMIZE;
+  WS_SIZEBOX           = WS_THICKFRAME;
+  WS_TILEDWINDOW       = WS_OVERLAPPEDWINDOW;
+
+
+
+{ Special value for CreateWindow, et al. }
+  HWND_DESKTOP          = HWND(0);
+
+  WM_CREATE   = $0001;
+  WM_NCCREATE = $0081;
+
+type
+{ WM_CREATE/WM_NCCREATE lParam struct }
+  PCREATESTRUCT = ^CREATESTRUCT;
+  LPCREATESTRUCT = ^CREATESTRUCT; far;
+  CREATESTRUCT = record
+    lpCreateParams: FarPointer;
+    hInstance: HINST;
+    hMenu: HMENU;
+    hwndParent: HWND;
+    cy: SmallInt;
+    cx: SmallInt;
+    y: SmallInt;
+    x: SmallInt;
+    style: LONG;
+    lpszName: LPCSTR;
+    lpszClass: LPCSTR;
+    dwExStyle: DWORD;
+  end;
+  TCreateStruct = CREATESTRUCT;
+
+const
+  WM_DESTROY          = $0002;
+  WM_NCDESTROY        = $0082;
+
+  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;
+
+{ Obsolete ShowWindow() command names }
+  HIDE_WINDOW         = 0;
+  SHOW_OPENWINDOW     = 1;
+  SHOW_ICONWINDOW     = 2;
+  SHOW_FULLSCREEN     = 3;
+  SHOW_OPENNOACTIVATE = 4;
+
+  WM_SHOWWINDOW       = $0018;
+
+{ WM_SHOWWINDOW wParam codes }
+  SW_PARENTCLOSING    = 1;
+  SW_OTHERMAXIMIZED   = 2;
+  SW_PARENTOPENING    = 3;
+  SW_OTHERRESTORED    = 4;
+
+{ Obsolete constant names }
+  SW_OTHERZOOM        = SW_OTHERMAXIMIZED;
+  SW_OTHERUNZOOM      = SW_OTHERRESTORED;
+
+  WM_SETREDRAW        = $000B;
+
+{ Enabled state }
+  WM_ENABLE           = $000A;
+
+{ Window text }
+  WM_SETTEXT          = $000C;
+  WM_GETTEXT          = $000D;
+  WM_GETTEXTLENGTH    = $000E;
+
+{ Window field offsets for GetWindowLong() and GetWindowWord() }
+  GWL_WNDPROC         = (-4);
+  GWW_HINSTANCE       = (-6);
+  GWW_HWNDPARENT      = (-8);
+  GWW_ID              = (-12);
+  GWL_STYLE           = (-16);
+  GWL_EXSTYLE         = (-20);