2
0
Эх сурвалжийг харах

+ added the win16api window class management functions

git-svn-id: trunk@31717 -
nickysn 10 жил өмнө
parent
commit
5c71414d02

+ 4 - 0
rtl/win16/win31.pp

@@ -504,6 +504,10 @@ const
   PWR_SUSPENDRESUME  = 2;
   PWR_CRITICALRESUME = 3;
 
+{ Window class management }
+{ Class field offsets for GetClassLong() and GetClassWord() }
+  GCW_ATOM = (-32);
+
 function GetFreeSystemResources(SysResource: UINT): UINT; external 'USER';
 
 procedure LogError(err: UINT; lpInfo: FarPointer); external 'KERNEL';

+ 19 - 0
rtl/win16/winprocsh.inc

@@ -789,3 +789,22 @@ function CallMsgFilter(var msg: MSG; nCode: SmallInt): BOOL; external 'USER';
 { Application termination }
 
 procedure PostQuitMessage(nExitCode: SmallInt); external 'USER';
+
+{ Window class management }
+
+function RegisterClass(lpwc: LPWNDCLASS): ATOM; external 'USER';
+{$ifdef VAR_PARAMS_ARE_FAR}
+function RegisterClass(var wc: WNDCLASS): ATOM; external 'USER';
+{$endif}
+function UnregisterClass(lpszClassName: LPCSTR; hinst: HINST): BOOL; external 'USER';
+
+function GetClassInfo(hinst: HINST; lpszClassName: LPCSTR; lpwc: LPWNDCLASS): BOOL; external 'USER';
+{$ifdef VAR_PARAMS_ARE_FAR}
+function GetClassInfo(hinst: HINST; lpszClassName: LPCSTR; var wc: WNDCLASS): BOOL; external 'USER';
+{$endif}
+function GetClassName(hwnd: HWND; lpszClassName: LPSTR; cchClassName: SmallInt): SmallInt; external 'USER';
+
+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';

+ 55 - 0
rtl/win16/wintypes.inc

@@ -1359,3 +1359,58 @@ const
   WM_QUIT            = $0012;
 
   WM_SYSTEMERROR     = $0017;
+
+type
+{ Window class management }
+  WNDPROC = function(hwnd: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; far;
+
+  PWNDCLASS = ^WNDCLASS;
+  NPWNDCLASS = ^WNDCLASS; near;
+  LPWNDCLASS = ^WNDCLASS; far;
+  WNDCLASS = record
+    style: UINT;
+    lpfnWndProc: WNDPROC;
+    cbClsExtra: SmallInt;
+    cbWndExtra: SmallInt;
+    hInstance: HINST;
+    hIcon: HICON;
+    hCursor: HCURSOR;
+    hbrBackground: HBRUSH;
+    lpszMenuName: LPCSTR;
+    lpszClassName: LPCSTR;
+  end;
+  TWndClass = WNDCLASS;
+
+const
+{ Class styles }
+  CS_VREDRAW         = $0001;
+  CS_HREDRAW         = $0002;
+
+  CS_OWNDC           = $0020;
+  CS_CLASSDC         = $0040;
+  CS_PARENTDC        = $0080;
+
+  CS_SAVEBITS        = $0800;
+
+  CS_DBLCLKS         = $0008;
+
+  CS_BYTEALIGNCLIENT = $1000;
+  CS_BYTEALIGNWINDOW = $2000;
+
+  CS_NOCLOSE         = $0200;
+
+  CS_KEYCVTWINDOW    = $0004;
+  CS_NOKEYCVT        = $0100;
+
+  CS_GLOBALCLASS     = $4000;
+
+{ Class field offsets for GetClassLong() and GetClassWord() }
+  GCL_MENUNAME      = (-8);
+  GCW_HBRBACKGROUND = (-10);
+  GCW_HCURSOR       = (-12);
+  GCW_HICON         = (-14);
+  GCW_HMODULE       = (-16);
+  GCW_CBWNDEXTRA    = (-18);
+  GCW_CBCLSEXTRA    = (-20);
+  GCL_WNDPROC       = (-24);
+  GCW_STYLE         = (-26);