JwaWinUser.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:670k
源码类别:

Windows编程

开发平台:

Delphi

  1. // original NT 32 bit dialog template:
  2. //
  3. type
  4.   DLGTEMPLATE = packed record
  5.     style: DWORD;
  6.     dwExtendedStyle: DWORD;
  7.     cdit: WORD;
  8.     x: short;
  9.     y: short;
  10.     cx: short;
  11.     cy: short;
  12.   end;
  13.   {$EXTERNALSYM DLGTEMPLATE}
  14.   TDlgTemplate = DLGTEMPLATE;
  15.   LPDLGTEMPLATEA = ^DLGTEMPLATE;
  16.   {$EXTERNALSYM LPDLGTEMPLATEA}
  17.   LPDLGTEMPLATEW = ^DLGTEMPLATE;
  18.   {$EXTERNALSYM LPDLGTEMPLATEW}
  19.   LPCDLGTEMPLATEA = ^DLGTEMPLATE;
  20.   {$EXTERNALSYM LPCDLGTEMPLATEA}
  21.   LPCDLGTEMPLATEW = ^DLGTEMPLATE;
  22.   {$EXTERNALSYM LPCDLGTEMPLATEW}
  23. {$IFDEF UNICODE}
  24.   LPDLGTEMPLATE = LPDLGTEMPLATEW;
  25.   {$EXTERNALSYM LPDLGTEMPLATE}
  26.   LPCDLGTEMPLATE = LPCDLGTEMPLATEW;
  27.   {$EXTERNALSYM LPCDLGTEMPLATE}
  28. {$ELSE}
  29.   LPDLGTEMPLATE = LPDLGTEMPLATEA;
  30.   {$EXTERNALSYM LPDLGTEMPLATE}
  31.   LPCDLGTEMPLATE = LPCDLGTEMPLATEA;
  32.   {$EXTERNALSYM LPCDLGTEMPLATE}
  33. {$ENDIF}
  34. //
  35. // 32 bit Dialog item template.
  36. //
  37.   DLGITEMTEMPLATE = packed record
  38.     style: DWORD;
  39.     dwExtendedStyle: DWORD;
  40.     x: short;
  41.     y: short;
  42.     cx: short;
  43.     cy: short;
  44.     id: WORD;
  45.   end;
  46.   {$EXTERNALSYM DLGITEMTEMPLATE}
  47.   TDlgItemTemplate = DLGITEMTEMPLATE;
  48.   PDLGITEMTEMPLATEA = ^DLGITEMTEMPLATE;
  49.   {$EXTERNALSYM PDLGITEMTEMPLATE}
  50.   PDLGITEMTEMPLATEW = ^DLGITEMTEMPLATE;
  51.   {$EXTERNALSYM PDLGITEMTEMPLATE}
  52.   LPDLGITEMTEMPLATEA = ^DLGITEMTEMPLATE;
  53.   {$EXTERNALSYM LPDLGITEMTEMPLATE}
  54.   LPDLGITEMTEMPLATEW = ^DLGITEMTEMPLATE;
  55.   {$EXTERNALSYM LPDLGITEMTEMPLATE}
  56. {$IFDEF UNICODE}
  57.   PDLGITEMTEMPLATE = PDLGITEMTEMPLATEW;
  58.   {$EXTERNALSYM PDLGITEMTEMPLATE}
  59.   LPDLGITEMTEMPLATE = PDLGITEMTEMPLATEW;
  60.   {$EXTERNALSYM LPDLGITEMTEMPLATE}
  61. {$ELSE}
  62.   PDLGITEMTEMPLATE = PDLGITEMTEMPLATEA;
  63.   {$EXTERNALSYM PDLGITEMTEMPLATE}
  64.   LPDLGITEMTEMPLATE = PDLGITEMTEMPLATEA;
  65.   {$EXTERNALSYM LPDLGITEMTEMPLATE}
  66. {$ENDIF}
  67. // #include <poppack.h> // Resume normal packing//
  68. function CreateDialogParamA(hInstance: HINSTANCE; lpTemplateName: LPCSTR;
  69.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): HWND; stdcall;
  70. {$EXTERNALSYM CreateDialogParamA}
  71. function CreateDialogParamW(hInstance: HINSTANCE; lpTemplateName: LPCWSTR;
  72.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): HWND; stdcall;
  73. {$EXTERNALSYM CreateDialogParamW}
  74. {$IFDEF UNICODE}
  75. function CreateDialogParam(hInstance: HINSTANCE; lpTemplateName: LPCWSTR;
  76.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): HWND; stdcall;
  77. {$EXTERNALSYM CreateDialogParam}
  78. {$ELSE}
  79. function CreateDialogParam(hInstance: HINSTANCE; lpTemplateName: LPCSTR;
  80.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): HWND; stdcall;
  81. {$EXTERNALSYM CreateDialogParam}
  82. {$ENDIF}
  83. function CreateDialogIndirectParamA(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  84.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): HWND; stdcall;
  85. {$EXTERNALSYM CreateDialogIndirectParamA}
  86. function CreateDialogIndirectParamW(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  87.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): HWND; stdcall;
  88. {$EXTERNALSYM CreateDialogIndirectParamW}
  89. {$IFDEF UNICODE}
  90. function CreateDialogIndirectParam(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  91.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): HWND; stdcall;
  92. {$EXTERNALSYM CreateDialogIndirectParam}
  93. {$ELSE}
  94. function CreateDialogIndirectParam(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  95.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): HWND; stdcall;
  96. {$EXTERNALSYM CreateDialogIndirectParam}
  97. {$ENDIF}
  98. function CreateDialogA(hInstance: HINSTANCE; lpName: LPCSTR; hWndParent: HWND;
  99.   lpDialogFunc: DLGPROC): HWND;
  100. {$EXTERNALSYM CreateDialogA}
  101. function CreateDialogW(hInstance: HINSTANCE; lpName: LPCWSTR; hWndParent: HWND;
  102.   lpDialogFunc: DLGPROC): HWND;
  103. {$EXTERNALSYM CreateDialogW}
  104. {$IFDEF UNICODE}
  105. function CreateDialog(hInstance: HINSTANCE; lpName: LPCWSTR; hWndParent: HWND;
  106.   lpDialogFunc: DLGPROC): HWND;
  107. {$EXTERNALSYM CreateDialog}
  108. {$ELSE}
  109. function CreateDialog(hInstance: HINSTANCE; lpName: LPCSTR; hWndParent: HWND;
  110.   lpDialogFunc: DLGPROC): HWND;
  111. {$EXTERNALSYM CreateDialog}
  112. {$ENDIF}
  113. function CreateDialogIndirectA(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  114.   hWndParent: HWND; lpDialogFunc: DLGPROC): HWND;
  115. {$EXTERNALSYM CreateDialogIndirectA}
  116. function CreateDialogIndirectW(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  117.   hWndParent: HWND; lpDialogFunc: DLGPROC): HWND;
  118. {$EXTERNALSYM CreateDialogIndirectW}
  119. {$IFDEF UNICODE}
  120. function CreateDialogIndirect(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  121.   hWndParent: HWND; lpDialogFunc: DLGPROC): HWND;
  122. {$EXTERNALSYM CreateDialogIndirect}
  123. {$ELSE}
  124. function CreateDialogIndirect(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  125.   hWndParent: HWND; lpDialogFunc: DLGPROC): HWND;
  126. {$EXTERNALSYM CreateDialogIndirect}
  127. {$ENDIF}
  128. function DialogBoxParamA(hInstance: HINSTANCE; lpTemplateName: LPCSTR;
  129.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): INT_PTR; stdcall;
  130. {$EXTERNALSYM DialogBoxParamA}
  131. function DialogBoxParamW(hInstance: HINSTANCE; lpTemplateName: LPCWSTR;
  132.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): INT_PTR; stdcall;
  133. {$EXTERNALSYM DialogBoxParamW}
  134. {$IFDEF UNICODE}
  135. function DialogBoxParam(hInstance: HINSTANCE; lpTemplateName: LPCWSTR;
  136.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): INT_PTR; stdcall;
  137. {$EXTERNALSYM DialogBoxParam}
  138. {$ELSE}
  139. function DialogBoxParam(hInstance: HINSTANCE; lpTemplateName: LPCSTR;
  140.   hWndParent: HWND; lpDialogFunc: DLGPROC; dwInitParam: LPARAM): INT_PTR; stdcall;
  141. {$EXTERNALSYM DialogBoxParam}
  142. {$ENDIF}
  143. function DialogBoxIndirectParamA(hInstance: HINSTANCE;
  144.   const hDialogTemplate: DLGTEMPLATE; hWndParent: HWND; lpDialogFunc: DLGPROC;
  145.   dwInitParam: LPARAM): INT_PTR; stdcall;
  146. {$EXTERNALSYM DialogBoxIndirectParamA}
  147. function DialogBoxIndirectParamW(hInstance: HINSTANCE;
  148.   const hDialogTemplate: DLGTEMPLATE; hWndParent: HWND; lpDialogFunc: DLGPROC;
  149.   dwInitParam: LPARAM): INT_PTR; stdcall;
  150. {$EXTERNALSYM DialogBoxIndirectParamW}
  151. {$IFDEF UNICODE}
  152. function DialogBoxIndirectParam(hInstance: HINSTANCE;
  153.   const hDialogTemplate: DLGTEMPLATE; hWndParent: HWND; lpDialogFunc: DLGPROC;
  154.   dwInitParam: LPARAM): INT_PTR; stdcall;
  155. {$EXTERNALSYM DialogBoxIndirectParam}
  156. {$ELSE}
  157. function DialogBoxIndirectParam(hInstance: HINSTANCE;
  158.   const hDialogTemplate: DLGTEMPLATE; hWndParent: HWND; lpDialogFunc: DLGPROC;
  159.   dwInitParam: LPARAM): INT_PTR; stdcall;
  160. {$EXTERNALSYM DialogBoxIndirectParam}
  161. {$ENDIF}
  162. function DialogBoxA(hInstance: HINSTANCE; lpTemplate: LPCSTR; hWndParent: HWND;
  163.   lpDialogFunc: DLGPROC): INT_PTR;
  164. {$EXTERNALSYM DialogBoxA}
  165. function DialogBoxW(hInstance: HINSTANCE; lpTemplate: LPCWSTR; hWndParent: HWND;
  166.   lpDialogFunc: DLGPROC): INT_PTR;
  167. {$EXTERNALSYM DialogBoxW}
  168. {$IFDEF UNICODE}
  169. function DialogBox(hInstance: HINSTANCE; lpTemplate: LPCWSTR; hWndParent: HWND;
  170.   lpDialogFunc: DLGPROC): INT_PTR;
  171. {$EXTERNALSYM DialogBox}
  172. {$ELSE}
  173. function DialogBox(hInstance: HINSTANCE; lpTemplate: LPCSTR; hWndParent: HWND;
  174.   lpDialogFunc: DLGPROC): INT_PTR;
  175. {$EXTERNALSYM DialogBox}
  176. {$ENDIF}
  177. function DialogBoxIndirectA(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  178.   hWndParent: HWND; lpDialogFunc: DLGPROC): INT_PTR;
  179. {$EXTERNALSYM DialogBoxIndirectA}
  180. function DialogBoxIndirectW(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  181.   hWndParent: HWND; lpDialogFunc: DLGPROC): INT_PTR;
  182. {$EXTERNALSYM DialogBoxIndirectW}
  183. {$IFDEF UNICODE}
  184. function DialogBoxIndirect(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  185.   hWndParent: HWND; lpDialogFunc: DLGPROC): INT_PTR;
  186. {$EXTERNALSYM DialogBoxIndirect}
  187. {$ELSE}
  188. function DialogBoxIndirect(hInstance: HINSTANCE; const lpTemplate: DLGTEMPLATE;
  189.   hWndParent: HWND; lpDialogFunc: DLGPROC): INT_PTR;
  190. {$EXTERNALSYM DialogBoxIndirect}
  191. {$ENDIF}
  192. function EndDialog(hDlg: HWND; nResult: INT_PTR): BOOL; stdcall;
  193. {$EXTERNALSYM EndDialog}
  194. function GetDlgItem(hDlg: HWND; nIDDlgItem: Integer): HWND; stdcall;
  195. {$EXTERNALSYM GetDlgItem}
  196. function SetDlgItemInt(hDlg: HWND; nIDDlgItem: Integer; uValue: UINT; bSigned: BOOL): BOOL; stdcall;
  197. {$EXTERNALSYM SetDlgItemInt}
  198. function GetDlgItemInt(hDlg: HWND; nIDDlgItem: Integer; lpTranslated: LPBOOL;
  199.   bSigned: BOOL): UINT; stdcall;
  200. {$EXTERNALSYM GetDlgItemInt}
  201. function SetDlgItemTextA(hDlg: HWND; nIDDlgItem: Integer; lpString: LPCSTR): BOOL; stdcall;
  202. {$EXTERNALSYM SetDlgItemTextA}
  203. function SetDlgItemTextW(hDlg: HWND; nIDDlgItem: Integer; lpString: LPCWSTR): BOOL; stdcall;
  204. {$EXTERNALSYM SetDlgItemTextW}
  205. {$IFDEF UNICODE}
  206. function SetDlgItemText(hDlg: HWND; nIDDlgItem: Integer; lpString: LPCWSTR): BOOL; stdcall;
  207. {$EXTERNALSYM SetDlgItemText}
  208. {$ELSE}
  209. function SetDlgItemText(hDlg: HWND; nIDDlgItem: Integer; lpString: LPCSTR): BOOL; stdcall;
  210. {$EXTERNALSYM SetDlgItemText}
  211. {$ENDIF}
  212. function GetDlgItemTextA(hDlg: HWND; nIDDlgItem: Integer; lpString: LPSTR;
  213.   nMaxCount: Integer): UINT; stdcall;
  214. {$EXTERNALSYM GetDlgItemTextA}
  215. function GetDlgItemTextW(hDlg: HWND; nIDDlgItem: Integer; lpString: LPWSTR;
  216.   nMaxCount: Integer): UINT; stdcall;
  217. {$EXTERNALSYM GetDlgItemTextW}
  218. {$IFDEF UNICODE}
  219. function GetDlgItemText(hDlg: HWND; nIDDlgItem: Integer; lpString: LPWSTR;
  220.   nMaxCount: Integer): UINT; stdcall;
  221. {$EXTERNALSYM GetDlgItemText}
  222. {$ELSE}
  223. function GetDlgItemText(hDlg: HWND; nIDDlgItem: Integer; lpString: LPSTR;
  224.   nMaxCount: Integer): UINT; stdcall;
  225. {$EXTERNALSYM GetDlgItemText}
  226. {$ENDIF}
  227. function CheckDlgButton(hDlg: HWND; nIDButton: Integer; uCheck: UINT): BOOL; stdcall;
  228. {$EXTERNALSYM CheckDlgButton}
  229. function CheckRadioButton(hDlg: HWND; nIDFirstButton, nIDLastButton: Integer;
  230.   nIDCheckButton: Integer): BOOL; stdcall;
  231. {$EXTERNALSYM CheckRadioButton}
  232. function IsDlgButtonChecked(hDlg: HWND; nIDButton: Integer): UINT; stdcall;
  233. {$EXTERNALSYM IsDlgButtonChecked}
  234. function SendDlgItemMessageA(hDlg: HWND; nIDDlgItem: Integer; Msg: UINT;
  235.   wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  236. {$EXTERNALSYM SendDlgItemMessageA}
  237. function SendDlgItemMessageW(hDlg: HWND; nIDDlgItem: Integer; Msg: UINT;
  238.   wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  239. {$EXTERNALSYM SendDlgItemMessageW}
  240. {$IFDEF UNICODE}
  241. function SendDlgItemMessage(hDlg: HWND; nIDDlgItem: Integer; Msg: UINT;
  242.   wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  243. {$EXTERNALSYM SendDlgItemMessage}
  244. {$ELSE}
  245. function SendDlgItemMessage(hDlg: HWND; nIDDlgItem: Integer; Msg: UINT;
  246.   wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  247. {$EXTERNALSYM SendDlgItemMessage}
  248. {$ENDIF}
  249. function GetNextDlgGroupItem(hDlg: HWND; hCtl: HWND; bPrevious: BOOL): HWND; stdcall;
  250. {$EXTERNALSYM GetNextDlgGroupItem}
  251. function GetNextDlgTabItem(hDlg: HWND; hCtl: HWND; bPrevious: BOOL): HWND; stdcall;
  252. {$EXTERNALSYM GetNextDlgTabItem}
  253. function GetDlgCtrlID(hWnd: HWND): Integer; stdcall;
  254. {$EXTERNALSYM GetDlgCtrlID}
  255. function GetDialogBaseUnits: Longint; stdcall;
  256. {$EXTERNALSYM GetDialogBaseUnits(VOID v)}
  257. function DefDlgProcA(hDlg: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  258. {$EXTERNALSYM DefDlgProcA}
  259. function DefDlgProcW(hDlg: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  260. {$EXTERNALSYM DefDlgProcW}
  261. {$IFDEF UNICODE}
  262. function DefDlgProc(hDlg: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  263. {$EXTERNALSYM DefDlgProc}
  264. {$ELSE}
  265. function DefDlgProc(hDlg: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  266. {$EXTERNALSYM DefDlgProc}
  267. {$ENDIF}
  268. //
  269. // Window extra byted needed for private dialog classes.
  270. //
  271. const
  272.   DLGWINDOWEXTRA = 30;
  273.   {$EXTERNALSYM DLGWINDOWEXTRA}
  274. function CallMsgFilterA(lpMsg: LPMSG; nCode: Integer): BOOL; stdcall;
  275. {$EXTERNALSYM CallMsgFilterA}
  276. function CallMsgFilterW(lpMsg: LPMSG; nCode: Integer): BOOL; stdcall;
  277. {$EXTERNALSYM CallMsgFilterW}
  278. {$IFDEF UNICODE}
  279. function CallMsgFilter(lpMsg: LPMSG; nCode: Integer): BOOL; stdcall;
  280. {$EXTERNALSYM CallMsgFilter}
  281. {$ELSE}
  282. function CallMsgFilter(lpMsg: LPMSG; nCode: Integer): BOOL; stdcall;
  283. {$EXTERNALSYM CallMsgFilter}
  284. {$ENDIF}
  285. //
  286. // Clipboard Manager Functions
  287. //
  288. function OpenClipboard(hWndNewOwner: HWND): BOOL; stdcall;
  289. {$EXTERNALSYM OpenClipboard}
  290. function CloseClipboard: BOOL; stdcall;
  291. {$EXTERNALSYM CloseClipboard}
  292. function GetClipboardSequenceNumber: DWORD; stdcall;
  293. {$EXTERNALSYM GetClipboardSequenceNumber}
  294. function GetClipboardOwner: HWND; stdcall;
  295. {$EXTERNALSYM GetClipboardOwner}
  296. function SetClipboardViewer(hWndNewViewer: HWND): HWND; stdcall;
  297. {$EXTERNALSYM SetClipboardViewer}
  298. function GetClipboardViewer: HWND; stdcall;
  299. {$EXTERNALSYM GetClipboardViewer}
  300. function ChangeClipboardChain(hWndRemove, hWndNewNext: HWND): BOOL; stdcall;
  301. {$EXTERNALSYM ChangeClipboardChain}
  302. function SetClipboardData(uFormat: UINT; hMem: HANDLE): HANDLE; stdcall;
  303. {$EXTERNALSYM SetClipboardData}
  304. function GetClipboardData(uFormat: UINT): HANDLE; stdcall;
  305. {$EXTERNALSYM GetClipboardData}
  306. function RegisterClipboardFormatA(lpszFormat: LPCSTR): UINT; stdcall;
  307. {$EXTERNALSYM RegisterClipboardFormatA}
  308. function RegisterClipboardFormatW(lpszFormat: LPCWSTR): UINT; stdcall;
  309. {$EXTERNALSYM RegisterClipboardFormatW}
  310. {$IFDEF UNICODE}
  311. function RegisterClipboardFormat(lpszFormat: LPCWSTR): UINT; stdcall;
  312. {$EXTERNALSYM RegisterClipboardFormat}
  313. {$ELSE}
  314. function RegisterClipboardFormat(lpszFormat: LPCSTR): UINT; stdcall;
  315. {$EXTERNALSYM RegisterClipboardFormat}
  316. {$ENDIF}
  317. function CountClipboardFormats: Integer; stdcall;
  318. {$EXTERNALSYM CountClipboardFormats}
  319. function EnumClipboardFormats(format: UINT): UINT; stdcall;
  320. {$EXTERNALSYM EnumClipboardFormats}
  321. function GetClipboardFormatNameA(format: UINT; lpszFormatName: LPSTR;
  322.   cchMaxCount: Integer): Integer; stdcall;
  323. {$EXTERNALSYM GetClipboardFormatNameA}
  324. function GetClipboardFormatNameW(format: UINT; lpszFormatName: LPWSTR;
  325.   cchMaxCount: Integer): Integer; stdcall;
  326. {$EXTERNALSYM GetClipboardFormatNameW}
  327. {$IFDEF UNICODE}
  328. function GetClipboardFormatName(format: UINT; lpszFormatName: LPWSTR;
  329.   cchMaxCount: Integer): Integer; stdcall;
  330. {$EXTERNALSYM GetClipboardFormatName}
  331. {$ELSE}
  332. function GetClipboardFormatName(format: UINT; lpszFormatName: LPSTR;
  333.   cchMaxCount: Integer): Integer; stdcall;
  334. {$EXTERNALSYM GetClipboardFormatName}
  335. {$ENDIF}
  336. function EmptyClipboard: BOOL; stdcall;
  337. {$EXTERNALSYM EmptyClipboard}
  338. function IsClipboardFormatAvailable(format: UINT): BOOL; stdcall;
  339. {$EXTERNALSYM IsClipboardFormatAvailable}
  340. function GetPriorityClipboardFormat(paFormatPriorityList: PUINT; cFormats: Integer): Integer; stdcall;
  341. {$EXTERNALSYM GetPriorityClipboardFormat}
  342. function GetOpenClipboardWindow: HWND; stdcall;
  343. {$EXTERNALSYM GetOpenClipboardWindow}
  344. //
  345. // Character Translation Routines
  346. //
  347. function CharToOemA(lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL; stdcall;
  348. {$EXTERNALSYM CharToOemA}
  349. function CharToOemW(lpszSrc: LPCWSTR; lpszDst: LPSTR): BOOL; stdcall;
  350. {$EXTERNALSYM CharToOemW}
  351. {$IFDEF UNICODE}
  352. function CharToOem(lpszSrc: LPCWSTR; lpszDst: LPSTR): BOOL; stdcall;
  353. {$EXTERNALSYM CharToOem}
  354. {$ELSE}
  355. function CharToOem(lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL; stdcall;
  356. {$EXTERNALSYM CharToOem}
  357. {$ENDIF}
  358. function OemToCharA(lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL; stdcall;
  359. {$EXTERNALSYM OemToCharA}
  360. function OemToCharW(lpszSrc: LPCSTR; lpszDst: LPWSTR): BOOL; stdcall;
  361. {$EXTERNALSYM OemToCharW}
  362. {$IFDEF UNICODE}
  363. function OemToChar(lpszSrc: LPCSTR; lpszDst: LPWSTR): BOOL; stdcall;
  364. {$EXTERNALSYM OemToChar}
  365. {$ELSE}
  366. function OemToChar(lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL; stdcall;
  367. {$EXTERNALSYM OemToChar}
  368. {$ENDIF}
  369. function CharToOemBuffA(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
  370. {$EXTERNALSYM CharToOemBuffA}
  371. function CharToOemBuffW(lpszSrc: LPCWSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
  372. {$EXTERNALSYM CharToOemBuffW}
  373. {$IFDEF UNICODE}
  374. function CharToOemBuff(lpszSrc: LPCWSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
  375. {$EXTERNALSYM CharToOemBuff}
  376. {$ELSE}
  377. function CharToOemBuff(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
  378. {$EXTERNALSYM CharToOemBuff}
  379. {$ENDIF}
  380. function OemToCharBuffA(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
  381. {$EXTERNALSYM OemToCharBuffA}
  382. function OemToCharBuffW(lpszSrc: LPCSTR; lpszDst: LPWSTR; cchDstLength: DWORD): BOOL; stdcall;
  383. {$EXTERNALSYM OemToCharBuffW}
  384. {$IFDEF UNICODE}
  385. function OemToCharBuff(lpszSrc: LPCSTR; lpszDst: LPWSTR; cchDstLength: DWORD): BOOL; stdcall;
  386. {$EXTERNALSYM OemToCharBuff}
  387. {$ELSE}
  388. function OemToCharBuff(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
  389. {$EXTERNALSYM OemToCharBuff}
  390. {$ENDIF}
  391. function CharUpperA(lpsz: LPSTR): LPSTR; stdcall;
  392. {$EXTERNALSYM CharUpperA}
  393. function CharUpperW(lpsz: LPWSTR): LPWSTR; stdcall;
  394. {$EXTERNALSYM CharUpperW}
  395. {$IFDEF UNICODE}
  396. function CharUpper(lpsz: LPWSTR): LPWSTR; stdcall;
  397. {$EXTERNALSYM CharUpper}
  398. {$ELSE}
  399. function CharUpper(lpsz: LPSTR): LPSTR; stdcall;
  400. {$EXTERNALSYM CharUpper}
  401. {$ENDIF}
  402. function CharUpperBuffA(lpsz: LPSTR; cchLength: DWORD): DWORD; stdcall;
  403. {$EXTERNALSYM CharUpperBuffA}
  404. function CharUpperBuffW(lpsz: LPWSTR; cchLength: DWORD): DWORD; stdcall;
  405. {$EXTERNALSYM CharUpperBuffW}
  406. {$IFDEF UNICODE}
  407. function CharUpperBuff(lpsz: LPWSTR; cchLength: DWORD): DWORD; stdcall;
  408. {$EXTERNALSYM CharUpperBuff}
  409. {$ELSE}
  410. function CharUpperBuff(lpsz: LPSTR; cchLength: DWORD): DWORD; stdcall;
  411. {$EXTERNALSYM CharUpperBuff}
  412. {$ENDIF}
  413. function CharLowerA(lpsz: LPSTR): LPSTR; stdcall;
  414. {$EXTERNALSYM CharLowerA}
  415. function CharLowerW(lpsz: LPWSTR): LPWSTR; stdcall;
  416. {$EXTERNALSYM CharLowerW}
  417. {$IFDEF UNICODE}
  418. function CharLower(lpsz: LPWSTR): LPWSTR; stdcall;
  419. {$EXTERNALSYM CharLower}
  420. {$ELSE}
  421. function CharLower(lpsz: LPSTR): LPSTR; stdcall;
  422. {$EXTERNALSYM CharLower}
  423. {$ENDIF}
  424. function CharLowerBuffA(lpsz: LPSTR; cchLength: DWORD): DWORD; stdcall;
  425. {$EXTERNALSYM CharLowerBuffA}
  426. function CharLowerBuffW(lpsz: LPWSTR; cchLength: DWORD): DWORD; stdcall;
  427. {$EXTERNALSYM CharLowerBuffW}
  428. {$IFDEF UNICODE}
  429. function CharLowerBuff(lpsz: LPWSTR; cchLength: DWORD): DWORD; stdcall;
  430. {$EXTERNALSYM CharLowerBuff}
  431. {$ELSE}
  432. function CharLowerBuff(lpsz: LPSTR; cchLength: DWORD): DWORD; stdcall;
  433. {$EXTERNALSYM CharLowerBuff}
  434. {$ENDIF}
  435. function CharNextA(lpsz: LPCSTR): LPSTR; stdcall;
  436. {$EXTERNALSYM CharNextA}
  437. function CharNextW(lpsz: LPCWSTR): LPWSTR; stdcall;
  438. {$EXTERNALSYM CharNextW}
  439. {$IFDEF UNICODE}
  440. function CharNext(lpsz: LPCWSTR): LPWSTR; stdcall;
  441. {$EXTERNALSYM CharNext}
  442. {$ELSE}
  443. function CharNext(lpsz: LPCSTR): LPSTR; stdcall;
  444. {$EXTERNALSYM CharNext}
  445. {$ENDIF}
  446. function CharPrevA(lpszStart: LPCSTR; lpszCurrent: LPCSTR): LPSTR; stdcall;
  447. {$EXTERNALSYM CharPrevA}
  448. function CharPrevW(lpszStart: LPCWSTR; lpszCurrent: LPCWSTR): LPWSTR; stdcall;
  449. {$EXTERNALSYM CharPrevW}
  450. {$IFDEF UNICODE}
  451. function CharPrev(lpszStart: LPCWSTR; lpszCurrent: LPCWSTR): LPWSTR; stdcall;
  452. {$EXTERNALSYM CharPrev}
  453. {$ELSE}
  454. function CharPrev(lpszStart: LPCSTR; lpszCurrent: LPCSTR): LPSTR; stdcall;
  455. {$EXTERNALSYM CharPrev}
  456. {$ENDIF}
  457. function CharNextExA(CodePage: WORD; lpCurrentChar: LPCSTR; dwFlags: DWORD): LPSTR; stdcall;
  458. {$EXTERNALSYM CharNextExA}
  459. function CharPrevExA(CodePage: WORD; lpStart, lpCurrentChar: LPCSTR; dwFlags: DWORD): LPSTR; stdcall;
  460. {$EXTERNALSYM CharPrevExA}
  461. //
  462. // Compatibility defines for character translation routines
  463. //
  464. function AnsiToOem(lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL;
  465. {$EXTERNALSYM AnsiToOem}
  466. function OemToAnsi(lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL;
  467. {$EXTERNALSYM OemToAnsi}
  468. function AnsiToOemBuff(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL;
  469. {$EXTERNALSYM AnsiToOemBuff}
  470. function OemToAnsiBuff(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL;
  471. {$EXTERNALSYM OemToAnsiBuff}
  472. function AnsiUpper(lpsz: LPSTR): LPSTR;
  473. {$EXTERNALSYM AnsiUpper}
  474. function AnsiUpperBuff(lpsz: LPSTR; cchLength: DWORD): DWORD;
  475. {$EXTERNALSYM AnsiUpperBuff}
  476. function AnsiLower(lpsz: LPSTR): LPSTR;
  477. {$EXTERNALSYM AnsiLower}
  478. function AnsiLowerBuff(lpsz: LPSTR; cchLength: DWORD): DWORD;
  479. {$EXTERNALSYM AnsiLowerBuff}
  480. function AnsiNext(lpsz: LPCSTR): LPSTR;
  481. {$EXTERNALSYM AnsiNext}
  482. function AnsiPrev(lpszStart: LPCSTR; lpszCurrent: LPCSTR): LPSTR;
  483. {$EXTERNALSYM AnsiPrev}
  484. //
  485. // Language dependent Routines
  486. //
  487. function IsCharAlphaA(ch: CHAR): BOOL; stdcall;
  488. {$EXTERNALSYM IsCharAlphaA}
  489. function IsCharAlphaW(ch: WCHAR): BOOL; stdcall;
  490. {$EXTERNALSYM IsCharAlphaW}
  491. {$IFDEF UNICODE}
  492. function IsCharAlpha(ch: WCHAR): BOOL; stdcall;
  493. {$EXTERNALSYM IsCharAlpha}
  494. {$ELSE}
  495. function IsCharAlpha(ch: CHAR): BOOL; stdcall;
  496. {$EXTERNALSYM IsCharAlpha}
  497. {$ENDIF}
  498. function IsCharAlphaNumericA(ch: CHAR): BOOL; stdcall;
  499. {$EXTERNALSYM IsCharAlphaNumericA}
  500. function IsCharAlphaNumericW(ch: WCHAR): BOOL; stdcall;
  501. {$EXTERNALSYM IsCharAlphaNumericW}
  502. {$IFDEF UNICODE}
  503. function IsCharAlphaNumeric(ch: WCHAR): BOOL; stdcall;
  504. {$EXTERNALSYM IsCharAlphaNumeric}
  505. {$ELSE}
  506. function IsCharAlphaNumeric(ch: CHAR): BOOL; stdcall;
  507. {$EXTERNALSYM IsCharAlphaNumeric}
  508. {$ENDIF}
  509. function IsCharUpperA(ch: CHAR): BOOL; stdcall;
  510. {$EXTERNALSYM IsCharUpperA}
  511. function IsCharUpperW(ch: WCHAR): BOOL; stdcall;
  512. {$EXTERNALSYM IsCharUpperW}
  513. {$IFDEF UNICODE}
  514. function IsCharUpper(ch: WCHAR): BOOL; stdcall;
  515. {$EXTERNALSYM IsCharUpper}
  516. {$ELSE}
  517. function IsCharUpper(ch: CHAR): BOOL; stdcall;
  518. {$EXTERNALSYM IsCharUpper}
  519. {$ENDIF}
  520. function IsCharLowerA(ch: CHAR): BOOL; stdcall;
  521. {$EXTERNALSYM IsCharLowerA}
  522. function IsCharLowerW(ch: WCHAR): BOOL; stdcall;
  523. {$EXTERNALSYM IsCharLowerW}
  524. {$IFDEF UNICODE}
  525. function IsCharLower(ch: WCHAR): BOOL; stdcall;
  526. {$EXTERNALSYM IsCharLower}
  527. {$ELSE}
  528. function IsCharLower(ch: CHAR): BOOL; stdcall;
  529. {$EXTERNALSYM IsCharLower}
  530. {$ENDIF}
  531. function SetFocus(hWnd: HWND): HWND; stdcall;
  532. {$EXTERNALSYM SetFocus}
  533. function GetActiveWindow: HWND; stdcall;
  534. {$EXTERNALSYM GetActiveWindow}
  535. function GetFocus: HWND; stdcall;
  536. {$EXTERNALSYM GetFocus}
  537. function GetKBCodePage: UINT; stdcall;
  538. {$EXTERNALSYM GetKBCodePage}
  539. function GetKeyState(nVirtKey: Integer): SHORT; stdcall;
  540. {$EXTERNALSYM GetKeyState}
  541. function GetAsyncKeyState(vKey: Integer): SHORT; stdcall;
  542. {$EXTERNALSYM GetAsyncKeyState}
  543. function GetKeyboardState(lpKeyState: LPBYTE): BOOL; stdcall;
  544. {$EXTERNALSYM GetKeyboardState}
  545. function SetKeyboardState(lpKeyState: LPBYTE): BOOL; stdcall;
  546. {$EXTERNALSYM SetKeyboardState}
  547. function GetKeyNameTextA(lParam: LONG; lpString: LPSTR; nSize: Integer): Integer; stdcall;
  548. {$EXTERNALSYM GetKeyNameTextA}
  549. function GetKeyNameTextW(lParam: LONG; lpString: LPWSTR; nSize: Integer): Integer; stdcall;
  550. {$EXTERNALSYM GetKeyNameTextW}
  551. {$IFDEF UNICODE}
  552. function GetKeyNameText(lParam: LONG; lpString: LPWSTR; nSize: Integer): Integer; stdcall;
  553. {$EXTERNALSYM GetKeyNameText}
  554. {$ELSE}
  555. function GetKeyNameText(lParam: LONG; lpString: LPSTR; nSize: Integer): Integer; stdcall;
  556. {$EXTERNALSYM GetKeyNameText}
  557. {$ENDIF}
  558. function GetKeyboardType(nTypeFlag: Integer): Integer; stdcall;
  559. {$EXTERNALSYM GetKeyboardType}
  560. function ToAscii(uVirtKey, uScanCode: UINT; lpKeyState: PBYTE; lpChar: LPWORD;
  561.   uFlags: UINT): Integer; stdcall;
  562. {$EXTERNALSYM ToAscii}
  563. function ToAsciiEx(uVirtKey, uScanCode: UINT; lpKeyState: PBYTE; lpChar: LPWORD;
  564.   uFlags: UINT; dwhkl: HKL): Integer; stdcall;
  565. {$EXTERNALSYM ToAsciiEx}
  566. function ToUnicode(wVirtKey, wScanCode: UINT; lpKeyState: PBYTE; pwszBuff: LPWSTR;
  567.   cchBuff: Integer; wFlags: UINT): Integer; stdcall;
  568. {$EXTERNALSYM ToUnicode}
  569. function OemKeyScan(wOemChar: WORD): DWORD; stdcall;
  570. {$EXTERNALSYM OemKeyScan}
  571. function VkKeyScanA(ch: CHAR): SHORT; stdcall;
  572. {$EXTERNALSYM VkKeyScanA}
  573. function VkKeyScanW(ch: WCHAR): SHORT; stdcall;
  574. {$EXTERNALSYM VkKeyScanW}
  575. {$IFDEF UNICODE}
  576. function VkKeyScan(ch: WCHAR): SHORT; stdcall;
  577. {$EXTERNALSYM VkKeyScan}
  578. {$ELSE}
  579. function VkKeyScan(ch: CHAR): SHORT; stdcall;
  580. {$EXTERNALSYM VkKeyScan}
  581. {$ENDIF}
  582. function VkKeyScanExA(ch: CHAR; dwhkl: HKL): SHORT; stdcall;
  583. {$EXTERNALSYM VkKeyScanExA}
  584. function VkKeyScanExW(ch: WCHAR; dwhkl: HKL): SHORT; stdcall;
  585. {$EXTERNALSYM VkKeyScanExW}
  586. {$IFDEF UNICODE}
  587. function VkKeyScanEx(ch: WCHAR; dwhkl: HKL): SHORT; stdcall;
  588. {$EXTERNALSYM VkKeyScanEx}
  589. {$ELSE}
  590. function VkKeyScanEx(ch: CHAR; dwhkl: HKL): SHORT; stdcall;
  591. {$EXTERNALSYM VkKeyScanEx}
  592. {$ENDIF}
  593. const
  594.   KEYEVENTF_EXTENDEDKEY = $0001;
  595.   {$EXTERNALSYM KEYEVENTF_EXTENDEDKEY}
  596.   KEYEVENTF_KEYUP       = $0002;
  597.   {$EXTERNALSYM KEYEVENTF_KEYUP}
  598.   KEYEVENTF_UNICODE  = $0004;
  599.   {$EXTERNALSYM KEYEVENTF_UNICODE}
  600.   KEYEVENTF_SCANCODE = $0008;
  601.   {$EXTERNALSYM KEYEVENTF_SCANCODE}
  602. procedure keybd_event(bVk, bScan: BYTE; dwFlags: DWORD; dwExtraInfo: ULONG_PTR); stdcall;
  603. {$EXTERNALSYM keybd_event}
  604. const
  605.   MOUSEEVENTF_MOVE        = $0001; // mouse move
  606.   {$EXTERNALSYM MOUSEEVENTF_MOVE}
  607.   MOUSEEVENTF_LEFTDOWN    = $0002; // left button down
  608.   {$EXTERNALSYM MOUSEEVENTF_LEFTDOWN}
  609.   MOUSEEVENTF_LEFTUP      = $0004; // left button up
  610.   {$EXTERNALSYM MOUSEEVENTF_LEFTUP}
  611.   MOUSEEVENTF_RIGHTDOWN   = $0008; // right button down
  612.   {$EXTERNALSYM MOUSEEVENTF_RIGHTDOWN}
  613.   MOUSEEVENTF_RIGHTUP     = $0010; // right button up
  614.   {$EXTERNALSYM MOUSEEVENTF_RIGHTUP}
  615.   MOUSEEVENTF_MIDDLEDOWN  = $0020; // middle button down
  616.   {$EXTERNALSYM MOUSEEVENTF_MIDDLEDOWN}
  617.   MOUSEEVENTF_MIDDLEUP    = $0040; // middle button up
  618.   {$EXTERNALSYM MOUSEEVENTF_MIDDLEUP}
  619.   MOUSEEVENTF_XDOWN       = $0080; // x button down
  620.   {$EXTERNALSYM MOUSEEVENTF_XDOWN}
  621.   MOUSEEVENTF_XUP         = $0100; // x button down
  622.   {$EXTERNALSYM MOUSEEVENTF_XUP}
  623.   MOUSEEVENTF_WHEEL       = $0800; // wheel button rolled
  624.   {$EXTERNALSYM MOUSEEVENTF_WHEEL}
  625.   MOUSEEVENTF_VIRTUALDESK = $4000; // map to entire virtual desktop
  626.   {$EXTERNALSYM MOUSEEVENTF_VIRTUALDESK}
  627.   MOUSEEVENTF_ABSOLUTE    = $8000; // absolute move
  628.   {$EXTERNALSYM MOUSEEVENTF_ABSOLUTE}
  629. procedure mouse_event(dwFlags, dx, dy, dwData: DWORD; dwExtraInfo: ULONG_PTR); stdcall;
  630. {$EXTERNALSYM mouse_event}
  631. type
  632.   LPMOUSEINPUT = ^MOUSEINPUT;
  633.   {$EXTERNALSYM LPMOUSEINPUT}
  634.   tagMOUSEINPUT = record
  635.     dx: LONG;
  636.     dy: LONG;
  637.     mouseData: DWORD;
  638.     dwFlags: DWORD;
  639.     time: DWORD;
  640.     dwExtraInfo: ULONG_PTR;
  641.   end;
  642.   {$EXTERNALSYM MOUSEINPUT}
  643.   MOUSEINPUT = tagMOUSEINPUT;
  644.   {$EXTERNALSYM MOUSEINPUT}
  645.   TMouseInput = MOUSEINPUT;
  646.   PMouseInput = LPMOUSEINPUT;
  647.   LPKEYBDINPUT = ^KEYBDINPUT;
  648.   {$EXTERNALSYM LPKEYBDINPUT}
  649.   tagKEYBDINPUT = record
  650.     wVk: WORD;
  651.     wScan: WORD;
  652.     dwFlags: DWORD;
  653.     time: DWORD;
  654.     dwExtraInfo: ULONG_PTR;
  655.   end;
  656.   {$EXTERNALSYM tagKEYBDINPUT}
  657.   KEYBDINPUT = tagKEYBDINPUT;
  658.   {$EXTERNALSYM KEYBDINPUT}
  659.   TKeybdinput = KEYBDINPUT;
  660.   PKeybdInput = LPKEYBDINPUT;
  661.   LPHARDWAREINPUT = ^HARDWAREINPUT;
  662.   {$EXTERNALSYM LPHARDWAREINPUT}
  663.   tagHARDWAREINPUT = record
  664.     uMsg: DWORD;
  665.     wParamL: WORD;
  666.     wParamH: WORD;
  667.   end;
  668.   {$EXTERNALSYM tagHARDWAREINPUT}
  669.   HARDWAREINPUT = tagHARDWAREINPUT;
  670.   {$EXTERNALSYM HARDWAREINPUT}
  671.   THardwareInput = HARDWAREINPUT;
  672.   PHardwareInput = LPHARDWAREINPUT;
  673. const
  674.   INPUT_MOUSE    = 0;
  675.   {$EXTERNALSYM INPUT_MOUSE}
  676.   INPUT_KEYBOARD = 1;
  677.   {$EXTERNALSYM INPUT_KEYBOARD}
  678.   INPUT_HARDWARE = 2;
  679.   {$EXTERNALSYM INPUT_HARDWARE}
  680. type
  681.   LPINPUT = ^INPUT;
  682.   {$EXTERNALSYM LPINPUT}
  683.   tagINPUT = record
  684.     type_: DWORD;
  685.     case Integer of
  686.       0: (mi: MOUSEINPUT);
  687.       1: (ki: KEYBDINPUT);
  688.       2: (hi: HARDWAREINPUT);
  689.   end;
  690.   {$EXTERNALSYM tagINPUT}
  691.   INPUT = tagINPUT;
  692.   {$EXTERNALSYM INPUT}
  693.   TInput = INPUT;
  694.   PInput = LPINPUT;
  695. function SendInput(cInputs: UINT; pInputs: LPINPUT; cbSize: Integer): UINT; stdcall;
  696. {$EXTERNALSYM SendInput}
  697. type
  698.   PLASTINPUTINFO = ^LASTINPUTINFO;
  699.   tagLASTINPUTINFO = record
  700.     cbSize: UINT;
  701.     dwTime: DWORD;
  702.   end;
  703.   {$EXTERNALSYM tagLASTINPUTINFO}
  704.   LASTINPUTINFO = tagLASTINPUTINFO;
  705.   {$EXTERNALSYM LASTINPUTINFO}
  706.   TLastInputInfo = LASTINPUTINFO;
  707. function GetLastInputInfo(var plii: LASTINPUTINFO): BOOL; stdcall;
  708. {$EXTERNALSYM GetLastInputInfo}
  709. function MapVirtualKeyA(uCode, uMapType: UINT): UINT; stdcall;
  710. {$EXTERNALSYM MapVirtualKeyA}
  711. function MapVirtualKeyW(uCode, uMapType: UINT): UINT; stdcall;
  712. {$EXTERNALSYM MapVirtualKeyW}
  713. {$IFDEF UNICODE}
  714. function MapVirtualKey(uCode, uMapType: UINT): UINT; stdcall;
  715. {$EXTERNALSYM MapVirtualKey}
  716. {$ELSE}
  717. function MapVirtualKey(uCode, uMapType: UINT): UINT; stdcall;
  718. {$EXTERNALSYM MapVirtualKey}
  719. {$ENDIF}
  720. function MapVirtualKeyExA(uCode, uMapType: UINT; dwhkl: HKL): UINT; stdcall;
  721. {$EXTERNALSYM MapVirtualKeyExA}
  722. function MapVirtualKeyExW(uCode, uMapType: UINT; dwhkl: HKL): UINT; stdcall;
  723. {$EXTERNALSYM MapVirtualKeyExW}
  724. {$IFDEF UNICODE}
  725. function MapVirtualKeyEx(uCode, uMapType: UINT; dwhkl: HKL): UINT; stdcall;
  726. {$EXTERNALSYM MapVirtualKeyEx}
  727. {$ELSE}
  728. function MapVirtualKeyEx(uCode, uMapType: UINT; dwhkl: HKL): UINT; stdcall;
  729. {$EXTERNALSYM MapVirtualKeyEx}
  730. {$ENDIF}
  731. function GetInputState: BOOL; stdcall;
  732. {$EXTERNALSYM GetInputState}
  733. function GetQueueStatus(flags: UINT): DWORD; stdcall;
  734. {$EXTERNALSYM GetQueueStatus}
  735. function GetCapture: HWND; stdcall;
  736. {$EXTERNALSYM GetCapture}
  737. function SetCapture(hWnd: HWND): HWND; stdcall;
  738. {$EXTERNALSYM SetCapture}
  739. function ReleaseCapture: BOOL; stdcall;
  740. {$EXTERNALSYM ReleaseCapture}
  741. function MsgWaitForMultipleObjects(nCount: DWORD; pHandles: PHANDLE;
  742.   fWaitAll: BOOL; dwMilliseconds: DWORD; dwWakeMask: DWORD): DWORD; stdcall;
  743. {$EXTERNALSYM MsgWaitForMultipleObjects}
  744. function MsgWaitForMultipleObjectsEx(nCount: DWORD; pHandles: PHANDLE;
  745.   dwMilliseconds: DWORD; dwWakeMask: DWORD; dwFlags: DWORD): DWORD; stdcall;
  746. {$EXTERNALSYM MsgWaitForMultipleObjectsEx}
  747. const
  748.   MWMO_WAITALL        = $0001;
  749.   {$EXTERNALSYM MWMO_WAITALL}
  750.   MWMO_ALERTABLE      = $0002;
  751.   {$EXTERNALSYM MWMO_ALERTABLE}
  752.   MWMO_INPUTAVAILABLE = $0004;
  753.   {$EXTERNALSYM MWMO_INPUTAVAILABLE}
  754. //
  755. // Windows Functions
  756. //
  757. function SetTimer(hWnd: HWND; nIDEvent: UINT_PTR; uElapse: UINT;
  758.   lpTimerFunc: TIMERPROC): UINT_PTR; stdcall;
  759. {$EXTERNALSYM SetTimer}
  760. function KillTimer(hWnd: HWND; uIDEvent: UINT_PTR): BOOL; stdcall;
  761. {$EXTERNALSYM KillTimer}
  762. function IsWindowUnicode(hWnd: HWND): BOOL; stdcall;
  763. {$EXTERNALSYM IsWindowUnicode}
  764. function EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL; stdcall;
  765. {$EXTERNALSYM EnableWindow}
  766. function IsWindowEnabled(hWnd: HWND): BOOL; stdcall;
  767. {$EXTERNALSYM IsWindowEnabled}
  768. function LoadAcceleratorsA(hInstance: HINSTANCE; lpTableName: LPCSTR): HACCEL; stdcall;
  769. {$EXTERNALSYM LoadAcceleratorsA}
  770. function LoadAcceleratorsW(hInstance: HINSTANCE; lpTableName: LPCWSTR): HACCEL; stdcall;
  771. {$EXTERNALSYM LoadAcceleratorsW}
  772. {$IFDEF UNICODE}
  773. function LoadAccelerators(hInstance: HINSTANCE; lpTableName: LPCWSTR): HACCEL; stdcall;
  774. {$EXTERNALSYM LoadAccelerators}
  775. {$ELSE}
  776. function LoadAccelerators(hInstance: HINSTANCE; lpTableName: LPCSTR): HACCEL; stdcall;
  777. {$EXTERNALSYM LoadAccelerators}
  778. {$ENDIF}
  779. function CreateAcceleratorTableA(lpaccl: LPACCEL; cEntries: Integer): HACCEL; stdcall;
  780. {$EXTERNALSYM CreateAcceleratorTableA}
  781. function CreateAcceleratorTableW(lpaccl: LPACCEL; cEntries: Integer): HACCEL; stdcall;
  782. {$EXTERNALSYM CreateAcceleratorTableW}
  783. {$IFDEF UNICODE}
  784. function CreateAcceleratorTable(lpaccl: LPACCEL; cEntries: Integer): HACCEL; stdcall;
  785. {$EXTERNALSYM CreateAcceleratorTable}
  786. {$ELSE}
  787. function CreateAcceleratorTable(lpaccl: LPACCEL; cEntries: Integer): HACCEL; stdcall;
  788. {$EXTERNALSYM CreateAcceleratorTable}
  789. {$ENDIF}
  790. function DestroyAcceleratorTable(hAccel: HACCEL): BOOL; stdcall;
  791. {$EXTERNALSYM DestroyAcceleratorTable}
  792. function CopyAcceleratorTableA(hAccelSrc: HACCEL; lpAccelDst: LPACCEL;
  793.   cAccelEntries: Integer): Integer; stdcall;
  794. {$EXTERNALSYM CopyAcceleratorTableA}
  795. function CopyAcceleratorTableW(hAccelSrc: HACCEL; lpAccelDst: LPACCEL;
  796.   cAccelEntries: Integer): Integer; stdcall;
  797. {$EXTERNALSYM CopyAcceleratorTableW}
  798. {$IFDEF UNICODE}
  799. function CopyAcceleratorTable(hAccelSrc: HACCEL; lpAccelDst: LPACCEL;
  800.   cAccelEntries: Integer): Integer; stdcall;
  801. {$EXTERNALSYM CopyAcceleratorTable}
  802. {$ELSE}
  803. function CopyAcceleratorTable(hAccelSrc: HACCEL; lpAccelDst: LPACCEL;
  804.   cAccelEntries: Integer): Integer; stdcall;
  805. {$EXTERNALSYM CopyAcceleratorTable}
  806. {$ENDIF}
  807. function TranslateAcceleratorA(hWnd: HWND; hAccTable: HACCEL; lpMsg: LPMSG): Integer; stdcall;
  808. {$EXTERNALSYM TranslateAcceleratorA}
  809. function TranslateAcceleratorW(hWnd: HWND; hAccTable: HACCEL; lpMsg: LPMSG): Integer; stdcall;
  810. {$EXTERNALSYM TranslateAcceleratorW}
  811. {$IFDEF UNICODE}
  812. function TranslateAccelerator(hWnd: HWND; hAccTable: HACCEL; lpMsg: LPMSG): Integer; stdcall;
  813. {$EXTERNALSYM TranslateAccelerator}
  814. {$ELSE}
  815. function TranslateAccelerator(hWnd: HWND; hAccTable: HACCEL; lpMsg: LPMSG): Integer; stdcall;
  816. {$EXTERNALSYM TranslateAccelerator}
  817. {$ENDIF}
  818. //
  819. // GetSystemMetrics() codes
  820. //
  821. const
  822.   SM_CXSCREEN          = 0;
  823.   {$EXTERNALSYM SM_CXSCREEN}
  824.   SM_CYSCREEN          = 1;
  825.   {$EXTERNALSYM SM_CYSCREEN}
  826.   SM_CXVSCROLL         = 2;
  827.   {$EXTERNALSYM SM_CXVSCROLL}
  828.   SM_CYHSCROLL         = 3;
  829.   {$EXTERNALSYM SM_CYHSCROLL}
  830.   SM_CYCAPTION         = 4;
  831.   {$EXTERNALSYM SM_CYCAPTION}
  832.   SM_CXBORDER          = 5;
  833.   {$EXTERNALSYM SM_CXBORDER}
  834.   SM_CYBORDER          = 6;
  835.   {$EXTERNALSYM SM_CYBORDER}
  836.   SM_CXDLGFRAME        = 7;
  837.   {$EXTERNALSYM SM_CXDLGFRAME}
  838.   SM_CYDLGFRAME        = 8;
  839.   {$EXTERNALSYM SM_CYDLGFRAME}
  840.   SM_CYVTHUMB          = 9;
  841.   {$EXTERNALSYM SM_CYVTHUMB}
  842.   SM_CXHTHUMB          = 10;
  843.   {$EXTERNALSYM SM_CXHTHUMB}
  844.   SM_CXICON            = 11;
  845.   {$EXTERNALSYM SM_CXICON}
  846.   SM_CYICON            = 12;
  847.   {$EXTERNALSYM SM_CYICON}
  848.   SM_CXCURSOR          = 13;
  849.   {$EXTERNALSYM SM_CXCURSOR}
  850.   SM_CYCURSOR          = 14;
  851.   {$EXTERNALSYM SM_CYCURSOR}
  852.   SM_CYMENU            = 15;
  853.   {$EXTERNALSYM SM_CYMENU}
  854.   SM_CXFULLSCREEN      = 16;
  855.   {$EXTERNALSYM SM_CXFULLSCREEN}
  856.   SM_CYFULLSCREEN      = 17;
  857.   {$EXTERNALSYM SM_CYFULLSCREEN}
  858.   SM_CYKANJIWINDOW     = 18;
  859.   {$EXTERNALSYM SM_CYKANJIWINDOW}
  860.   SM_MOUSEPRESENT      = 19;
  861.   {$EXTERNALSYM SM_MOUSEPRESENT}
  862.   SM_CYVSCROLL         = 20;
  863.   {$EXTERNALSYM SM_CYVSCROLL}
  864.   SM_CXHSCROLL         = 21;
  865.   {$EXTERNALSYM SM_CXHSCROLL}
  866.   SM_DEBUG             = 22;
  867.   {$EXTERNALSYM SM_DEBUG}
  868.   SM_SWAPBUTTON        = 23;
  869.   {$EXTERNALSYM SM_SWAPBUTTON}
  870.   SM_RESERVED1         = 24;
  871.   {$EXTERNALSYM SM_RESERVED1}
  872.   SM_RESERVED2         = 25;
  873.   {$EXTERNALSYM SM_RESERVED2}
  874.   SM_RESERVED3         = 26;
  875.   {$EXTERNALSYM SM_RESERVED3}
  876.   SM_RESERVED4         = 27;
  877.   {$EXTERNALSYM SM_RESERVED4}
  878.   SM_CXMIN             = 28;
  879.   {$EXTERNALSYM SM_CXMIN}
  880.   SM_CYMIN             = 29;
  881.   {$EXTERNALSYM SM_CYMIN}
  882.   SM_CXSIZE            = 30;
  883.   {$EXTERNALSYM SM_CXSIZE}
  884.   SM_CYSIZE            = 31;
  885.   {$EXTERNALSYM SM_CYSIZE}
  886.   SM_CXFRAME           = 32;
  887.   {$EXTERNALSYM SM_CXFRAME}
  888.   SM_CYFRAME           = 33;
  889.   {$EXTERNALSYM SM_CYFRAME}
  890.   SM_CXMINTRACK        = 34;
  891.   {$EXTERNALSYM SM_CXMINTRACK}
  892.   SM_CYMINTRACK        = 35;
  893.   {$EXTERNALSYM SM_CYMINTRACK}
  894.   SM_CXDOUBLECLK       = 36;
  895.   {$EXTERNALSYM SM_CXDOUBLECLK}
  896.   SM_CYDOUBLECLK       = 37;
  897.   {$EXTERNALSYM SM_CYDOUBLECLK}
  898.   SM_CXICONSPACING     = 38;
  899.   {$EXTERNALSYM SM_CXICONSPACING}
  900.   SM_CYICONSPACING     = 39;
  901.   {$EXTERNALSYM SM_CYICONSPACING}
  902.   SM_MENUDROPALIGNMENT = 40;
  903.   {$EXTERNALSYM SM_MENUDROPALIGNMENT}
  904.   SM_PENWINDOWS        = 41;
  905.   {$EXTERNALSYM SM_PENWINDOWS}
  906.   SM_DBCSENABLED       = 42;
  907.   {$EXTERNALSYM SM_DBCSENABLED}
  908.   SM_CMOUSEBUTTONS     = 43;
  909.   {$EXTERNALSYM SM_CMOUSEBUTTONS}
  910.   SM_CXFIXEDFRAME = SM_CXDLGFRAME; // ;win40 name change
  911.   {$EXTERNALSYM SM_CXFIXEDFRAME}
  912.   SM_CYFIXEDFRAME = SM_CYDLGFRAME; // ;win40 name change
  913.   {$EXTERNALSYM SM_CYFIXEDFRAME}
  914.   SM_CXSIZEFRAME  = SM_CXFRAME; // ;win40 name change
  915.   {$EXTERNALSYM SM_CXSIZEFRAME}
  916.   SM_CYSIZEFRAME  = SM_CYFRAME; // ;win40 name change
  917.   {$EXTERNALSYM SM_CYSIZEFRAME}
  918.   SM_SECURE       = 44;
  919.   {$EXTERNALSYM SM_SECURE}
  920.   SM_CXEDGE       = 45;
  921.   {$EXTERNALSYM SM_CXEDGE}
  922.   SM_CYEDGE       = 46;
  923.   {$EXTERNALSYM SM_CYEDGE}
  924.   SM_CXMINSPACING = 47;
  925.   {$EXTERNALSYM SM_CXMINSPACING}
  926.   SM_CYMINSPACING = 48;
  927.   {$EXTERNALSYM SM_CYMINSPACING}
  928.   SM_CXSMICON     = 49;
  929.   {$EXTERNALSYM SM_CXSMICON}
  930.   SM_CYSMICON     = 50;
  931.   {$EXTERNALSYM SM_CYSMICON}
  932.   SM_CYSMCAPTION  = 51;
  933.   {$EXTERNALSYM SM_CYSMCAPTION}
  934.   SM_CXSMSIZE     = 52;
  935.   {$EXTERNALSYM SM_CXSMSIZE}
  936.   SM_CYSMSIZE     = 53;
  937.   {$EXTERNALSYM SM_CYSMSIZE}
  938.   SM_CXMENUSIZE   = 54;
  939.   {$EXTERNALSYM SM_CXMENUSIZE}
  940.   SM_CYMENUSIZE   = 55;
  941.   {$EXTERNALSYM SM_CYMENUSIZE}
  942.   SM_ARRANGE      = 56;
  943.   {$EXTERNALSYM SM_ARRANGE}
  944.   SM_CXMINIMIZED  = 57;
  945.   {$EXTERNALSYM SM_CXMINIMIZED}
  946.   SM_CYMINIMIZED  = 58;
  947.   {$EXTERNALSYM SM_CYMINIMIZED}
  948.   SM_CXMAXTRACK   = 59;
  949.   {$EXTERNALSYM SM_CXMAXTRACK}
  950.   SM_CYMAXTRACK   = 60;
  951.   {$EXTERNALSYM SM_CYMAXTRACK}
  952.   SM_CXMAXIMIZED  = 61;
  953.   {$EXTERNALSYM SM_CXMAXIMIZED}
  954.   SM_CYMAXIMIZED  = 62;
  955.   {$EXTERNALSYM SM_CYMAXIMIZED}
  956.   SM_NETWORK      = 63;
  957.   {$EXTERNALSYM SM_NETWORK}
  958.   SM_CLEANBOOT    = 67;
  959.   {$EXTERNALSYM SM_CLEANBOOT}
  960.   SM_CXDRAG       = 68;
  961.   {$EXTERNALSYM SM_CXDRAG}
  962.   SM_CYDRAG       = 69;
  963.   {$EXTERNALSYM SM_CYDRAG}
  964.   SM_SHOWSOUNDS = 70;
  965.   {$EXTERNALSYM SM_SHOWSOUNDS}
  966.   SM_CXMENUCHECK    = 71; // Use instead of GetMenuCheckMarkDimensions()!
  967.   {$EXTERNALSYM SM_CXMENUCHECK}
  968.   SM_CYMENUCHECK    = 72;
  969.   {$EXTERNALSYM SM_CYMENUCHECK}
  970.   SM_SLOWMACHINE    = 73;
  971.   {$EXTERNALSYM SM_SLOWMACHINE}
  972.   SM_MIDEASTENABLED = 74;
  973.   {$EXTERNALSYM SM_MIDEASTENABLED}
  974.   SM_MOUSEWHEELPRESENT = 75;
  975.   {$EXTERNALSYM SM_MOUSEWHEELPRESENT}
  976.   SM_XVIRTUALSCREEN    = 76;
  977.   {$EXTERNALSYM SM_XVIRTUALSCREEN}
  978.   SM_YVIRTUALSCREEN    = 77;
  979.   {$EXTERNALSYM SM_YVIRTUALSCREEN}
  980.   SM_CXVIRTUALSCREEN   = 78;
  981.   {$EXTERNALSYM SM_CXVIRTUALSCREEN}
  982.   SM_CYVIRTUALSCREEN   = 79;
  983.   {$EXTERNALSYM SM_CYVIRTUALSCREEN}
  984.   SM_CMONITORS         = 80;
  985.   {$EXTERNALSYM SM_CMONITORS}
  986.   SM_SAMEDISPLAYFORMAT = 81;
  987.   {$EXTERNALSYM SM_SAMEDISPLAYFORMAT}
  988.   SM_IMMENABLED        = 82;
  989.   {$EXTERNALSYM SM_IMMENABLED}
  990.   SM_CXFOCUSBORDER     = 83;
  991.   {$EXTERNALSYM SM_CXFOCUSBORDER}
  992.   SM_CYFOCUSBORDER     = 84;
  993.   {$EXTERNALSYM SM_CYFOCUSBORDER}
  994. //#if(_WIN32_WINNT >= 0x0501)
  995.   SM_TABLETPC          = 86;
  996.   {$EXTERNALSYM SM_TABLETPC}
  997.   SM_MEDIACENTER       = 87;
  998.   {$EXTERNALSYM SM_MEDIACENTER}
  999. //#endif /* _WIN32_WINNT >= 0x0501 */
  1000. { TODO
  1001. #if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400))
  1002. #define SM_CMETRICS             76
  1003. #elif WINVER == 0x500
  1004. #define SM_CMETRICS             83
  1005. #else
  1006. #define SM_CMETRICS             88
  1007. #endif
  1008. }
  1009. const
  1010.   SM_CMETRICS = 76;
  1011.   {$EXTERNALSYM SM_CMETRICS}
  1012.   SM_REMOTESESSION = $1000;
  1013.   {$EXTERNALSYM SM_REMOTESESSION}
  1014.   SM_SHUTTINGDOWN  = $2000;
  1015.   {$EXTERNALSYM SM_SHUTTINGDOWN}
  1016. //#if(WINVER >= 0x0501)
  1017.   SM_REMOTECONTROL = $2001;
  1018.   {$EXTERNALSYM SM_REMOTECONTROL}
  1019. //#endif /* WINVER >= 0x0501 */
  1020. function GetSystemMetrics(nIndex: Integer): Integer; stdcall;
  1021. {$EXTERNALSYM GetSystemMetrics}
  1022. function LoadMenuA(hInstance: HINSTANCE; lpMenuName: LPCSTR): HMENU; stdcall;
  1023. {$EXTERNALSYM LoadMenuA}
  1024. function LoadMenuW(hInstance: HINSTANCE; lpMenuName: LPCWSTR): HMENU; stdcall;
  1025. {$EXTERNALSYM LoadMenuW}
  1026. {$IFDEF UNICODE}
  1027. function LoadMenu(hInstance: HINSTANCE; lpMenuName: LPCWSTR): HMENU; stdcall;
  1028. {$EXTERNALSYM LoadMenu}
  1029. {$ELSE}
  1030. function LoadMenu(hInstance: HINSTANCE; lpMenuName: LPCSTR): HMENU; stdcall;
  1031. {$EXTERNALSYM LoadMenu}
  1032. {$ENDIF}
  1033. function LoadMenuIndirectA(lpMenuTemplate: LPMENUTEMPLATEA): HMENU; stdcall;
  1034. {$EXTERNALSYM LoadMenuIndirectA}
  1035. function LoadMenuIndirectW(lpMenuTemplate: LPMENUTEMPLATEW): HMENU; stdcall;
  1036. {$EXTERNALSYM LoadMenuIndirectW}
  1037. {$IFDEF UNICODE}
  1038. function LoadMenuIndirect(lpMenuTemplate: LPMENUTEMPLATEW): HMENU; stdcall;
  1039. {$EXTERNALSYM LoadMenuIndirect}
  1040. {$ELSE}
  1041. function LoadMenuIndirect(lpMenuTemplate: LPMENUTEMPLATEA): HMENU; stdcall;
  1042. {$EXTERNALSYM LoadMenuIndirect}
  1043. {$ENDIF}
  1044. function GetMenu(hWnd: HWND): HMENU; stdcall;
  1045. {$EXTERNALSYM GetMenu}
  1046. function SetMenu(hWnd: HWND; hMenu: HMENU): BOOL; stdcall;
  1047. {$EXTERNALSYM SetMenu}
  1048. function ChangeMenuA(hMenu: HMENU; cmd: UINT; lpszNewItem: LPCSTR;
  1049.   cmdInsert: UINT; flags: UINT): BOOL; stdcall;
  1050. {$EXTERNALSYM ChangeMenuA}
  1051. function ChangeMenuW(hMenu: HMENU; cmd: UINT; lpszNewItem: LPCWSTR;
  1052.   cmdInsert: UINT; flags: UINT): BOOL; stdcall;
  1053. {$EXTERNALSYM ChangeMenuW}
  1054. {$IFDEF UNICODE}
  1055. function ChangeMenu(hMenu: HMENU; cmd: UINT; lpszNewItem: LPCWSTR;
  1056.   cmdInsert: UINT; flags: UINT): BOOL; stdcall;
  1057. {$EXTERNALSYM ChangeMenu}
  1058. {$ELSE}
  1059. function ChangeMenu(hMenu: HMENU; cmd: UINT; lpszNewItem: LPCSTR;
  1060.   cmdInsert: UINT; flags: UINT): BOOL; stdcall;
  1061. {$EXTERNALSYM ChangeMenu}
  1062. {$ENDIF}
  1063. function HiliteMenuItem(hWnd: HWND; hMenu: HMENU; uIDHiliteItem: UINT; uHilite: UINT): BOOL; stdcall;
  1064. {$EXTERNALSYM HiliteMenuItem}
  1065. function GetMenuStringA(hMenu: HMENU; uIDItem: UINT; lpString: LPSTR;
  1066.   nMaxCount: Integer; uFlag: UINT): Integer; stdcall;
  1067. {$EXTERNALSYM GetMenuStringA}
  1068. function GetMenuStringW(hMenu: HMENU; uIDItem: UINT; lpString: LPWSTR;
  1069.   nMaxCount: Integer; uFlag: UINT): Integer; stdcall;
  1070. {$EXTERNALSYM GetMenuStringW}
  1071. {$IFDEF UNICODE}
  1072. function GetMenuString(hMenu: HMENU; uIDItem: UINT; lpString: LPWSTR;
  1073.   nMaxCount: Integer; uFlag: UINT): Integer; stdcall;
  1074. {$EXTERNALSYM GetMenuString}
  1075. {$ELSE}
  1076. function GetMenuString(hMenu: HMENU; uIDItem: UINT; lpString: LPSTR;
  1077.   nMaxCount: Integer; uFlag: UINT): Integer; stdcall;
  1078. {$EXTERNALSYM GetMenuString}
  1079. {$ENDIF}
  1080. function GetMenuState(hMenu: HMENU; uId, uFlags: UINT): UINT; stdcall;
  1081. {$EXTERNALSYM GetMenuState}
  1082. function DrawMenuBar(hWnd: HWND): BOOL; stdcall;
  1083. {$EXTERNALSYM DrawMenuBar}
  1084. const
  1085.   PMB_ACTIVE = $00000001;
  1086.   {$EXTERNALSYM PMB_ACTIVE}
  1087.   
  1088. function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; stdcall;
  1089. {$EXTERNALSYM GetSystemMenu}
  1090. function CreateMenu: HMENU; stdcall;
  1091. {$EXTERNALSYM CreateMenu}
  1092. function CreatePopupMenu: HMENU; stdcall;
  1093. {$EXTERNALSYM CreatePopupMenu}
  1094. function DestroyMenu(hMenu: HMENU): BOOL; stdcall;
  1095. {$EXTERNALSYM DestroyMenu}
  1096. function CheckMenuItem(hMenu: HMENU; uIDCheckItem, uCheck: UINT): DWORD; stdcall;
  1097. {$EXTERNALSYM CheckMenuItem}
  1098. function EnableMenuItem(hMenu: HMENU; uIDEnableItem, uEnable: UINT): BOOL; stdcall;
  1099. {$EXTERNALSYM EnableMenuItem}
  1100. function GetSubMenu(hMenu: HMENU; nPos: Integer): HMENU; stdcall;
  1101. {$EXTERNALSYM GetSubMenu}
  1102. function GetMenuItemID(hMenu: HMENU; nPos: Integer): UINT; stdcall;
  1103. {$EXTERNALSYM GetMenuItemID}
  1104. function GetMenuItemCount(hMenu: HMENU): Integer; stdcall;
  1105. {$EXTERNALSYM GetMenuItemCount}
  1106. function InsertMenuA(hMenu: HMENU; uPosition, uFlags: UINT; uIDNewItem: UINT_PTR;
  1107.   lpNewItem: LPCSTR): BOOL; stdcall;
  1108. {$EXTERNALSYM InsertMenuA}
  1109. function InsertMenuW(hMenu: HMENU; uPosition, uFlags: UINT; uIDNewItem: UINT_PTR;
  1110.   lpNewItem: LPCWSTR): BOOL; stdcall;
  1111. {$EXTERNALSYM InsertMenuW}
  1112. {$IFDEF UNICODE}
  1113. function InsertMenu(hMenu: HMENU; uPosition, uFlags: UINT; uIDNewItem: UINT_PTR;
  1114.   lpNewItem: LPCWSTR): BOOL; stdcall;
  1115. {$EXTERNALSYM InsertMenu}
  1116. {$ELSE}
  1117. function InsertMenu(hMenu: HMENU; uPosition, uFlags: UINT; uIDNewItem: UINT_PTR;
  1118.   lpNewItem: LPCSTR): BOOL; stdcall;
  1119. {$EXTERNALSYM InsertMenu}
  1120. {$ENDIF}
  1121. function AppendMenuA(hMenu: HMENU; uFlags: UINT; uIDNewItem: UINT_PTR;
  1122.   lpNewItem: LPCSTR): BOOL; stdcall;
  1123. {$EXTERNALSYM AppendMenuA}
  1124. function AppendMenuW(hMenu: HMENU; uFlags: UINT; uIDNewItem: UINT_PTR;
  1125.   lpNewItem: LPCWSTR): BOOL; stdcall;
  1126. {$EXTERNALSYM AppendMenuW}
  1127. {$IFDEF UNICODE}
  1128. function AppendMenu(hMenu: HMENU; uFlags: UINT; uIDNewItem: UINT_PTR;
  1129.   lpNewItem: LPCWSTR): BOOL; stdcall;
  1130. {$EXTERNALSYM AppendMenu}
  1131. {$ELSE}
  1132. function AppendMenu(hMenu: HMENU; uFlags: UINT; uIDNewItem: UINT_PTR;
  1133.   lpNewItem: LPCSTR): BOOL; stdcall;
  1134. {$EXTERNALSYM AppendMenu}
  1135. {$ENDIF}
  1136. function ModifyMenuA(hMnu: HMENU; uPosition: UINT; uFlags: UINT;
  1137.   uIDNewItem: UINT_PTR; lpNewItem: LPCSTR): BOOL; stdcall;
  1138. {$EXTERNALSYM ModifyMenuA}
  1139. function ModifyMenuW(hMnu: HMENU; uPosition: UINT; uFlags: UINT;
  1140.   uIDNewItem: UINT_PTR; lpNewItem: LPCWSTR): BOOL; stdcall;
  1141. {$EXTERNALSYM ModifyMenuW}
  1142. {$IFDEF UNICODE}
  1143. function ModifyMenu(hMnu: HMENU; uPosition: UINT; uFlags: UINT;
  1144.   uIDNewItem: UINT_PTR; lpNewItem: LPCWSTR): BOOL; stdcall;
  1145. {$EXTERNALSYM ModifyMenu}
  1146. {$ELSE}
  1147. function ModifyMenu(hMnu: HMENU; uPosition: UINT; uFlags: UINT;
  1148.   uIDNewItem: UINT_PTR; lpNewItem: LPCSTR): BOOL; stdcall;
  1149. {$EXTERNALSYM ModifyMenu}
  1150. {$ENDIF}
  1151. function RemoveMenu(hMenu: HMENU; uPosition: UINT; uFlags: UINT): BOOL; stdcall;
  1152. {$EXTERNALSYM RemoveMenu}
  1153. function DeleteMenu(hMenu: HMENU; uPosition: UINT; uFlags: UINT): BOOL; stdcall;
  1154. {$EXTERNALSYM DeleteMenu}
  1155. function SetMenuItemBitmaps(hMenu: HMENU; uPosition: UINT; uFlags: UINT;
  1156.   hBitmapUnchecked: HBITMAP; hBitmapChecked: HBITMAP): BOOL; stdcall;
  1157. {$EXTERNALSYM SetMenuItemBitmaps}
  1158. function GetMenuCheckMarkDimensions: LONG; stdcall;
  1159. {$EXTERNALSYM GetMenuCheckMarkDimensions}
  1160. function TrackPopupMenu(hMenu: HMENU; uFlags: UINT; x: Integer; y: Integer;
  1161.   nReserved: Integer; hWnd: HWND; prcRect: LPRECT): BOOL; stdcall;
  1162. {$EXTERNALSYM TrackPopupMenu}
  1163. // return codes for WM_MENUCHAR//
  1164. const
  1165.   MNC_IGNORE  = 0;
  1166.   {$EXTERNALSYM MNC_IGNORE}
  1167.   MNC_CLOSE   = 1;
  1168.   {$EXTERNALSYM MNC_CLOSE}
  1169.   MNC_EXECUTE = 2;
  1170.   {$EXTERNALSYM MNC_EXECUTE}
  1171.   MNC_SELECT  = 3;
  1172.   {$EXTERNALSYM MNC_SELECT}
  1173. type
  1174.   LPTPMPARAMS = ^TPMPARAMS;
  1175.   {$EXTERNALSYM LPTPMPARAMS}
  1176.   tagTPMPARAMS = record
  1177.     cbSize: UINT;    // Size of structure
  1178.     rcExclude: RECT; // Screen coordinates of rectangle to exclude when positioning
  1179.   end;
  1180.   {$EXTERNALSYM tagTPMPARAMS}
  1181.   TPMPARAMS = tagTPMPARAMS;
  1182.   {$EXTERNALSYM TPMPARAMS}
  1183.   TTPMParams = TPMPARAMS;
  1184.   PTPMParams = LPTPMPARAMS;
  1185. function TrackPopupMenuEx(hmenu: HMENU; fuflags: UINT; x, y: Integer;
  1186.   hwnd: HWND; lptpm: LPTPMPARAMS): BOOL; stdcall;
  1187. {$EXTERNALSYM TrackPopupMenuEx}
  1188. const
  1189.   MNS_NOCHECK     = $80000000;
  1190.   {$EXTERNALSYM MNS_NOCHECK}
  1191.   MNS_MODELESS    = $40000000;
  1192.   {$EXTERNALSYM MNS_MODELESS}
  1193.   MNS_DRAGDROP    = $20000000;
  1194.   {$EXTERNALSYM MNS_DRAGDROP}
  1195.   MNS_AUTODISMISS = $10000000;
  1196.   {$EXTERNALSYM MNS_AUTODISMISS}
  1197.   MNS_NOTIFYBYPOS = $08000000;
  1198.   {$EXTERNALSYM MNS_NOTIFYBYPOS}
  1199.   MNS_CHECKORBMP  = $04000000;
  1200.   {$EXTERNALSYM MNS_CHECKORBMP}
  1201.   MIM_MAXHEIGHT       = $00000001;
  1202.   {$EXTERNALSYM MIM_MAXHEIGHT}
  1203.   MIM_BACKGROUND      = $00000002;
  1204.   {$EXTERNALSYM MIM_BACKGROUND}
  1205.   MIM_HELPID          = $00000004;
  1206.   {$EXTERNALSYM MIM_HELPID}
  1207.   MIM_MENUDATA        = $00000008;
  1208.   {$EXTERNALSYM MIM_MENUDATA}
  1209.   MIM_STYLE           = $00000010;
  1210.   {$EXTERNALSYM MIM_STYLE}
  1211.   MIM_APPLYTOSUBMENUS = $80000000;
  1212.   {$EXTERNALSYM MIM_APPLYTOSUBMENUS}
  1213. type
  1214.   LPMENUINFO = ^MENUINFO;
  1215.   {$EXTERNALSYM LPMENUINFO}
  1216.   tagMENUINFO = record
  1217.     cbSize: DWORD;
  1218.     fMask: DWORD;
  1219.     dwStyle: DWORD;
  1220.     cyMax: UINT;
  1221.     hbrBack: HBRUSH;
  1222.     dwContextHelpID: DWORD;
  1223.     dwMenuData: ULONG_PTR;
  1224.   end;
  1225.   {$EXTERNALSYM tagMENUINFO}
  1226.   MENUINFO = tagMENUINFO;
  1227.   {$EXTERNALSYM MENUINFO}
  1228.   TMenuinfo = MENUINFO;
  1229.   PMenuinfo = LPMENUINFO;
  1230.   LPCMENUINFO = ^MENUINFO;
  1231.   {$EXTERNALSYM LPCMENUINFO}
  1232. function GetMenuInfo(hmenu: HMENU; var lpcmi: MENUINFO): BOOL; stdcall;
  1233. {$EXTERNALSYM GetMenuInfo}
  1234. function SetMenuInfo(hemnu: HMENU; const lpcmi: MENUINFO): BOOL; stdcall;
  1235. {$EXTERNALSYM SetMenuInfo}
  1236. function EndMenu: BOOL; stdcall;
  1237. {$EXTERNALSYM EndMenu}
  1238. //
  1239. // WM_MENUDRAG return values.
  1240. //
  1241. const
  1242.   MND_CONTINUE = 0;
  1243.   {$EXTERNALSYM MND_CONTINUE}
  1244.   MND_ENDMENU  = 1;
  1245.   {$EXTERNALSYM MND_ENDMENU}
  1246. type
  1247.   PMENUGETOBJECTINFO = ^MENUGETOBJECTINFO;
  1248.   tagMENUGETOBJECTINFO = record
  1249.     dwFlags: DWORD;
  1250.     uPos: UINT;
  1251.     hmenu: HMENU;
  1252.     riid: PVOID;
  1253.     pvObj: PVOID;
  1254.   end;
  1255.   {$EXTERNALSYM tagMENUGETOBJECTINFO}
  1256.   MENUGETOBJECTINFO = tagMENUGETOBJECTINFO;
  1257.   {$EXTERNALSYM MENUGETOBJECTINFO}
  1258.   TMenuGetObjectInfo = MENUGETOBJECTINFO;
  1259. //
  1260. // MENUGETOBJECTINFO dwFlags values
  1261. //
  1262. const
  1263.   MNGOF_TOPGAP    = $00000001;
  1264.   {$EXTERNALSYM MNGOF_TOPGAP}
  1265.   MNGOF_BOTTOMGAP = $00000002;
  1266.   {$EXTERNALSYM MNGOF_BOTTOMGAP}
  1267. //
  1268. // WM_MENUGETOBJECT return values
  1269. //
  1270.   MNGO_NOINTERFACE = $00000000;
  1271.   {$EXTERNALSYM MNGO_NOINTERFACE}
  1272.   MNGO_NOERROR     = $00000001;
  1273.   {$EXTERNALSYM MNGO_NOERROR}
  1274.   MIIM_STATE      = $00000001;
  1275.   {$EXTERNALSYM MIIM_STATE}
  1276.   MIIM_ID         = $00000002;
  1277.   {$EXTERNALSYM MIIM_ID}
  1278.   MIIM_SUBMENU    = $00000004;
  1279.   {$EXTERNALSYM MIIM_SUBMENU}
  1280.   MIIM_CHECKMARKS = $00000008;
  1281.   {$EXTERNALSYM MIIM_CHECKMARKS}
  1282.   MIIM_TYPE       = $00000010;
  1283.   {$EXTERNALSYM MIIM_TYPE}
  1284.   MIIM_DATA       = $00000020;
  1285.   {$EXTERNALSYM MIIM_DATA}
  1286.   MIIM_STRING = $00000040;
  1287.   {$EXTERNALSYM MIIM_STRING}
  1288.   MIIM_BITMAP = $00000080;
  1289.   {$EXTERNALSYM MIIM_BITMAP}
  1290.   MIIM_FTYPE  = $00000100;
  1291.   {$EXTERNALSYM MIIM_FTYPE}
  1292.   HBMMENU_CALLBACK        = HBITMAP(-1);
  1293.   {$EXTERNALSYM HBMMENU_CALLBACK}
  1294.   HBMMENU_SYSTEM          = HBITMAP(1);
  1295.   {$EXTERNALSYM HBMMENU_SYSTEM}
  1296.   HBMMENU_MBAR_RESTORE    = HBITMAP(2);
  1297.   {$EXTERNALSYM HBMMENU_MBAR_RESTORE}
  1298.   HBMMENU_MBAR_MINIMIZE   = HBITMAP(3);
  1299.   {$EXTERNALSYM HBMMENU_MBAR_MINIMIZE}
  1300.   HBMMENU_MBAR_CLOSE      = HBITMAP(5);
  1301.   {$EXTERNALSYM HBMMENU_MBAR_CLOSE}
  1302.   HBMMENU_MBAR_CLOSE_D    = HBITMAP(6);
  1303.   {$EXTERNALSYM HBMMENU_MBAR_CLOSE_D}
  1304.   HBMMENU_MBAR_MINIMIZE_D = HBITMAP(7);
  1305.   {$EXTERNALSYM HBMMENU_MBAR_MINIMIZE_D}
  1306.   HBMMENU_POPUP_CLOSE     = HBITMAP(8);
  1307.   {$EXTERNALSYM HBMMENU_POPUP_CLOSE}
  1308.   HBMMENU_POPUP_RESTORE   = HBITMAP(9);
  1309.   {$EXTERNALSYM HBMMENU_POPUP_RESTORE}
  1310.   HBMMENU_POPUP_MAXIMIZE  = HBITMAP(10);
  1311.   {$EXTERNALSYM HBMMENU_POPUP_MAXIMIZE}
  1312.   HBMMENU_POPUP_MINIMIZE  = HBITMAP(11);
  1313.   {$EXTERNALSYM HBMMENU_POPUP_MINIMIZE}
  1314. type
  1315.   LPMENUITEMINFOA = ^MENUITEMINFOA;
  1316.   {$EXTERNALSYM LPMENUITEMINFOA}
  1317.   tagMENUITEMINFOA = record
  1318.     cbSize: UINT;
  1319.     fMask: UINT;
  1320.     fType: UINT;            // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)
  1321.     fState: UINT;           // used if MIIM_STATE
  1322.     wID: UINT;              // used if MIIM_ID
  1323.     hSubMenu: HMENU;        // used if MIIM_SUBMENU
  1324.     hbmpChecked: HBITMAP;   // used if MIIM_CHECKMARKS
  1325.     hbmpUnchecked: HBITMAP; // used if MIIM_CHECKMARKS
  1326.     dwItemData: ULONG_PTR;  // used if MIIM_DATA
  1327.     dwTypeData: LPSTR;      // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
  1328.     cch: UINT;              // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
  1329.     {$IFDEF WINVER_0500_GREATER}
  1330.     hbmpItem: HBITMAP;      // used if MIIM_BITMAP
  1331.     {$ENDIF}
  1332.   end;
  1333.   {$EXTERNALSYM tagMENUITEMINFOA}
  1334.   MENUITEMINFOA = tagMENUITEMINFOA;
  1335.   {$EXTERNALSYM MENUITEMINFOA}
  1336.   TMenuItemInfoA = MENUITEMINFOA;
  1337.   PMenuItemInfoA = LPMENUITEMINFOA;
  1338.   LPMENUITEMINFOW = ^MENUITEMINFOW;
  1339.   {$EXTERNALSYM LPMENUITEMINFOW}
  1340.   tagMENUITEMINFOW = record
  1341.     cbSize: UINT;
  1342.     fMask: UINT;
  1343.     fType: UINT;            // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)
  1344.     fState: UINT;           // used if MIIM_STATE
  1345.     wID: UINT;              // used if MIIM_ID
  1346.     hSubMenu: HMENU;        // used if MIIM_SUBMENU
  1347.     hbmpChecked: HBITMAP;   // used if MIIM_CHECKMARKS
  1348.     hbmpUnchecked: HBITMAP; // used if MIIM_CHECKMARKS
  1349.     dwItemData: ULONG_PTR;  // used if MIIM_DATA
  1350.     dwTypeData: LPWSTR;     // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
  1351.     cch: UINT;              // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
  1352.     {$IFDEF WINVER_0500_GREATER}
  1353.     hbmpItem: HBITMAP;      // used if MIIM_BITMAP
  1354.     {$ENDIF}
  1355.   end;
  1356.   {$EXTERNALSYM tagMENUITEMINFOW}
  1357.   MENUITEMINFOW = tagMENUITEMINFOW;
  1358.   {$EXTERNALSYM MENUITEMINFOW}
  1359.   TMenuItemInfoW = MENUITEMINFOW;
  1360.   PMenuItemInfoW = LPMENUITEMINFOW;
  1361.   LPCMENUITEMINFOA = ^MENUITEMINFOA;
  1362.   {$EXTERNALSYM LPCMENUITEMINFOA}
  1363.   LPCMENUITEMINFOW = ^MENUITEMINFOW;
  1364.   {$EXTERNALSYM LPCMENUITEMINFOW}
  1365. {$IFDEF UNICODE}
  1366.   MENUITEMINFO = MENUITEMINFOW;
  1367.   {$EXTERNALSYM MENUITEMINFO}
  1368.   LPMENUITEMINFO = LPMENUITEMINFOW;
  1369.   {$EXTERNALSYM LPMENUITEMINFO}
  1370.   TMenuItemInfo = TMenuItemInfoW;
  1371.   PMenuItemInfo = PMenuItemInfoW;
  1372.   LPCMENUITEMINFO = LPCMENUITEMINFOW;
  1373.   {$EXTERNALSYM LPCMENUITEMINFO}
  1374. {$ELSE}
  1375.   MENUITEMINFO = MENUITEMINFOA;
  1376.   {$EXTERNALSYM MENUITEMINFO}
  1377.   LPMENUITEMINFO = LPMENUITEMINFOA;
  1378.   {$EXTERNALSYM LPMENUITEMINFO}
  1379.   TMenuItemInfo = TMenuItemInfoA;
  1380.   PMenuItemInfo = PMenuItemInfoA;
  1381.   LPCMENUITEMINFO = LPCMENUITEMINFOA;
  1382.   {$EXTERNALSYM LPCMENUITEMINFO}
  1383. {$ENDIF}
  1384. function InsertMenuItemA(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1385.   const lpmii: MENUITEMINFOA): BOOL; stdcall;
  1386. {$EXTERNALSYM InsertMenuItemA}
  1387. function InsertMenuItemW(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1388.   const lpmii: MENUITEMINFOW): BOOL; stdcall;
  1389. {$EXTERNALSYM InsertMenuItemW}
  1390. {$IFDEF UNICODE}
  1391. function InsertMenuItem(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1392.   const lpmii: MENUITEMINFOW): BOOL; stdcall;
  1393. {$EXTERNALSYM InsertMenuItem}
  1394. {$ELSE}
  1395. function InsertMenuItem(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1396.   const lpmii: MENUITEMINFOA): BOOL; stdcall;
  1397. {$EXTERNALSYM InsertMenuItem}
  1398. {$ENDIF}
  1399. function GetMenuItemInfoA(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1400.   var lpmii: MENUITEMINFOA): BOOL; stdcall;
  1401. {$EXTERNALSYM GetMenuItemInfoA}
  1402. function GetMenuItemInfoW(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1403.   var lpmii: MENUITEMINFOW): BOOL; stdcall;
  1404. {$EXTERNALSYM GetMenuItemInfoW}
  1405. {$IFDEF UNICODE}
  1406. function GetMenuItemInfo(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1407.   var lpmii: MENUITEMINFOW): BOOL; stdcall;
  1408. {$EXTERNALSYM GetMenuItemInfo}
  1409. {$ELSE}
  1410. function GetMenuItemInfo(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1411.   var lpmii: MENUITEMINFOA): BOOL; stdcall;
  1412. {$EXTERNALSYM GetMenuItemInfo}
  1413. {$ENDIF}
  1414. function SetMenuItemInfoA(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1415.   const lpmii: MENUITEMINFOA): BOOL; stdcall;
  1416. {$EXTERNALSYM SetMenuItemInfoA}
  1417. function SetMenuItemInfoW(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1418.   const lpmii: MENUITEMINFOW): BOOL; stdcall;
  1419. {$EXTERNALSYM SetMenuItemInfoW}
  1420. {$IFDEF UNICODE}
  1421. function SetMenuItemInfo(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1422.   const lpmii: MENUITEMINFOW): BOOL; stdcall;
  1423. {$EXTERNALSYM SetMenuItemInfo}
  1424. {$ELSE}
  1425. function SetMenuItemInfo(hMenu: HMENU; uItem: UINT; fByPosition: BOOL;
  1426.   const lpmii: MENUITEMINFOA): BOOL; stdcall;
  1427. {$EXTERNALSYM SetMenuItemInfo}
  1428. {$ENDIF}
  1429. const
  1430.   GMDI_USEDISABLED  = $0001;
  1431.   {$EXTERNALSYM GMDI_USEDISABLED}
  1432.   GMDI_GOINTOPOPUPS = $0002;
  1433.   {$EXTERNALSYM GMDI_GOINTOPOPUPS}
  1434. function GetMenuDefaultItem(hMenu: HMENU; fByPos, gmdiFlags: UINT): UINT; stdcall;
  1435. {$EXTERNALSYM GetMenuDefaultItem}
  1436. function SetMenuDefaultItem(hMenu: HMENU; uItem, fByPos: UINT): BOOL; stdcall;
  1437. {$EXTERNALSYM SetMenuDefaultItem}
  1438. function GetMenuItemRect(hWnd: HWND; hMenu: HMENU; uItem: UINT; var lprcItem: RECT): BOOL; stdcall;
  1439. {$EXTERNALSYM GetMenuItemRect}
  1440. function MenuItemFromPoint(hWnd: HWND; hMenu: HMENU; ptScreen: POINT): Integer; stdcall;
  1441. {$EXTERNALSYM MenuItemFromPoint}
  1442. //
  1443. // Flags for TrackPopupMenu
  1444. //
  1445. const
  1446.   TPM_LEFTBUTTON   = $0000;
  1447.   {$EXTERNALSYM TPM_LEFTBUTTON}
  1448.   TPM_RIGHTBUTTON  = $0002;
  1449.   {$EXTERNALSYM TPM_RIGHTBUTTON}
  1450.   TPM_LEFTALIGN    = $0000;
  1451.   {$EXTERNALSYM TPM_LEFTALIGN}
  1452.   TPM_CENTERALIGN  = $0004;
  1453.   {$EXTERNALSYM TPM_CENTERALIGN}
  1454.   TPM_RIGHTALIGN   = $0008;
  1455.   {$EXTERNALSYM TPM_RIGHTALIGN}
  1456.   TPM_TOPALIGN     = $0000;
  1457.   {$EXTERNALSYM TPM_TOPALIGN}
  1458.   TPM_VCENTERALIGN = $0010;
  1459.   {$EXTERNALSYM TPM_VCENTERALIGN}
  1460.   TPM_BOTTOMALIGN  = $0020;
  1461.   {$EXTERNALSYM TPM_BOTTOMALIGN}
  1462.   TPM_HORIZONTAL      = $0000; // Horz alignment matters more
  1463.   {$EXTERNALSYM TPM_HORIZONTAL}
  1464.   TPM_VERTICAL        = $0040; // Vert alignment matters more
  1465.   {$EXTERNALSYM TPM_VERTICAL}
  1466.   TPM_NONOTIFY        = $0080; // Don't send any notification msgs
  1467.   {$EXTERNALSYM TPM_NONOTIFY}
  1468.   TPM_RETURNCMD       = $0100;
  1469.   {$EXTERNALSYM TPM_RETURNCMD}
  1470.   TPM_RECURSE         = $0001;
  1471.   {$EXTERNALSYM TPM_RECURSE}
  1472.   TPM_HORPOSANIMATION = $0400;
  1473.   {$EXTERNALSYM TPM_HORPOSANIMATION}
  1474.   TPM_HORNEGANIMATION = $0800;
  1475.   {$EXTERNALSYM TPM_HORNEGANIMATION}
  1476.   TPM_VERPOSANIMATION = $1000;
  1477.   {$EXTERNALSYM TPM_VERPOSANIMATION}
  1478.   TPM_VERNEGANIMATION = $2000;
  1479.   {$EXTERNALSYM TPM_VERNEGANIMATION}
  1480.   TPM_NOANIMATION     = $4000;
  1481.   {$EXTERNALSYM TPM_NOANIMATION}
  1482.   TPM_LAYOUTRTL       = $8000;
  1483.   {$EXTERNALSYM TPM_LAYOUTRTL}
  1484.   
  1485. //
  1486. // Drag-and-drop support
  1487. // Obsolete - use OLE instead
  1488. //
  1489. type
  1490.   LPDROPSTRUCT = ^DROPSTRUCT;
  1491.   {$EXTERNALSYM LPDROPSTRUCT}
  1492.   tagDROPSTRUCT = record
  1493.     hwndSource: HWND;
  1494.     hwndSink: HWND;
  1495.     wFmt: DWORD;
  1496.     dwData: ULONG_PTR;
  1497.     ptDrop: POINT;
  1498.     dwControlData: DWORD;
  1499.   end;
  1500.   {$EXTERNALSYM tagDROPSTRUCT}
  1501.   DROPSTRUCT = tagDROPSTRUCT;
  1502.   {$EXTERNALSYM DROPSTRUCT}
  1503.   TDropStruct = DROPSTRUCT;
  1504.   PDropStruct = LPDROPSTRUCT;
  1505. const
  1506.   DOF_EXECUTABLE = $8001; // wFmt flags
  1507.   {$EXTERNALSYM DOF_EXECUTABLE}
  1508.   DOF_DOCUMENT   = $8002;
  1509.   {$EXTERNALSYM DOF_DOCUMENT}
  1510.   DOF_DIRECTORY  = $8003;
  1511.   {$EXTERNALSYM DOF_DIRECTORY}
  1512.   DOF_MULTIPLE   = $8004;
  1513.   {$EXTERNALSYM DOF_MULTIPLE}
  1514.   DOF_PROGMAN    = $0001;
  1515.   {$EXTERNALSYM DOF_PROGMAN}
  1516.   DOF_SHELLDATA  = $0002;
  1517.   {$EXTERNALSYM DOF_SHELLDATA}
  1518.   DO_DROPFILE  = $454C4946;
  1519.   {$EXTERNALSYM DO_DROPFILE}
  1520.   DO_PRINTFILE = $544E5250;
  1521.   {$EXTERNALSYM DO_PRINTFILE}
  1522. function DragObject(hwnd1, hwnd2: HWND; i: UINT; u: ULONG_PTR; hcursor: HCURSOR): DWORD; stdcall;
  1523. {$EXTERNALSYM DragObject}
  1524. function DragDetect(hwnd: HWND; pt: POINT): BOOL; stdcall;
  1525. {$EXTERNALSYM DragDetect}
  1526. function DrawIcon(hDC: HDC; X, Y: Integer; hIcon: HICON): BOOL; stdcall;
  1527. {$EXTERNALSYM DrawIcon}
  1528. //
  1529. // DrawText() Format Flags
  1530. //
  1531. const
  1532.   DT_TOP             = $00000000;
  1533.   {$EXTERNALSYM DT_TOP}
  1534.   DT_LEFT            = $00000000;
  1535.   {$EXTERNALSYM DT_LEFT}
  1536.   DT_CENTER          = $00000001;
  1537.   {$EXTERNALSYM DT_CENTER}
  1538.   DT_RIGHT           = $00000002;
  1539.   {$EXTERNALSYM DT_RIGHT}
  1540.   DT_VCENTER         = $00000004;
  1541.   {$EXTERNALSYM DT_VCENTER}
  1542.   DT_BOTTOM          = $00000008;
  1543.   {$EXTERNALSYM DT_BOTTOM}
  1544.   DT_WORDBREAK       = $00000010;
  1545.   {$EXTERNALSYM DT_WORDBREAK}
  1546.   DT_SINGLELINE      = $00000020;
  1547.   {$EXTERNALSYM DT_SINGLELINE}
  1548.   DT_EXPANDTABS      = $00000040;
  1549.   {$EXTERNALSYM DT_EXPANDTABS}
  1550.   DT_TABSTOP         = $00000080;
  1551.   {$EXTERNALSYM DT_TABSTOP}
  1552.   DT_NOCLIP          = $00000100;
  1553.   {$EXTERNALSYM DT_NOCLIP}
  1554.   DT_EXTERNALLEADING = $00000200;
  1555.   {$EXTERNALSYM DT_EXTERNALLEADING}
  1556.   DT_CALCRECT        = $00000400;
  1557.   {$EXTERNALSYM DT_CALCRECT}
  1558.   DT_NOPREFIX        = $00000800;
  1559.   {$EXTERNALSYM DT_NOPREFIX}
  1560.   DT_INTERNAL        = $00001000;
  1561.   {$EXTERNALSYM DT_INTERNAL}
  1562.   DT_EDITCONTROL          = $00002000;
  1563.   {$EXTERNALSYM DT_EDITCONTROL}
  1564.   DT_PATH_ELLIPSIS        = $00004000;
  1565.   {$EXTERNALSYM DT_PATH_ELLIPSIS}
  1566.   DT_END_ELLIPSIS         = $00008000;
  1567.   {$EXTERNALSYM DT_END_ELLIPSIS}
  1568.   DT_MODIFYSTRING         = $00010000;
  1569.   {$EXTERNALSYM DT_MODIFYSTRING}
  1570.   DT_RTLREADING           = $00020000;
  1571.   {$EXTERNALSYM DT_RTLREADING}
  1572.   DT_WORD_ELLIPSIS        = $00040000;
  1573.   {$EXTERNALSYM DT_WORD_ELLIPSIS}
  1574.   DT_NOFULLWIDTHCHARBREAK = $00080000;
  1575.   {$EXTERNALSYM DT_NOFULLWIDTHCHARBREAK}
  1576.   DT_HIDEPREFIX           = $00100000;
  1577.   {$EXTERNALSYM DT_HIDEPREFIX}
  1578.   DT_PREFIXONLY           = $00200000;
  1579.   {$EXTERNALSYM DT_PREFIXONLY}
  1580. type
  1581.   LPDRAWTEXTPARAMS = ^DRAWTEXTPARAMS;
  1582.   {$EXTERNALSYM LPDRAWTEXTPARAMS}
  1583.   tagDRAWTEXTPARAMS = record
  1584.     cbSize: UINT;
  1585.     iTabLength: Integer;
  1586.     iLeftMargin: Integer;
  1587.     iRightMargin: Integer;
  1588.     uiLengthDrawn: UINT;
  1589.   end;
  1590.   {$EXTERNALSYM tagDRAWTEXTPARAMS}
  1591.   DRAWTEXTPARAMS = tagDRAWTEXTPARAMS;
  1592.   {$EXTERNALSYM DRAWTEXTPARAMS}
  1593.   TDrawTextParams = DRAWTEXTPARAMS;
  1594.   PDrawTextParams = LPDRAWTEXTPARAMS;
  1595. function DrawTextA(hDC: HDC; lpString: LPCSTR; nCount: Integer;
  1596.   var lpRect: RECT; uFormat: UINT): Integer; stdcall;
  1597. {$EXTERNALSYM DrawTextA}
  1598. function DrawTextW(hDC: HDC; lpString: LPCWSTR; nCount: Integer;
  1599.   var lpRect: RECT; uFormat: UINT): Integer; stdcall;
  1600. {$EXTERNALSYM DrawTextW}
  1601. {$IFDEF UNICODE}
  1602. function DrawText(hDC: HDC; lpString: LPCWSTR; nCount: Integer;
  1603.   var lpRect: RECT; uFormat: UINT): Integer; stdcall;
  1604. {$EXTERNALSYM DrawText}
  1605. {$ELSE}
  1606. function DrawText(hDC: HDC; lpString: LPCSTR; nCount: Integer;
  1607.   var lpRect: RECT; uFormat: UINT): Integer; stdcall;
  1608. {$EXTERNALSYM DrawText}
  1609. {$ENDIF}
  1610. function DrawTextExA(hDc: HDC; lpchText: LPSTR; cchText: Integer;
  1611.   var lprc: RECT; dwDTFormat: UINT; lpDTParams: LPDRAWTEXTPARAMS): Integer; stdcall;
  1612. {$EXTERNALSYM DrawTextExA}
  1613. function DrawTextExW(hDc: HDC; lpchText: LPWSTR; cchText: Integer;
  1614.   var lprc: RECT; dwDTFormat: UINT; lpDTParams: LPDRAWTEXTPARAMS): Integer; stdcall;
  1615. {$EXTERNALSYM DrawTextExW}
  1616. {$IFDEF UNICODE}
  1617. function DrawTextEx(hDc: HDC; lpchText: LPWSTR; cchText: Integer;
  1618.   var lprc: LPRECT; dwDTFormat: UINT; lpDTParams: LPDRAWTEXTPARAMS): Integer; stdcall;
  1619. {$EXTERNALSYM DrawTextEx}
  1620. {$ELSE}
  1621. function DrawTextEx(hDc: HDC; lpchText: LPSTR; cchText: Integer;
  1622.   var lprc: RECT; dwDTFormat: UINT; lpDTParams: LPDRAWTEXTPARAMS): Integer; stdcall;
  1623. {$EXTERNALSYM DrawTextEx}
  1624. {$ENDIF}
  1625. function GrayStringA(hDC: HDC; hBrush: HBRUSH; lpOutputFunc: GRAYSTRINGPROC;
  1626.   lpData: LPARAM; nCount, X, Y, nWidth, nHeight: Integer): BOOL; stdcall;
  1627. {$EXTERNALSYM GrayStringA}
  1628. function GrayStringW(hDC: HDC; hBrush: HBRUSH; lpOutputFunc: GRAYSTRINGPROC;
  1629.   lpData: LPARAM; nCount, X, Y, nWidth, nHeight: Integer): BOOL; stdcall;
  1630. {$EXTERNALSYM GrayStringW}
  1631. {$IFDEF UNICODE}
  1632. function GrayString(hDC: HDC; hBrush: HBRUSH; lpOutputFunc: GRAYSTRINGPROC;
  1633.   lpData: LPARAM; nCount, X, Y, nWidth, nHeight: Integer): BOOL; stdcall;
  1634. {$EXTERNALSYM GrayString}
  1635. {$ELSE}
  1636. function GrayString(hDC: HDC; hBrush: HBRUSH; lpOutputFunc: GRAYSTRINGPROC;
  1637.   lpData: LPARAM; nCount, X, Y, nWidth, nHeight: Integer): BOOL; stdcall;
  1638. {$EXTERNALSYM GrayString}
  1639. {$ENDIF}
  1640. // Monolithic state-drawing routine//
  1641. // Image type//
  1642. const
  1643.   DST_COMPLEX    = $0000;
  1644.   {$EXTERNALSYM DST_COMPLEX}
  1645.   DST_TEXT       = $0001;
  1646.   {$EXTERNALSYM DST_TEXT}
  1647.   DST_PREFIXTEXT = $0002;
  1648.   {$EXTERNALSYM DST_PREFIXTEXT}
  1649.   DST_ICON       = $0003;
  1650.   {$EXTERNALSYM DST_ICON}
  1651.   DST_BITMAP     = $0004;
  1652.   {$EXTERNALSYM DST_BITMAP}
  1653. // State type//
  1654.   DSS_NORMAL     = $0000;
  1655.   {$EXTERNALSYM DSS_NORMAL}
  1656.   DSS_UNION      = $0010; // Gray string appearance
  1657.   {$EXTERNALSYM DSS_UNION}
  1658.   DSS_DISABLED   = $0020;
  1659.   {$EXTERNALSYM DSS_DISABLED}
  1660.   DSS_MONO       = $0080;
  1661.   {$EXTERNALSYM DSS_MONO}
  1662.   DSS_HIDEPREFIX = $0200;
  1663.   {$EXTERNALSYM DSS_HIDEPREFIX}
  1664.   DSS_PREFIXONLY = $0400;
  1665.   {$EXTERNALSYM DSS_PREFIXONLY}
  1666.   DSS_RIGHT      = $8000;
  1667.   {$EXTERNALSYM DSS_RIGHT}
  1668. function DrawStateA(hdc: HDC; hbr: HBRUSH; lputputFunc: DRAWSTATEPROC;
  1669.   lData: LPARAM; wData: WPARAM; x, y, cx, cy: Integer; fuFlags: UINT): BOOL; stdcall;
  1670. {$EXTERNALSYM DrawStateA}
  1671. function DrawStateW(hdc: HDC; hbr: HBRUSH; lputputFunc: DRAWSTATEPROC;
  1672.   lData: LPARAM; wData: WPARAM; x, y, cx, cy: Integer; fuFlags: UINT): BOOL; stdcall;
  1673. {$EXTERNALSYM DrawStateW}
  1674. {$IFDEF UNICODE}
  1675. function DrawState(hdc: HDC; hbr: HBRUSH; lputputFunc: DRAWSTATEPROC;
  1676.   lData: LPARAM; wData: WPARAM; x, y, cx, cy: Integer; fuFlags: UINT): BOOL; stdcall;
  1677. {$EXTERNALSYM DrawState}
  1678. {$ELSE}
  1679. function DrawState(hdc: HDC; hbr: HBRUSH; lputputFunc: DRAWSTATEPROC;
  1680.   lData: LPARAM; wData: WPARAM; x, y, cx, cy: Integer; fuFlags: UINT): BOOL; stdcall;
  1681. {$EXTERNALSYM DrawState}
  1682. {$ENDIF}
  1683. function TabbedTextOutA(hDC: HDC; X, Y: Integer; lpString: LPCSTR; nCount,
  1684.   nTabPositions: Integer; lpnTabStopPositions: LPINT; nTabOrigin: Integer): LONG; stdcall;
  1685. {$EXTERNALSYM TabbedTextOutA}
  1686. function TabbedTextOutW(hDC: HDC; X, Y: Integer; lpString: LPCWSTR; nCount,
  1687.   nTabPositions: Integer; lpnTabStopPositions: LPINT; nTabOrigin: Integer): LONG; stdcall;
  1688. {$EXTERNALSYM TabbedTextOutW}
  1689. {$IFDEF UNICODE}
  1690. function TabbedTextOut(hDC: HDC; X, Y: Integer; lpString: LPCWSTR; nCount,
  1691.   nTabPositions: Integer; lpnTabStopPositions: LPINT; nTabOrigin: Integer): LONG; stdcall;
  1692. {$EXTERNALSYM TabbedTextOut}
  1693. {$ELSE}
  1694. function TabbedTextOut(hDC: HDC; X, Y: Integer; lpString: LPCSTR; nCount,
  1695.   nTabPositions: Integer; lpnTabStopPositions: LPINT; nTabOrigin: Integer): LONG; stdcall;
  1696. {$EXTERNALSYM TabbedTextOut}
  1697. {$ENDIF}
  1698. function GetTabbedTextExtentA(hDC: HDC; lpString: LPCSTR; nCount,
  1699.   nTabPositions: Integer; lpnTabStopPositions: LPINT): DWORD; stdcall;
  1700. {$EXTERNALSYM GetTabbedTextExtentA}
  1701. function GetTabbedTextExtentW(hDC: HDC; lpString: LPCWSTR; nCount,
  1702.   nTabPositions: Integer; lpnTabStopPositions: LPINT): DWORD; stdcall;
  1703. {$EXTERNALSYM GetTabbedTextExtentW}
  1704. {$IFDEF UNICODE}
  1705. function GetTabbedTextExtent(hDC: HDC; lpString: LPCWSTR; nCount,
  1706.   nTabPositions: Integer; lpnTabStopPositions: LPINT): DWORD; stdcall;
  1707. {$EXTERNALSYM GetTabbedTextExtent}
  1708. {$ELSE}
  1709. function GetTabbedTextExtent(hDC: HDC; lpString: LPCSTR; nCount,
  1710.   nTabPositions: Integer; lpnTabStopPositions: LPINT): DWORD; stdcall;
  1711. {$EXTERNALSYM GetTabbedTextExtent}
  1712. {$ENDIF}
  1713. function UpdateWindow(hWnd: HWND): BOOL; stdcall;
  1714. {$EXTERNALSYM UpdateWindow}
  1715. function SetActiveWindow(hWnd: HWND): HWND; stdcall;
  1716. {$EXTERNALSYM SetActiveWindow}
  1717. function GetForegroundWindow: HWND; stdcall;
  1718. {$EXTERNALSYM GetForegroundWindow}
  1719. function PaintDesktop(hdc: HDC): BOOL; stdcall;
  1720. {$EXTERNALSYM PaintDesktop}
  1721. procedure SwitchToThisWindow(hwnd: HWND; fUnknown: BOOL); stdcall;
  1722. {$EXTERNALSYM SwitchToThisWindow}
  1723. function SetForegroundWindow(hWnd: HWND): BOOL; stdcall;
  1724. {$EXTERNALSYM SetForegroundWindow}
  1725. function AllowSetForegroundWindow(dwProcessId: DWORD): BOOL; stdcall;
  1726. {$EXTERNALSYM AllowSetForegroundWindow}
  1727. const
  1728.   ASFW_ANY = DWORD(-1);
  1729.   {$EXTERNALSYM ASFW_ANY}
  1730. function LockSetForegroundWindow(uLockCode: UINT): BOOL; stdcall;
  1731. {$EXTERNALSYM LockSetForegroundWindow}
  1732. const
  1733.   LSFW_LOCK   = 1;
  1734.   {$EXTERNALSYM LSFW_LOCK}
  1735.   LSFW_UNLOCK = 2;
  1736.   {$EXTERNALSYM LSFW_UNLOCK}
  1737. function WindowFromDC(hDC: HDC): HWND; stdcall;
  1738. {$EXTERNALSYM WindowFromDC}
  1739. function GetDC(hWnd: HWND): HDC; stdcall;
  1740. {$EXTERNALSYM GetDC}
  1741. function GetDCEx(hWnd: HWND; hrgnClip: HRGN; flags: DWORD): HDC; stdcall;
  1742. {$EXTERNALSYM GetDCEx}
  1743. //
  1744. // GetDCEx() flags
  1745. //
  1746. const
  1747.   DCX_WINDOW           = $00000001;
  1748.   {$EXTERNALSYM DCX_WINDOW}
  1749.   DCX_CACHE            = $00000002;
  1750.   {$EXTERNALSYM DCX_CACHE}
  1751.   DCX_NORESETATTRS     = $00000004;
  1752.   {$EXTERNALSYM DCX_NORESETATTRS}
  1753.   DCX_CLIPCHILDREN     = $00000008;
  1754.   {$EXTERNALSYM DCX_CLIPCHILDREN}
  1755.   DCX_CLIPSIBLINGS     = $00000010;
  1756.   {$EXTERNALSYM DCX_CLIPSIBLINGS}
  1757.   DCX_PARENTCLIP       = $00000020;
  1758.   {$EXTERNALSYM DCX_PARENTCLIP}
  1759.   DCX_EXCLUDERGN       = $00000040;
  1760.   {$EXTERNALSYM DCX_EXCLUDERGN}
  1761.   DCX_INTERSECTRGN     = $00000080;
  1762.   {$EXTERNALSYM DCX_INTERSECTRGN}
  1763.   DCX_EXCLUDEUPDATE    = $00000100;
  1764.   {$EXTERNALSYM DCX_EXCLUDEUPDATE}
  1765.   DCX_INTERSECTUPDATE  = $00000200;
  1766.   {$EXTERNALSYM DCX_INTERSECTUPDATE}
  1767.   DCX_LOCKWINDOWUPDATE = $00000400;
  1768.   {$EXTERNALSYM DCX_LOCKWINDOWUPDATE}
  1769.   DCX_VALIDATE = $00200000;
  1770.   {$EXTERNALSYM DCX_VALIDATE}
  1771. function GetWindowDC(hWnd: HWND): HDC; stdcall;
  1772. {$EXTERNALSYM GetWindowDC}
  1773. function ReleaseDC(hWnd: HWND; hDC: HDC): Integer; stdcall;
  1774. {$EXTERNALSYM ReleaseDC}
  1775. function BeginPaint(hWnd: HWND; var lpPaint: PAINTSTRUCT): HDC; stdcall;
  1776. {$EXTERNALSYM BeginPaint}
  1777. function EndPaint(hWnd: HWND; const lpPaint: PAINTSTRUCT): BOOL; stdcall;
  1778. {$EXTERNALSYM EndPaint}
  1779. function GetUpdateRect(hWnd: HWND; var lpRect: RECT; bErase: BOOL): BOOL; stdcall;
  1780. {$EXTERNALSYM GetUpdateRect}
  1781. function GetUpdateRgn(hWnd: HWND; hRgn: HRGN; bErase: BOOL): Integer; stdcall;
  1782. {$EXTERNALSYM GetUpdateRgn}
  1783. function SetWindowRgn(hWnd: HWND; hRgn: HRGN; bRedraw: BOOL): Integer; stdcall;
  1784. {$EXTERNALSYM SetWindowRgn}
  1785. function GetWindowRgn(hWnd: HWND; hRgn: HRGN): Integer; stdcall;
  1786. {$EXTERNALSYM GetWindowRgn}
  1787. function GetWindowRgnBox(hWnd: HWND; var lprc: RECT): Integer; stdcall;
  1788. {$EXTERNALSYM GetWindowRgnBox}
  1789. function ExcludeUpdateRgn(hDC: HDC; hWnd: HWND): Integer; stdcall;
  1790. {$EXTERNALSYM ExcludeUpdateRgn}
  1791. function InvalidateRect(hWnd: HWND; lpRect: LPRECT; bErase: BOOL): BOOL; stdcall;
  1792. {$EXTERNALSYM InvalidateRect}
  1793. function ValidateRect(hWnd: HWND; lpRect: LPRECT): BOOL; stdcall;
  1794. {$EXTERNALSYM ValidateRect}
  1795. function InvalidateRgn(hWnd: HWND; hRgn: HRGN; bErase: BOOL): BOOL; stdcall;
  1796. {$EXTERNALSYM InvalidateRgn}
  1797. function ValidateRgn(hWnd: HWND; hRgn: HRGN): BOOL; stdcall;
  1798. {$EXTERNALSYM ValidateRgn}
  1799. function RedrawWindow(hWnd: HWND; lprcUpdate: LPRECT; hrgnUpdate: HRGN; flags: UINT): BOOL; stdcall;
  1800. {$EXTERNALSYM RedrawWindow}
  1801. //
  1802. // RedrawWindow() flags
  1803. //
  1804. const
  1805.   RDW_INVALIDATE    = $0001;
  1806.   {$EXTERNALSYM RDW_INVALIDATE}
  1807.   RDW_INTERNALPAINT = $0002;
  1808.   {$EXTERNALSYM RDW_INTERNALPAINT}
  1809.   RDW_ERASE         = $0004;
  1810.   {$EXTERNALSYM RDW_ERASE}
  1811.   RDW_VALIDATE        = $0008;
  1812.   {$EXTERNALSYM RDW_VALIDATE}
  1813.   RDW_NOINTERNALPAINT = $0010;
  1814.   {$EXTERNALSYM RDW_NOINTERNALPAINT}
  1815.   RDW_NOERASE         = $0020;
  1816.   {$EXTERNALSYM RDW_NOERASE}
  1817.   RDW_NOCHILDREN  = $0040;
  1818.   {$EXTERNALSYM RDW_NOCHILDREN}
  1819.   RDW_ALLCHILDREN = $0080;
  1820.   {$EXTERNALSYM RDW_ALLCHILDREN}
  1821.   RDW_UPDATENOW = $0100;
  1822.   {$EXTERNALSYM RDW_UPDATENOW}
  1823.   RDW_ERASENOW  = $0200;
  1824.   {$EXTERNALSYM RDW_ERASENOW}
  1825.   RDW_FRAME   = $0400;
  1826.   {$EXTERNALSYM RDW_FRAME}
  1827.   RDW_NOFRAME = $0800;
  1828.   {$EXTERNALSYM RDW_NOFRAME}
  1829. //
  1830. // LockWindowUpdate API
  1831. //
  1832. function LockWindowUpdate(hWndLock: HWND): BOOL; stdcall;
  1833. {$EXTERNALSYM LockWindowUpdate}
  1834. function ScrollWindow(hWnd: HWND; XAmount, YAmount: Integer; lpRect, lpClipRect: LPRECT): BOOL; stdcall;
  1835. {$EXTERNALSYM ScrollWindow}
  1836. function ScrollDC(hDC: HDC; dx, dy: Integer; lprcScroll, lprcClip: LPRECT;
  1837.   hrgnUpdate: HRGN; lprcUpdate: LPRECT): BOOL; stdcall;
  1838. {$EXTERNALSYM ScrollDC}
  1839. function ScrollWindowEx(hWnd: HWND; dx, dy: Integer; prcScroll, prcClip: LPRECT;
  1840.   hrgnUpdate: HRGN; prcUpdate: LPRECT; flags: UINT): Integer; stdcall;
  1841. {$EXTERNALSYM ScrollWindowEx}
  1842. const
  1843.   SW_SCROLLCHILDREN = $0001; // Scroll children within *lprcScroll.
  1844.   {$EXTERNALSYM SW_SCROLLCHILDREN}
  1845.   SW_INVALIDATE     = $0002; // Invalidate after scrolling
  1846.   {$EXTERNALSYM SW_INVALIDATE}
  1847.   SW_ERASE          = $0004; // If SW_INVALIDATE, don't send WM_ERASEBACKGROUND
  1848.   {$EXTERNALSYM SW_ERASE}
  1849.   SW_SMOOTHSCROLL   = $0010; // Use smooth scrolling
  1850.   {$EXTERNALSYM SW_SMOOTHSCROLL}
  1851. function SetScrollPos(hWnd: HWND; nBar, nPos: Integer; bRedraw: BOOL): Integer; stdcall;
  1852. {$EXTERNALSYM SetScrollPos}
  1853. function GetScrollPos(hWnd: HWND; nBar: Integer): Integer; stdcall;
  1854. {$EXTERNALSYM GetScrollPos}
  1855. function SetScrollRange(hWnd: HWND; nBar, nMinPos, nMaxPos: Integer; bRedraw: BOOL): BOOL; stdcall;
  1856. {$EXTERNALSYM SetScrollRange}
  1857. function GetScrollRange(hWnd: HWND; nBar: Integer; var lpMinPos, lpMaxPos: Integer): BOOL; stdcall;
  1858. {$EXTERNALSYM GetScrollRange}
  1859. function ShowScrollBar(hWnd: HWND; wBar: Integer; bShow: BOOL): BOOL; stdcall;
  1860. {$EXTERNALSYM ShowScrollBar}
  1861. function EnableScrollBar(hWnd: HWND; wSBflags, wArrows: UINT): BOOL; stdcall;
  1862. {$EXTERNALSYM EnableScrollBar}
  1863. //
  1864. // EnableScrollBar() flags
  1865. //
  1866. const
  1867.   ESB_ENABLE_BOTH  = $0000;
  1868.   {$EXTERNALSYM ESB_ENABLE_BOTH}
  1869.   ESB_DISABLE_BOTH = $0003;
  1870.   {$EXTERNALSYM ESB_DISABLE_BOTH}
  1871.   ESB_DISABLE_LEFT  = $0001;
  1872.   {$EXTERNALSYM ESB_DISABLE_LEFT}
  1873.   ESB_DISABLE_RIGHT = $0002;
  1874.   {$EXTERNALSYM ESB_DISABLE_RIGHT}
  1875.   ESB_DISABLE_UP   = $0001;
  1876.   {$EXTERNALSYM ESB_DISABLE_UP}
  1877.   ESB_DISABLE_DOWN = $0002;
  1878.   {$EXTERNALSYM ESB_DISABLE_DOWN}
  1879.   ESB_DISABLE_LTUP = ESB_DISABLE_LEFT;
  1880.   {$EXTERNALSYM ESB_DISABLE_LTUP}
  1881.   ESB_DISABLE_RTDN = ESB_DISABLE_RIGHT;
  1882.   {$EXTERNALSYM ESB_DISABLE_RTDN}
  1883. function SetPropA(hWnd: HWND; lpString: LPCSTR; hData: HANDLE): BOOL; stdcall;
  1884. {$EXTERNALSYM SetPropA}
  1885. function SetPropW(hWnd: HWND; lpString: LPCWSTR; hData: HANDLE): BOOL; stdcall;
  1886. {$EXTERNALSYM SetPropW}
  1887. {$IFDEF UNICODE}
  1888. function SetProp(hWnd: HWND; lpString: LPCWSTR; hData: HANDLE): BOOL; stdcall;
  1889. {$EXTERNALSYM SetProp}
  1890. {$ELSE}
  1891. function SetProp(hWnd: HWND; lpString: LPCSTR; hData: HANDLE): BOOL; stdcall;
  1892. {$EXTERNALSYM SetProp}
  1893. {$ENDIF}
  1894. function GetPropA(hWnd: HWND; lpString: LPCSTR): HANDLE; stdcall;
  1895. {$EXTERNALSYM GetPropA}
  1896. function GetPropW(hWnd: HWND; lpString: LPCWSTR): HANDLE; stdcall;
  1897. {$EXTERNALSYM GetPropW}
  1898. {$IFDEF UNICODE}
  1899. function GetProp(hWnd: HWND; lpString: LPCWSTR): HANDLE; stdcall;
  1900. {$EXTERNALSYM GetProp}
  1901. {$ELSE}
  1902. function GetProp(hWnd: HWND; lpString: LPCSTR): HANDLE; stdcall;
  1903. {$EXTERNALSYM GetProp}
  1904. {$ENDIF}
  1905. function RemovePropA(hWnd: HWND; lpString: LPCSTR): HANDLE; stdcall;
  1906. {$EXTERNALSYM RemovePropA}
  1907. function RemovePropW(hWnd: HWND; lpString: LPCWSTR): HANDLE; stdcall;
  1908. {$EXTERNALSYM RemovePropW}
  1909. {$IFDEF UNICODE}
  1910. function RemoveProp(hWnd: HWND; lpString: LPCWSTR): HANDLE; stdcall;
  1911. {$EXTERNALSYM RemoveProp}
  1912. {$ELSE}
  1913. function RemoveProp(hWnd: HWND; lpString: LPCSTR): HANDLE; stdcall;
  1914. {$EXTERNALSYM RemoveProp}
  1915. {$ENDIF}
  1916. function EnumPropsExA(hWnd: HWND; lpEnumFunc: PROPENUMPROCEXA; lParam: LPARAM): Integer; stdcall;
  1917. {$EXTERNALSYM EnumPropsExA}
  1918. function EnumPropsExW(hWnd: HWND; lpEnumFunc: PROPENUMPROCEXW; lParam: LPARAM): Integer; stdcall;
  1919. {$EXTERNALSYM EnumPropsExW}
  1920. {$IFDEF UNICODE}
  1921. function EnumPropsEx(hWnd: HWND; lpEnumFunc: PROPENUMPROCEXW; lParam: LPARAM): Integer; stdcall;
  1922. {$EXTERNALSYM EnumPropsEx}
  1923. {$ELSE}
  1924. function EnumPropsEx(hWnd: HWND; lpEnumFunc: PROPENUMPROCEXA; lParam: LPARAM): Integer; stdcall;
  1925. {$EXTERNALSYM EnumPropsEx}
  1926. {$ENDIF}
  1927. function EnumPropsA(hWnd: HWND; lpEnumFunc: PROPENUMPROCA): Integer; stdcall;
  1928. {$EXTERNALSYM EnumPropsA}
  1929. function EnumPropsW(hWnd: HWND; lpEnumFunc: PROPENUMPROCW): Integer; stdcall;
  1930. {$EXTERNALSYM EnumPropsW}
  1931. {$IFDEF UNICODE}
  1932. function EnumProps(hWnd: HWND; lpEnumFunc: PROPENUMPROCW): Integer; stdcall;
  1933. {$EXTERNALSYM EnumProps}
  1934. {$ELSE}
  1935. function EnumProps(hWnd: HWND; lpEnumFunc: PROPENUMPROCA): Integer; stdcall;
  1936. {$EXTERNALSYM EnumProps}
  1937. {$ENDIF}
  1938. function SetWindowTextA(hWnd: HWND; lpString: LPCSTR): BOOL; stdcall;
  1939. {$EXTERNALSYM SetWindowTextA}
  1940. function SetWindowTextW(hWnd: HWND; lpString: LPCWSTR): BOOL; stdcall;
  1941. {$EXTERNALSYM SetWindowTextW}
  1942. {$IFDEF UNICODE}
  1943. function SetWindowText(hWnd: HWND; lpString: LPCWSTR): BOOL; stdcall;
  1944. {$EXTERNALSYM SetWindowText}
  1945. {$ELSE}
  1946. function SetWindowText(hWnd: HWND; lpString: LPCSTR): BOOL; stdcall;
  1947. {$EXTERNALSYM SetWindowText}
  1948. {$ENDIF}
  1949. function GetWindowTextA(hWnd: HWND; lpString: LPSTR; nMaxCount: Integer): Integer; stdcall;
  1950. {$EXTERNALSYM GetWindowTextA}
  1951. function GetWindowTextW(hWnd: HWND; lpString: LPWSTR; nMaxCount: Integer): Integer; stdcall;
  1952. {$EXTERNALSYM GetWindowTextW}
  1953. {$IFDEF UNICODE}
  1954. function GetWindowText(hWnd: HWND; lpString: LPWSTR; nMaxCount: Integer): Integer; stdcall;
  1955. {$EXTERNALSYM GetWindowText}
  1956. {$ELSE}
  1957. function GetWindowText(hWnd: HWND; lpString: LPSTR; nMaxCount: Integer): Integer; stdcall;
  1958. {$EXTERNALSYM GetWindowText}
  1959. {$ENDIF}
  1960. function GetWindowTextLengthA(hWnd: HWND): Integer; stdcall;
  1961. {$EXTERNALSYM GetWindowTextLengthA}
  1962. function GetWindowTextLengthW(hWnd: HWND): Integer; stdcall;
  1963. {$EXTERNALSYM GetWindowTextLengthW}
  1964. {$IFDEF UNICODE}
  1965. function GetWindowTextLength(hWnd: HWND): Integer; stdcall;
  1966. {$EXTERNALSYM GetWindowTextLength}
  1967. {$ELSE}
  1968. function GetWindowTextLength(hWnd: HWND): Integer; stdcall;
  1969. {$EXTERNALSYM GetWindowTextLength}
  1970. {$ENDIF}
  1971. function GetClientRect(hWnd: HWND; var lpRect: RECT): BOOL; stdcall;
  1972. {$EXTERNALSYM GetClientRect}
  1973. function GetWindowRect(hWnd: HWND; var lpRect: RECT): BOOL; stdcall;
  1974. {$EXTERNALSYM GetWindowRect}
  1975. function AdjustWindowRect(var lpRect: RECT; dwStyle: DWORD; bMenu: BOOL): BOOL; stdcall;
  1976. {$EXTERNALSYM AdjustWindowRect}
  1977. function AdjustWindowRectEx(var lpRect: RECT; dwStyle: DWORD;
  1978.   bMenu: BOOL; dwExStyle: DWORD): BOOL; stdcall;
  1979. {$EXTERNALSYM AdjustWindowRectEx}
  1980. const
  1981.   HELPINFO_WINDOW   = $0001;
  1982.   {$EXTERNALSYM HELPINFO_WINDOW}
  1983.   HELPINFO_MENUITEM = $0002;
  1984.   {$EXTERNALSYM HELPINFO_MENUITEM}
  1985. type
  1986.   LPHELPINFO = ^HELPINFO;
  1987.   {$EXTERNALSYM LPHELPINFO}
  1988.   tagHELPINFO = record      // Structure pointed to by lParam of WM_HELP//
  1989.     cbSize: UINT;           // Size in bytes of this struct //
  1990.     iContextType: Integer;  // Either HELPINFO_WINDOW or HELPINFO_MENUITEM//
  1991.     iCtrlId: Integer;       // Control Id or a Menu item Id.//
  1992.     hItemHandle: HANDLE;    // hWnd of control or hMenu.    //
  1993.     dwContextId: DWORD_PTR; // Context Id associated with this item//
  1994.     MousePos: POINT;        // Mouse Position in screen co-ordinates//
  1995.   end;
  1996.   {$EXTERNALSYM tagHELPINFO}
  1997.   HELPINFO = tagHELPINFO;
  1998.   {$EXTERNALSYM HELPINFO}
  1999.   THelpInfo = HELPINFO;
  2000.   PHelpInfo = LPHELPINFO;
  2001. function SetWindowContextHelpId(hwnd: HWND; dwContextHelpId: DWORD): BOOL; stdcall;
  2002. {$EXTERNALSYM SetWindowContextHelpId}
  2003. function GetWindowContextHelpId(hwnd: HWND): DWORD; stdcall;
  2004. {$EXTERNALSYM GetWindowContextHelpId}
  2005. function SetMenuContextHelpId(hmenu: HMENU; dwContextHelpId: DWORD): BOOL; stdcall;
  2006. {$EXTERNALSYM SetMenuContextHelpId}
  2007. function GetMenuContextHelpId(hmenu: HMENU): DWORD; stdcall;
  2008. {$EXTERNALSYM GetMenuContextHelpId}
  2009. //
  2010. // MessageBox() Flags
  2011. //
  2012. const
  2013.   MB_OK                = $00000000;
  2014.   {$EXTERNALSYM MB_OK}
  2015.   MB_OKCANCEL          = $00000001;
  2016.   {$EXTERNALSYM MB_OKCANCEL}
  2017.   MB_ABORTRETRYIGNORE  = $00000002;
  2018.   {$EXTERNALSYM MB_ABORTRETRYIGNORE}
  2019.   MB_YESNOCANCEL       = $00000003;
  2020.   {$EXTERNALSYM MB_YESNOCANCEL}
  2021.   MB_YESNO             = $00000004;
  2022.   {$EXTERNALSYM MB_YESNO}
  2023.   MB_RETRYCANCEL       = $00000005;
  2024.   {$EXTERNALSYM MB_RETRYCANCEL}
  2025.   MB_CANCELTRYCONTINUE = $00000006;
  2026.   {$EXTERNALSYM MB_CANCELTRYCONTINUE}
  2027.   MB_ICONHAND        = $00000010;
  2028.   {$EXTERNALSYM MB_ICONHAND}
  2029.   MB_ICONQUESTION    = $00000020;
  2030.   {$EXTERNALSYM MB_ICONQUESTION}
  2031.   MB_ICONEXCLAMATION = $00000030;
  2032.   {$EXTERNALSYM MB_ICONEXCLAMATION}
  2033.   MB_ICONASTERISK    = $00000040;
  2034.   {$EXTERNALSYM MB_ICONASTERISK}
  2035.   MB_USERICON    = $00000080;
  2036.   {$EXTERNALSYM MB_USERICON}
  2037.   MB_ICONWARNING = MB_ICONEXCLAMATION;
  2038.   {$EXTERNALSYM MB_ICONWARNING}
  2039.   MB_ICONERROR   = MB_ICONHAND;
  2040.   {$EXTERNALSYM MB_ICONERROR}
  2041.   MB_ICONINFORMATION = MB_ICONASTERISK;
  2042.   {$EXTERNALSYM MB_ICONINFORMATION}
  2043.   MB_ICONSTOP        = MB_ICONHAND;
  2044.   {$EXTERNALSYM MB_ICONSTOP}
  2045.   MB_DEFBUTTON1 = $00000000;
  2046.   {$EXTERNALSYM MB_DEFBUTTON1}
  2047.   MB_DEFBUTTON2 = $00000100;
  2048.   {$EXTERNALSYM MB_DEFBUTTON2}
  2049.   MB_DEFBUTTON3 = $00000200;
  2050.   {$EXTERNALSYM MB_DEFBUTTON3}
  2051.   MB_DEFBUTTON4 = $00000300;
  2052.   {$EXTERNALSYM MB_DEFBUTTON4}
  2053.   MB_APPLMODAL   = $00000000;
  2054.   {$EXTERNALSYM MB_APPLMODAL}
  2055.   MB_SYSTEMMODAL = $00001000;
  2056.   {$EXTERNALSYM MB_SYSTEMMODAL}
  2057.   MB_TASKMODAL   = $00002000;
  2058.   {$EXTERNALSYM MB_TASKMODAL}
  2059.   MB_HELP        = $00004000; // Help Button
  2060.   {$EXTERNALSYM MB_HELP}
  2061.   MB_NOFOCUS              = $00008000;
  2062.   {$EXTERNALSYM MB_NOFOCUS}
  2063.   MB_SETFOREGROUND        = $00010000;
  2064.   {$EXTERNALSYM MB_SETFOREGROUND}
  2065.   MB_DEFAULT_DESKTOP_ONLY = $00020000;
  2066.   {$EXTERNALSYM MB_DEFAULT_DESKTOP_ONLY}
  2067.   MB_TOPMOST    = $00040000;
  2068.   {$EXTERNALSYM MB_TOPMOST}
  2069.   MB_RIGHT      = $00080000;
  2070.   {$EXTERNALSYM MB_RIGHT}
  2071.   MB_RTLREADING = $00100000;
  2072.   {$EXTERNALSYM MB_RTLREADING}
  2073. const
  2074. {$IFDEF WINNT}
  2075.   {$IFDEF WINNT_0400_GREATER}
  2076.   MB_SERVICE_NOTIFICATION = $00200000;
  2077.   {$EXTERNALSYM MB_SERVICE_NOTIFICATION}
  2078.   {$ELSE}
  2079.   MB_SERVICE_NOTIFICATION = $00040000;
  2080.   {$EXTERNALSYM MB_SERVICE_NOTIFICATION}
  2081.   {$ENDIF}
  2082. {$ELSE}
  2083.   MB_SERVICE_NOTIFICATION_NT3X = $00040000;
  2084.   {$EXTERNALSYM MB_SERVICE_NOTIFICATION_NT3X}
  2085. {$ENDIF}
  2086.   MB_TYPEMASK = $0000000F;
  2087.   {$EXTERNALSYM MB_TYPEMASK}
  2088.   MB_ICONMASK = $000000F0;
  2089.   {$EXTERNALSYM MB_ICONMASK}
  2090.   MB_DEFMASK  = $00000F00;
  2091.   {$EXTERNALSYM MB_DEFMASK}
  2092.   MB_MODEMASK = $00003000;
  2093.   {$EXTERNALSYM MB_MODEMASK}
  2094.   MB_MISCMASK = $0000C000;
  2095.   {$EXTERNALSYM MB_MISCMASK}
  2096. function MessageBoxA(hWnd: HWND; lpText, lpCaption: LPCSTR; uType: UINT): Integer; stdcall;
  2097. {$EXTERNALSYM MessageBoxA}
  2098. function MessageBoxW(hWnd: HWND; lpText, lpCaption: LPCWSTR; uType: UINT): Integer; stdcall;
  2099. {$EXTERNALSYM MessageBoxW}
  2100. {$IFDEF UNICODE}
  2101. function MessageBox(hWnd: HWND; lpText, lpCaption: LPCWSTR; uType: UINT): Integer; stdcall;
  2102. {$EXTERNALSYM MessageBox}
  2103. {$ELSE}
  2104. function MessageBox(hWnd: HWND; lpText, lpCaption: LPCSTR; uType: UINT): Integer; stdcall;
  2105. {$EXTERNALSYM MessageBox}
  2106. {$ENDIF}
  2107. function MessageBoxExA(hWnd: HWND; lpText, lpCaption: LPCSTR; uType: UINT;
  2108.   wLanguageId: WORD): Integer; stdcall;
  2109. {$EXTERNALSYM MessageBoxExA}
  2110. function MessageBoxExW(hWnd: HWND; lpText, lpCaption: LPCWSTR; uType: UINT;
  2111.   wLanguageId: WORD): Integer; stdcall;
  2112. {$EXTERNALSYM MessageBoxExW}
  2113. {$IFDEF UNICODE}
  2114. function MessageBoxEx(hWnd: HWND; lpText, lpCaption: LPCWSTR; uType: UINT;
  2115.   wLanguageId: WORD): Integer; stdcall;
  2116. {$EXTERNALSYM MessageBoxEx}
  2117. {$ELSE}
  2118. function MessageBoxEx(hWnd: HWND; lpText, lpCaption: LPCSTR; uType: UINT;
  2119.   wLanguageId: WORD): Integer; stdcall;
  2120. {$EXTERNALSYM MessageBoxEx}
  2121. {$ENDIF}
  2122. type
  2123.   MSGBOXCALLBACK = procedure (var lpHelpInfo: HELPINFO); stdcall;
  2124.   {$EXTERNALSYM MSGBOXCALLBACK}
  2125.   TMsgBoxCallback = MSGBOXCALLBACK;
  2126.   LPMSGBOXPARAMSA = ^MSGBOXPARAMSA;
  2127.   {$EXTERNALSYM LPMSGBOXPARAMSA}
  2128.   tagMSGBOXPARAMSA = record
  2129.     cbSize: UINT;
  2130.     hwndOwner: HWND;
  2131.     hInstance: HINSTANCE;
  2132.     lpszText: LPCSTR;
  2133.     lpszCaption: LPCSTR;
  2134.     dwStyle: DWORD;
  2135.     lpszIcon: LPCSTR;
  2136.     dwContextHelpId: DWORD_PTR;
  2137.     lpfnMsgBoxCallback: MSGBOXCALLBACK;
  2138.     dwLanguageId: DWORD;
  2139.   end;
  2140.   {$EXTERNALSYM tagMSGBOXPARAMSA}
  2141.   MSGBOXPARAMSA = tagMSGBOXPARAMSA;
  2142.   {$EXTERNALSYM MSGBOXPARAMSA}
  2143.   TMsgBoxParamsA = MSGBOXPARAMSA;
  2144.   PMsgBoxParamsA = LPMSGBOXPARAMSA;
  2145.   LPMSGBOXPARAMSW = ^MSGBOXPARAMSW;
  2146.   {$EXTERNALSYM LPMSGBOXPARAMSW}
  2147.   tagMSGBOXPARAMSW = record
  2148.     cbSize: UINT;
  2149.     hwndOwner: HWND;
  2150.     hInstance: HINSTANCE;
  2151.     lpszText: LPCWSTR;
  2152.     lpszCaption: LPCWSTR;
  2153.     dwStyle: DWORD;
  2154.     lpszIcon: LPCWSTR;
  2155.     dwContextHelpId: DWORD_PTR;
  2156.     lpfnMsgBoxCallback: MSGBOXCALLBACK;
  2157.     dwLanguageId: DWORD;
  2158.   end;
  2159.   {$EXTERNALSYM tagMSGBOXPARAMSW}
  2160.   MSGBOXPARAMSW = tagMSGBOXPARAMSW;
  2161.   {$EXTERNALSYM MSGBOXPARAMSW}
  2162.   TMsgBoxParamsW = MSGBOXPARAMSW;
  2163.   PMsgBoxParamsW = LPMSGBOXPARAMSW;
  2164. {$IFDEF UNICODE}
  2165.   MSGBOXPARAMS = MSGBOXPARAMSW;
  2166.   {$EXTERNALSYM MSGBOXPARAMS}
  2167.   LPMSGBOXPARAMS = LPMSGBOXPARAMSW;
  2168.   {$EXTERNALSYM LPMSGBOXPARAMS}
  2169.   TMsgBoxParams = TMsgBoxParamsW;
  2170.   PMsgBoxParams = PMsgBoxParamsW;
  2171. {$ELSE}
  2172.   MSGBOXPARAMS = MSGBOXPARAMSA;
  2173.   {$EXTERNALSYM MSGBOXPARAMS}
  2174.   LPMSGBOXPARAMS = LPMSGBOXPARAMSA;
  2175.   {$EXTERNALSYM LPMSGBOXPARAMS}
  2176.   TMsgBoxParams = TMsgBoxParamsA;
  2177.   PMsgBoxParams = PMsgBoxParamsA;
  2178. {$ENDIF}
  2179. function MessageBoxIndirectA(const lpMsgBoxParams: MSGBOXPARAMSA): Integer; stdcall;
  2180. {$EXTERNALSYM MessageBoxIndirectA}
  2181. function MessageBoxIndirectW(const lpMsgBoxParams: MSGBOXPARAMSW): Integer; stdcall;
  2182. {$EXTERNALSYM MessageBoxIndirectW}
  2183. {$IFDEF UNICODE}
  2184. function MessageBoxIndirect(const lpMsgBoxParams: MSGBOXPARAMSW): Integer; stdcall;
  2185. {$EXTERNALSYM MessageBoxIndirect}
  2186. {$ELSE}
  2187. function MessageBoxIndirect(const lpMsgBoxParams: MSGBOXPARAMSA): Integer; stdcall;
  2188. {$EXTERNALSYM MessageBoxIndirect}
  2189. {$ENDIF}
  2190. function MessageBeep(uType: UINT): BOOL; stdcall;
  2191. {$EXTERNALSYM MessageBeep}
  2192. function ShowCursor(bShow: BOOL): Integer; stdcall;
  2193. {$EXTERNALSYM ShowCursor}
  2194. function SetCursorPos(X, Y: Integer): BOOL; stdcall;
  2195. {$EXTERNALSYM SetCursorPos}
  2196. function SetCursor(hCursor: HCURSOR): HCURSOR; stdcall;
  2197. {$EXTERNALSYM SetCursor}
  2198. function GetCursorPos(var lpPoint: POINT): BOOL; stdcall;
  2199. {$EXTERNALSYM GetCursorPos}
  2200. function ClipCursor(lpRect: LPRECT): BOOL; stdcall;
  2201. {$EXTERNALSYM ClipCursor}
  2202. function GetClipCursor(var lpRect: RECT): BOOL; stdcall;
  2203. {$EXTERNALSYM GetClipCursor}
  2204. function GetCursor: HCURSOR; stdcall;
  2205. {$EXTERNALSYM GetCursor}
  2206. function CreateCaret(hWnd: HWND; hBitmap: HBITMAP; nWidth, nHeight: Integer): BOOL; stdcall;
  2207. {$EXTERNALSYM CreateCaret}
  2208. function GetCaretBlinkTime: UINT; stdcall;
  2209. {$EXTERNALSYM GetCaretBlinkTime}
  2210. function SetCaretBlinkTime(uMSeconds: UINT): BOOL; stdcall;
  2211. {$EXTERNALSYM SetCaretBlinkTime}
  2212. function DestroyCaret: BOOL; stdcall;
  2213. {$EXTERNALSYM DestroyCaret}
  2214. function HideCaret(hWnd: HWND): BOOL; stdcall;
  2215. {$EXTERNALSYM HideCaret}
  2216. function ShowCaret(hWnd: HWND): BOOL; stdcall;
  2217. {$EXTERNALSYM ShowCaret}
  2218. function SetCaretPos(X, Y: Integer): BOOL; stdcall;
  2219. {$EXTERNALSYM SetCaretPos}
  2220. function GetCaretPos(var lpPoint: POINT): BOOL; stdcall;
  2221. {$EXTERNALSYM GetCaretPos}
  2222. function ClientToScreen(hWnd: HWND; var lpPoint: POINT): BOOL; stdcall;
  2223. {$EXTERNALSYM ClientToScreen}
  2224. function ScreenToClient(hWnd: HWND; var lpPoint: POINT): BOOL; stdcall;
  2225. {$EXTERNALSYM ScreenToClient}
  2226. function MapWindowPoints(hWndFrom, hWndTo: HWND; lpPoints: LPPOINT; cPoints: UINT): Integer; stdcall;
  2227. {$EXTERNALSYM MapWindowPoints}
  2228. function WindowFromPoint(Point: POINT): HWND; stdcall;
  2229. {$EXTERNALSYM WindowFromPoint}
  2230. function ChildWindowFromPoint(hWndParent: HWND; Point: POINT): HWND; stdcall;
  2231. {$EXTERNALSYM ChildWindowFromPoint}
  2232. const
  2233.   CWP_ALL             = $0000;
  2234.   {$EXTERNALSYM CWP_ALL}
  2235.   CWP_SKIPINVISIBLE   = $0001;
  2236.   {$EXTERNALSYM CWP_SKIPINVISIBLE}
  2237.   CWP_SKIPDISABLED    = $0002;
  2238.   {$EXTERNALSYM CWP_SKIPDISABLED}
  2239.   CWP_SKIPTRANSPARENT = $0004;
  2240.   {$EXTERNALSYM CWP_SKIPTRANSPARENT}
  2241. function ChildWindowFromPointEx(hwndParent: HWND; pt: POINT; uFlags: UINT): HWND; stdcall;
  2242. {$EXTERNALSYM ChildWindowFromPointEx}
  2243. //
  2244. // Color Types
  2245. //
  2246. const
  2247.   CTLCOLOR_MSGBOX    = 0;
  2248.   {$EXTERNALSYM CTLCOLOR_MSGBOX}
  2249.   CTLCOLOR_EDIT      = 1;
  2250.   {$EXTERNALSYM CTLCOLOR_EDIT}
  2251.   CTLCOLOR_LISTBOX   = 2;
  2252.   {$EXTERNALSYM CTLCOLOR_LISTBOX}
  2253.   CTLCOLOR_BTN       = 3;
  2254.   {$EXTERNALSYM CTLCOLOR_BTN}
  2255.   CTLCOLOR_DLG       = 4;
  2256.   {$EXTERNALSYM CTLCOLOR_DLG}
  2257.   CTLCOLOR_SCROLLBAR = 5;
  2258.   {$EXTERNALSYM CTLCOLOR_SCROLLBAR}
  2259.   CTLCOLOR_STATIC    = 6;
  2260.   {$EXTERNALSYM CTLCOLOR_STATIC}
  2261.   CTLCOLOR_MAX       = 7;
  2262.   {$EXTERNALSYM CTLCOLOR_MAX}
  2263.   COLOR_SCROLLBAR           = 0;
  2264.   {$EXTERNALSYM COLOR_SCROLLBAR}
  2265.   COLOR_BACKGROUND          = 1;
  2266.   {$EXTERNALSYM COLOR_BACKGROUND}
  2267.   COLOR_ACTIVECAPTION       = 2;
  2268.   {$EXTERNALSYM COLOR_ACTIVECAPTION}
  2269.   COLOR_INACTIVECAPTION     = 3;
  2270.   {$EXTERNALSYM COLOR_INACTIVECAPTION}
  2271.   COLOR_MENU                = 4;
  2272.   {$EXTERNALSYM COLOR_MENU}
  2273.   COLOR_WINDOW              = 5;
  2274.   {$EXTERNALSYM COLOR_WINDOW}
  2275.   COLOR_WINDOWFRAME         = 6;
  2276.   {$EXTERNALSYM COLOR_WINDOWFRAME}
  2277.   COLOR_MENUTEXT            = 7;
  2278.   {$EXTERNALSYM COLOR_MENUTEXT}
  2279.   COLOR_WINDOWTEXT          = 8;
  2280.   {$EXTERNALSYM COLOR_WINDOWTEXT}
  2281.   COLOR_CAPTIONTEXT         = 9;
  2282.   {$EXTERNALSYM COLOR_CAPTIONTEXT}
  2283.   COLOR_ACTIVEBORDER        = 10;
  2284.   {$EXTERNALSYM COLOR_ACTIVEBORDER}
  2285.   COLOR_INACTIVEBORDER      = 11;
  2286.   {$EXTERNALSYM COLOR_INACTIVEBORDER}
  2287.   COLOR_APPWORKSPACE        = 12;
  2288.   {$EXTERNALSYM COLOR_APPWORKSPACE}
  2289.   COLOR_HIGHLIGHT           = 13;
  2290.   {$EXTERNALSYM COLOR_HIGHLIGHT}
  2291.   COLOR_HIGHLIGHTTEXT       = 14;
  2292.   {$EXTERNALSYM COLOR_HIGHLIGHTTEXT}
  2293.   COLOR_BTNFACE             = 15;
  2294.   {$EXTERNALSYM COLOR_BTNFACE}
  2295.   COLOR_BTNSHADOW           = 16;
  2296.   {$EXTERNALSYM COLOR_BTNSHADOW}
  2297.   COLOR_GRAYTEXT            = 17;
  2298.   {$EXTERNALSYM COLOR_GRAYTEXT}
  2299.   COLOR_BTNTEXT             = 18;
  2300.   {$EXTERNALSYM COLOR_BTNTEXT}
  2301.   COLOR_INACTIVECAPTIONTEXT = 19;
  2302.   {$EXTERNALSYM COLOR_INACTIVECAPTIONTEXT}
  2303.   COLOR_BTNHIGHLIGHT        = 20;
  2304.   {$EXTERNALSYM COLOR_BTNHIGHLIGHT}
  2305.   COLOR_3DDKSHADOW = 21;
  2306.   {$EXTERNALSYM COLOR_3DDKSHADOW}
  2307.   COLOR_3DLIGHT    = 22;
  2308.   {$EXTERNALSYM COLOR_3DLIGHT}
  2309.   COLOR_INFOTEXT   = 23;
  2310.   {$EXTERNALSYM COLOR_INFOTEXT}
  2311.   COLOR_INFOBK     = 24;
  2312.   {$EXTERNALSYM COLOR_INFOBK}
  2313.   COLOR_HOTLIGHT                = 26;
  2314.   {$EXTERNALSYM COLOR_HOTLIGHT}
  2315.   COLOR_GRADIENTACTIVECAPTION   = 27;
  2316.   {$EXTERNALSYM COLOR_GRADIENTACTIVECAPTION}
  2317.   COLOR_GRADIENTINACTIVECAPTION = 28;
  2318.   {$EXTERNALSYM COLOR_GRADIENTINACTIVECAPTION}
  2319.   COLOR_MENUHILIGHT             = 29;
  2320.   {$EXTERNALSYM COLOR_MENUHILIGHT}
  2321.   COLOR_MENUBAR                 = 30;
  2322.   {$EXTERNALSYM COLOR_MENUBAR}
  2323.   COLOR_DESKTOP     = COLOR_BACKGROUND;
  2324.   {$EXTERNALSYM COLOR_DESKTOP}
  2325.   COLOR_3DFACE      = COLOR_BTNFACE;
  2326.   {$EXTERNALSYM COLOR_3DFACE}
  2327.   COLOR_3DSHADOW    = COLOR_BTNSHADOW;
  2328.   {$EXTERNALSYM COLOR_3DSHADOW}
  2329.   COLOR_3DHIGHLIGHT = COLOR_BTNHIGHLIGHT;
  2330.   {$EXTERNALSYM COLOR_3DHIGHLIGHT}
  2331.   COLOR_3DHILIGHT   = COLOR_BTNHIGHLIGHT;
  2332.   {$EXTERNALSYM COLOR_3DHILIGHT}
  2333.   COLOR_BTNHILIGHT  = COLOR_BTNHIGHLIGHT;
  2334.   {$EXTERNALSYM COLOR_BTNHILIGHT}
  2335. function GetSysColor(nIndex: Integer): DWORD; stdcall;
  2336. {$EXTERNALSYM GetSysColor}
  2337. function GetSysColorBrush(nIndex: Integer): HBRUSH; stdcall;
  2338. {$EXTERNALSYM GetSysColorBrush}
  2339. function SetSysColors(cElements: Integer; lpaElements: LPINT;
  2340.   lpaRgbValues: LPCOLORREF): BOOL; stdcall;
  2341. {$EXTERNALSYM SetSysColors}
  2342. function DrawFocusRect(hDC: HDC; const lprc: RECT): BOOL; stdcall;
  2343. {$EXTERNALSYM DrawFocusRect}
  2344. function FillRect(hDC: HDC; const lprc: RECT; hbr: HBRUSH): Integer; stdcall;
  2345. {$EXTERNALSYM FillRect}
  2346. function FrameRect(hDC: HDC; const lprc: RECT; hbr: HBRUSH): Integer; stdcall;
  2347. {$EXTERNALSYM FrameRect}
  2348. function InvertRect(hDC: HDC; const lprc: RECT): BOOL; stdcall;
  2349. {$EXTERNALSYM InvertRect}
  2350. function SetRect(var lprc: RECT; xLeft, yTop, xRight, yBottom: Integer): BOOL; stdcall;
  2351. {$EXTERNALSYM SetRect}
  2352. function SetRectEmpty(var lprc: RECT): BOOL; stdcall;
  2353. {$EXTERNALSYM SetRectEmpty}
  2354. function CopyRect(var lprcDst: RECT; const lprcSrc: RECT): BOOL; stdcall;
  2355. {$EXTERNALSYM CopyRect}
  2356. function InflateRect(var lprc: RECT; dx, dy: Integer): BOOL; stdcall;
  2357. {$EXTERNALSYM InflateRect}
  2358. function IntersectRect(var lprcDst: RECT; const lprcSrc1, lprcSrc2: RECT): BOOL; stdcall;
  2359. {$EXTERNALSYM IntersectRect}
  2360. function UnionRect(var lprcDst: RECT; const lprcSrc1, lprcSrc2: RECT): BOOL; stdcall;
  2361. {$EXTERNALSYM UnionRect}
  2362. function SubtractRect(var lprcDst: RECT; const lprcSrc1, lprcSrc2: RECT): BOOL; stdcall;
  2363. {$EXTERNALSYM SubtractRect}
  2364. function OffsetRect(var lprc: RECT; dx, dy: Integer): BOOL; stdcall;
  2365. {$EXTERNALSYM OffsetRect}
  2366. function IsRectEmpty(const lprc: RECT): BOOL; stdcall;
  2367. {$EXTERNALSYM IsRectEmpty}
  2368. function EqualRect(const lprc1, lprc2: RECT): BOOL; stdcall;
  2369. {$EXTERNALSYM EqualRect}
  2370. function PtInRect(const lprc: RECT; pt: POINT): BOOL; stdcall;
  2371. {$EXTERNALSYM PtInRect}
  2372. function GetWindowWord(hWnd: HWND; nIndex: Integer): WORD; stdcall;
  2373. {$EXTERNALSYM GetWindowWord}
  2374. function SetWindowWord(hWnd: HWND; nIndex: Integer; wNewWord: WORD): WORD; stdcall;
  2375. {$EXTERNALSYM SetWindowWord}
  2376. function GetWindowLongA(hWnd: HWND; nIndex: Integer): LONG; stdcall;
  2377. {$EXTERNALSYM GetWindowLongA}
  2378. function GetWindowLongW(hWnd: HWND; nIndex: Integer): LONG; stdcall;
  2379. {$EXTERNALSYM GetWindowLongW}
  2380. {$IFDEF UNICODE}
  2381. function GetWindowLong(hWnd: HWND; nIndex: Integer): LONG; stdcall;
  2382. {$EXTERNALSYM GetWindowLong}
  2383. {$ELSE}
  2384. function GetWindowLong(hWnd: HWND; nIndex: Integer): LONG; stdcall;
  2385. {$EXTERNALSYM GetWindowLong}
  2386. {$ENDIF}
  2387. function SetWindowLongA(hWnd: HWND; nIndex: Integer; dwNewLong: LONG): LONG; stdcall;
  2388. {$EXTERNALSYM SetWindowLongA}
  2389. function SetWindowLongW(hWnd: HWND; nIndex: Integer; dwNewLong: LONG): LONG; stdcall;
  2390. {$EXTERNALSYM SetWindowLongW}
  2391. {$IFDEF UNICODE}
  2392. function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: LONG): LONG; stdcall;
  2393. {$EXTERNALSYM SetWindowLong}
  2394. {$ELSE}
  2395. function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: LONG): LONG; stdcall;
  2396. {$EXTERNALSYM SetWindowLong}
  2397. {$ENDIF}
  2398. function GetWindowLongPtrA(hWnd: HWND; nIndex: Integer): LONG_PTR;
  2399. {$EXTERNALSYM GetWindowLongPtrA}
  2400. function GetWindowLongPtrW(hWnd: HWND; nIndex: Integer): LONG_PTR;
  2401. {$EXTERNALSYM GetWindowLongPtrW}
  2402. {$IFDEF UNICODE}
  2403. function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): LONG_PTR;
  2404. {$EXTERNALSYM GetWindowLongPtr}
  2405. {$ELSE}
  2406. function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): LONG_PTR;
  2407. {$EXTERNALSYM GetWindowLongPtr}
  2408. {$ENDIF}
  2409. function SetWindowLongPtrA(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR;
  2410. {$EXTERNALSYM SetWindowLongPtrA}
  2411. function SetWindowLongPtrW(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR;
  2412. {$EXTERNALSYM SetWindowLongPtrW}
  2413. {$IFDEF UNICODE}
  2414. function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR;
  2415. {$EXTERNALSYM SetWindowLongPtr}
  2416. {$ELSE}
  2417. function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR;
  2418. {$EXTERNALSYM SetWindowLongPtr}
  2419. {$ENDIF}
  2420. function GetClassWord(hWnd: HWND; nIndex: Integer): WORD; stdcall;
  2421. {$EXTERNALSYM GetClassWord}
  2422. function SetClassWord(hWnd: HWND; nIndex: Integer; wNewWord: WORD): WORD; stdcall;
  2423. {$EXTERNALSYM SetClassWord}
  2424. function GetClassLongA(hWnd: HWND; nIndex: Integer): DWORD; stdcall;
  2425. {$EXTERNALSYM GetClassLongA}
  2426. function GetClassLongW(hWnd: HWND; nIndex: Integer): DWORD; stdcall;
  2427. {$EXTERNALSYM GetClassLongW}
  2428. {$IFDEF UNICODE}
  2429. function GetClassLong(hWnd: HWND; nIndex: Integer): DWORD; stdcall;
  2430. {$EXTERNALSYM GetClassLong}
  2431. {$ELSE}
  2432. function GetClassLong(hWnd: HWND; nIndex: Integer): DWORD; stdcall;
  2433. {$EXTERNALSYM GetClassLong}
  2434. {$ENDIF}
  2435. function SetClassLongA(hWnd: HWND; nIndex: Integer; dwNewLong: LONG): DWORD; stdcall;
  2436. {$EXTERNALSYM SetClassLongA}
  2437. function SetClassLongW(hWnd: HWND; nIndex: Integer; dwNewLong: LONG): DWORD; stdcall;
  2438. {$EXTERNALSYM SetClassLongW}
  2439. {$IFDEF UNICODE}
  2440. function SetClassLong(hWnd: HWND; nIndex: Integer; dwNewLong: LONG): DWORD; stdcall;
  2441. {$EXTERNALSYM SetClassLong}
  2442. {$ELSE}
  2443. function SetClassLong(hWnd: HWND; nIndex: Integer; dwNewLong: LONG): DWORD; stdcall;
  2444. {$EXTERNALSYM SetClassLong}
  2445. {$ENDIF}
  2446. function GetClassLongPtrA(hWnd: HWND; nIndex: Integer): ULONG_PTR;
  2447. {$EXTERNALSYM GetClassLongPtrA}
  2448. function GetClassLongPtrW(hWnd: HWND; nIndex: Integer): ULONG_PTR;
  2449. {$EXTERNALSYM GetClassLongPtrW}
  2450. {$IFDEF UNICODE}
  2451. function GetClassLongPtr(hWnd: HWND; nIndex: Integer): ULONG_PTR;
  2452. {$EXTERNALSYM GetClassLongPtr}
  2453. {$ELSE}
  2454. function GetClassLongPtr(hWnd: HWND; nIndex: Integer): ULONG_PTR;
  2455. {$EXTERNALSYM GetClassLongPtr}
  2456. {$ENDIF}
  2457. function SetClassLongPtrA(hWnd: HWND; nIndex: Integer; dwNewLong: ULONG_PTR): ULONG_PTR;
  2458. {$EXTERNALSYM SetClassLongPtrA}
  2459. function SetClassLongPtrW(hWnd: HWND; nIndex: Integer; dwNewLong: ULONG_PTR): ULONG_PTR;
  2460. {$EXTERNALSYM SetClassLongPtrW}
  2461. {$IFDEF UNICODE}
  2462. function SetClassLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: ULONG_PTR): ULONG_PTR;
  2463. {$EXTERNALSYM SetClassLongPtr}
  2464. {$ELSE}
  2465. function SetClassLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: ULONG_PTR): ULONG_PTR;
  2466. {$EXTERNALSYM SetClassLongPtr}
  2467. {$ENDIF}
  2468. function GetProcessDefaultLayout(var pdwDefaultLayout: DWORD): BOOL; stdcall;
  2469. {$EXTERNALSYM GetProcessDefaultLayout}
  2470. function SetProcessDefaultLayout(dwDefaultLayout: DWORD): BOOL; stdcall;
  2471. {$EXTERNALSYM SetProcessDefaultLayout}
  2472. function GetDesktopWindow: HWND; stdcall;
  2473. {$EXTERNALSYM GetDesktopWindow}
  2474. function GetParent(hWnd: HWND): HWND; stdcall;
  2475. {$EXTERNALSYM GetParent}
  2476. function SetParent(hWndChild, hWndNewParent: HWND): HWND; stdcall;
  2477. {$EXTERNALSYM SetParent}
  2478. function EnumChildWindows(hWndParent: HWND; lpEnumFunc: WNDENUMPROC; lParam: LPARAM): BOOL; stdcall;
  2479. {$EXTERNALSYM EnumChildWindows}
  2480. function FindWindowA(lpClassName, lpWindowName: LPCSTR): HWND; stdcall;
  2481. {$EXTERNALSYM FindWindowA}
  2482. function FindWindowW(lpClassName, lpWindowName: LPCWSTR): HWND; stdcall;
  2483. {$EXTERNALSYM FindWindowW}
  2484. {$IFDEF UNICODE}
  2485. function FindWindow(lpClassName, lpWindowName: LPCWSTR): HWND; stdcall;
  2486. {$EXTERNALSYM FindWindow}
  2487. {$ELSE}
  2488. function FindWindow(lpClassName, lpWindowName: LPCSTR): HWND; stdcall;
  2489. {$EXTERNALSYM FindWindow}
  2490. {$ENDIF}
  2491. function FindWindowExA(hwndParent, hwndChildAfter: HWND; lpszClass, lpszWindow: LPCSTR): HWND; stdcall;
  2492. {$EXTERNALSYM FindWindowExA}
  2493. function FindWindowExW(hwndParent, hwndChildAfter: HWND; lpszClass, lpszWindow: LPCWSTR): HWND; stdcall;
  2494. {$EXTERNALSYM FindWindowExW}
  2495. {$IFDEF UNICODE}
  2496. function FindWindowEx(hwndParent, hwndChildAfter: HWND; lpszClass, lpszWindow: LPCWSTR): HWND; stdcall;
  2497. {$EXTERNALSYM FindWindowEx}
  2498. {$ELSE}
  2499. function FindWindowEx(hwndParent, hwndChildAfter: HWND; lpszClass, lpszWindow: LPCSTR): HWND; stdcall;
  2500. {$EXTERNALSYM FindWindowEx}
  2501. {$ENDIF}
  2502. function GetShellWindow: HWND; stdcall;
  2503. {$EXTERNALSYM GetShellWindow}
  2504. function EnumWindows(lpEnumFunc: WNDENUMPROC; lParam: LPARAM): BOOL; stdcall;
  2505. {$EXTERNALSYM EnumWindows}
  2506. function EnumThreadWindows(dwThreadId: DWORD; lpfn: WNDENUMPROC; lParam: LPARAM): BOOL; stdcall;
  2507. {$EXTERNALSYM EnumThreadWindows}
  2508. function EnumTaskWindows(hTask: HANDLE; lpfn: WNDENUMPROC; lParam: LPARAM): BOOL;
  2509. {$EXTERNALSYM EnumTaskWindows}
  2510. function GetClassNameA(hWnd: HWND; lpClassName: LPSTR; nMaxCount: Integer): Integer; stdcall;
  2511. {$EXTERNALSYM GetClassNameA}
  2512. function GetClassNameW(hWnd: HWND; lpClassName: LPWSTR; nMaxCount: Integer): Integer; stdcall;
  2513. {$EXTERNALSYM GetClassNameW}
  2514. {$IFDEF UNICODE}
  2515. function GetClassName(hWnd: HWND; lpClassName: LPWSTR; nMaxCount: Integer): Integer; stdcall;
  2516. {$EXTERNALSYM GetClassName}
  2517. {$ELSE}
  2518. function GetClassName(hWnd: HWND; lpClassName: LPSTR; nMaxCount: Integer): Integer; stdcall;
  2519. {$EXTERNALSYM GetClassName}
  2520. {$ENDIF}
  2521. function GetTopWindow(hWnd: HWND): HWND; stdcall;
  2522. {$EXTERNALSYM GetTopWindow}
  2523. function GetNextWindow(hWnd: HWND; wCmd: UINT): HWND;
  2524. {$EXTERNALSYM GetNextWindow}
  2525. function GetWindowThreadProcessId(hWnd: HWND; lpdwProcessId: LPDWORD): DWORD; stdcall;
  2526. {$EXTERNALSYM GetWindowThreadProcessId}
  2527. function IsGUIThread(bConvert: BOOL): BOOL; stdcall;
  2528. {$EXTERNALSYM IsGUIThread}
  2529. function GetWindowTask(hWnd: HWND): HANDLE;
  2530. {$EXTERNALSYM GetWindowTask}
  2531. function GetLastActivePopup(hWnd: HWND): HWND; stdcall;
  2532. {$EXTERNALSYM GetLastActivePopup}
  2533. //
  2534. // GetWindow() Constants
  2535. //
  2536. const
  2537.   GW_HWNDFIRST    = 0;
  2538.   {$EXTERNALSYM GW_HWNDFIRST}
  2539.   GW_HWNDLAST     = 1;
  2540.   {$EXTERNALSYM GW_HWNDLAST}
  2541.   GW_HWNDNEXT     = 2;
  2542.   {$EXTERNALSYM GW_HWNDNEXT}
  2543.   GW_HWNDPREV     = 3;
  2544.   {$EXTERNALSYM GW_HWNDPREV}
  2545.   GW_OWNER        = 4;
  2546.   {$EXTERNALSYM GW_OWNER}
  2547.   GW_CHILD        = 5;
  2548.   {$EXTERNALSYM GW_CHILD}
  2549. {$IFNDEF WINVER_0500_GREATER} // #if(WINVER <= 0x0400)
  2550.   GW_MAX          = 5;
  2551.   {$EXTERNALSYM GW_MAX}
  2552. {$ELSE}
  2553.   GW_ENABLEDPOPUP = 6;
  2554.   {$EXTERNALSYM GW_ENABLEDPOPUP}
  2555.   GW_MAX          = 6;
  2556.   {$EXTERNALSYM GW_MAX}
  2557. {$ENDIF}
  2558. function GetWindow(hWnd: HWND; uCmd: UINT): HWND; stdcall;
  2559. {$EXTERNALSYM GetWindow}
  2560. function SetWindowsHookA(nFilterType: Integer; pfnFilterProc: HOOKPROC): HHOOK; stdcall;
  2561. {$EXTERNALSYM SetWindowsHookA}
  2562. function SetWindowsHookW(nFilterType: Integer; pfnFilterProc: HOOKPROC): HHOOK; stdcall;
  2563. {$EXTERNALSYM SetWindowsHookW}
  2564. {$IFDEF UNICODE}
  2565. function SetWindowsHook(nFilterType: Integer; pfnFilterProc: HOOKPROC): HHOOK; stdcall;
  2566. {$EXTERNALSYM SetWindowsHook}
  2567. {$ELSE}
  2568. function SetWindowsHook(nFilterType: Integer; pfnFilterProc: HOOKPROC): HHOOK; stdcall;
  2569. {$EXTERNALSYM SetWindowsHook}
  2570. {$ENDIF}
  2571. function UnhookWindowsHook(nCode: Integer; pfnFilterProc: HOOKPROC): BOOL; stdcall;
  2572. {$EXTERNALSYM UnhookWindowsHook}
  2573. function SetWindowsHookExA(idHook: Integer; lpfn: HOOKPROC; hmod: HINSTANCE;
  2574.   dwThreadId: DWORD): HHOOK; stdcall;
  2575. {$EXTERNALSYM SetWindowsHookExA}
  2576. function SetWindowsHookExW(idHook: Integer; lpfn: HOOKPROC; hmod: HINSTANCE;
  2577.   dwThreadId: DWORD): HHOOK; stdcall;
  2578. {$EXTERNALSYM SetWindowsHookExW}
  2579. {$IFDEF UNICODE}
  2580. function SetWindowsHookEx(idHook: Integer; lpfn: HOOKPROC; hmod: HINSTANCE;
  2581.   dwThreadId: DWORD): HHOOK; stdcall;
  2582. {$EXTERNALSYM SetWindowsHookEx}
  2583. {$ELSE}
  2584. function SetWindowsHookEx(idHook: Integer; lpfn: HOOKPROC; hmod: HINSTANCE;
  2585.   dwThreadId: DWORD): HHOOK; stdcall;
  2586. {$EXTERNALSYM SetWindowsHookEx}
  2587. {$ENDIF}
  2588. function UnhookWindowsHookEx(hhk: HHOOK): BOOL; stdcall;
  2589. {$EXTERNALSYM UnhookWindowsHookEx}
  2590. function CallNextHookEx(hhk: HHOOK; nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  2591. {$EXTERNALSYM CallNextHookEx}
  2592. //
  2593. // Macros for source-level compatibility with old functions.
  2594. //
  2595. function DefHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM; phhk: LPHHOOK): LRESULT;
  2596. {$EXTERNALSYM DefHookProc}
  2597. // ;win40  -- A lot of MF_* flags have been renamed as MFT_* and MFS_* flags//
  2598. //
  2599. // Menu flags for Add/Check/EnableMenuItem()
  2600. ///)
  2601. const
  2602.   MF_INSERT = $00000000;
  2603.   {$EXTERNALSYM MF_INSERT}
  2604.   MF_CHANGE = $00000080;
  2605.   {$EXTERNALSYM MF_CHANGE}
  2606.   MF_APPEND = $00000100;
  2607.   {$EXTERNALSYM MF_APPEND}
  2608.   MF_DELETE = $00000200;
  2609.   {$EXTERNALSYM MF_DELETE}
  2610.   MF_REMOVE = $00001000;
  2611.   {$EXTERNALSYM MF_REMOVE}
  2612.   MF_BYCOMMAND  = $00000000;
  2613.   {$EXTERNALSYM MF_BYCOMMAND}
  2614.   MF_BYPOSITION = $00000400;
  2615.   {$EXTERNALSYM MF_BYPOSITION}
  2616.   MF_SEPARATOR = $00000800;
  2617.   {$EXTERNALSYM MF_SEPARATOR}
  2618.   MF_ENABLED  = $00000000;
  2619.   {$EXTERNALSYM MF_ENABLED}
  2620.   MF_GRAYED   = $00000001;
  2621.   {$EXTERNALSYM MF_GRAYED}
  2622.   MF_DISABLED = $00000002;
  2623.   {$EXTERNALSYM MF_DISABLED}
  2624.   MF_UNCHECKED       = $00000000;
  2625.   {$EXTERNALSYM MF_UNCHECKED}
  2626.   MF_CHECKED         = $00000008;
  2627.   {$EXTERNALSYM MF_CHECKED}
  2628.   MF_USECHECKBITMAPS = $00000200;
  2629.   {$EXTERNALSYM MF_USECHECKBITMAPS}
  2630.   MF_STRING    = $00000000;
  2631.   {$EXTERNALSYM MF_STRING}
  2632.   MF_BITMAP    = $00000004;
  2633.   {$EXTERNALSYM MF_BITMAP}
  2634.   MF_OWNERDRAW = $00000100;
  2635.   {$EXTERNALSYM MF_OWNERDRAW}
  2636.   MF_POPUP        = $00000010;
  2637.   {$EXTERNALSYM MF_POPUP}
  2638.   MF_MENUBARBREAK = $00000020;
  2639.   {$EXTERNALSYM MF_MENUBARBREAK}
  2640.   MF_MENUBREAK    = $00000040;
  2641.   {$EXTERNALSYM MF_MENUBREAK}
  2642.   MF_UNHILITE = $00000000;
  2643.   {$EXTERNALSYM MF_UNHILITE}
  2644.   MF_HILITE   = $00000080;
  2645.   {$EXTERNALSYM MF_HILITE}
  2646.   MF_DEFAULT      = $00001000;
  2647.   {$EXTERNALSYM MF_DEFAULT}
  2648.   MF_SYSMENU      = $00002000;
  2649.   {$EXTERNALSYM MF_SYSMENU}
  2650.   MF_HELP         = $00004000;
  2651.   {$EXTERNALSYM MF_HELP}
  2652.   MF_RIGHTJUSTIFY = $00004000;
  2653.   {$EXTERNALSYM MF_RIGHTJUSTIFY}
  2654.   MF_MOUSESELECT = $00008000;
  2655.   {$EXTERNALSYM MF_MOUSESELECT}
  2656.   MF_END         = $00000080; // Obsolete -- only used by old RES files
  2657.   {$EXTERNALSYM MF_END}
  2658.   MFT_STRING       = MF_STRING;
  2659.   {$EXTERNALSYM MFT_STRING}
  2660.   MFT_BITMAP       = MF_BITMAP;
  2661.   {$EXTERNALSYM MFT_BITMAP}
  2662.   MFT_MENUBARBREAK = MF_MENUBARBREAK;
  2663.   {$EXTERNALSYM MFT_MENUBARBREAK}
  2664.   MFT_MENUBREAK    = MF_MENUBREAK;
  2665.   {$EXTERNALSYM MFT_MENUBREAK}
  2666.   MFT_OWNERDRAW    = MF_OWNERDRAW;
  2667.   {$EXTERNALSYM MFT_OWNERDRAW}
  2668.   MFT_RADIOCHECK   = $00000200;
  2669.   {$EXTERNALSYM MFT_RADIOCHECK}
  2670.   MFT_SEPARATOR    = MF_SEPARATOR;
  2671.   {$EXTERNALSYM MFT_SEPARATOR}
  2672.   MFT_RIGHTORDER   = $00002000;
  2673.   {$EXTERNALSYM MFT_RIGHTORDER}
  2674.   MFT_RIGHTJUSTIFY = MF_RIGHTJUSTIFY;
  2675.   {$EXTERNALSYM MFT_RIGHTJUSTIFY}
  2676. // Menu flags for Add/Check/EnableMenuItem()
  2677.   MFS_GRAYED    = $00000003;
  2678.   {$EXTERNALSYM MFS_GRAYED}
  2679.   MFS_DISABLED  = MFS_GRAYED;
  2680.   {$EXTERNALSYM MFS_DISABLED}
  2681.   MFS_CHECKED   = MF_CHECKED;
  2682.   {$EXTERNALSYM MFS_CHECKED}
  2683.   MFS_HILITE    = MF_HILITE;
  2684.   {$EXTERNALSYM MFS_HILITE}
  2685.   MFS_ENABLED   = MF_ENABLED;
  2686.   {$EXTERNALSYM MFS_ENABLED}
  2687.   MFS_UNCHECKED = MF_UNCHECKED;
  2688.   {$EXTERNALSYM MFS_UNCHECKED}
  2689.   MFS_UNHILITE  = MF_UNHILITE;
  2690.   {$EXTERNALSYM MFS_UNHILITE}
  2691.   MFS_DEFAULT   = MF_DEFAULT;
  2692.   {$EXTERNALSYM MFS_DEFAULT}
  2693. function CheckMenuRadioItem(hmenu: HMENU; idFirst, idLast, idCheck, uFlags: UINT): BOOL; stdcall;
  2694. {$EXTERNALSYM CheckMenuRadioItem}
  2695. //
  2696. // Menu item resource format
  2697. //
  2698. type
  2699.   PMENUITEMTEMPLATEHEADER = ^MENUITEMTEMPLATEHEADER;
  2700.   MENUITEMTEMPLATEHEADER = record
  2701.     versionNumber: WORD;
  2702.     offset: WORD;
  2703.   end;
  2704.   {$EXTERNALSYM MENUITEMTEMPLATEHEADER}
  2705.   TMenuItemTemplateHeader = MENUITEMTEMPLATEHEADER;
  2706.   PMENUITEMTEMPLATE = ^MENUITEMTEMPLATE; // version 0
  2707.   MENUITEMTEMPLATE = record
  2708.     mtOption: WORD;
  2709.     mtID: WORD;
  2710.     mtString: array [0..0] of WCHAR;
  2711.   end;
  2712.   {$EXTERNALSYM MENUITEMTEMPLATE}
  2713.   TMenuItemTemplate = MENUITEMTEMPLATE;
  2714. //
  2715. // System Menu Command Values
  2716. //
  2717. const
  2718.   SC_SIZE         = $F000;
  2719.   {$EXTERNALSYM SC_SIZE}
  2720.   SC_MOVE         = $F010;
  2721.   {$EXTERNALSYM SC_MOVE}
  2722.   SC_MINIMIZE     = $F020;
  2723.   {$EXTERNALSYM SC_MINIMIZE}
  2724.   SC_MAXIMIZE     = $F030;
  2725.   {$EXTERNALSYM SC_MAXIMIZE}
  2726.   SC_NEXTWINDOW   = $F040;
  2727.   {$EXTERNALSYM SC_NEXTWINDOW}
  2728.   SC_PREVWINDOW   = $F050;
  2729.   {$EXTERNALSYM SC_PREVWINDOW}
  2730.   SC_CLOSE        = $F060;
  2731.   {$EXTERNALSYM SC_CLOSE}
  2732.   SC_VSCROLL      = $F070;
  2733.   {$EXTERNALSYM SC_VSCROLL}
  2734.   SC_HSCROLL      = $F080;
  2735.   {$EXTERNALSYM SC_HSCROLL}
  2736.   SC_MOUSEMENU    = $F090;
  2737.   {$EXTERNALSYM SC_MOUSEMENU}
  2738.   SC_KEYMENU      = $F100;
  2739.   {$EXTERNALSYM SC_KEYMENU}
  2740.   SC_ARRANGE      = $F110;
  2741.   {$EXTERNALSYM SC_ARRANGE}
  2742.   SC_RESTORE      = $F120;
  2743.   {$EXTERNALSYM SC_RESTORE}
  2744.   SC_TASKLIST     = $F130;
  2745.   {$EXTERNALSYM SC_TASKLIST}
  2746.   SC_SCREENSAVE   = $F140;
  2747.   {$EXTERNALSYM SC_SCREENSAVE}
  2748.   SC_HOTKEY       = $F150;
  2749.   {$EXTERNALSYM SC_HOTKEY}
  2750.   SC_DEFAULT      = $F160;
  2751.   {$EXTERNALSYM SC_DEFAULT}
  2752.   SC_MONITORPOWER = $F170;
  2753.   {$EXTERNALSYM SC_MONITORPOWER}
  2754.   SC_CONTEXTHELP  = $F180;
  2755.   {$EXTERNALSYM SC_CONTEXTHELP}
  2756.   SC_SEPARATOR    = $F00F;
  2757.   {$EXTERNALSYM SC_SEPARATOR}
  2758. //
  2759. // Obsolete names
  2760. //
  2761. const
  2762.   SC_ICON = SC_MINIMIZE;
  2763.   {$EXTERNALSYM SC_ICON}
  2764.   SC_ZOOM = SC_MAXIMIZE;
  2765.   {$EXTERNALSYM SC_ZOOM}
  2766. //
  2767. // Resource Loading Routines
  2768. //
  2769. function LoadBitmapA(hInstance: HINSTANCE; lpBitmapName: LPCSTR): HBITMAP; stdcall;
  2770. {$EXTERNALSYM LoadBitmapA}
  2771. function LoadBitmapW(hInstance: HINSTANCE; lpBitmapName: LPCWSTR): HBITMAP; stdcall;
  2772. {$EXTERNALSYM LoadBitmapW}
  2773. {$IFDEF UNICODE}
  2774. function LoadBitmap(hInstance: HINSTANCE; lpBitmapName: LPCWSTR): HBITMAP; stdcall;
  2775. {$EXTERNALSYM LoadBitmap}
  2776. {$ELSE}
  2777. function LoadBitmap(hInstance: HINSTANCE; lpBitmapName: LPCSTR): HBITMAP; stdcall;
  2778. {$EXTERNALSYM LoadBitmap}
  2779. {$ENDIF}
  2780. function LoadCursorA(hInstance: HINSTANCE; lpCursorName: LPCSTR): HCURSOR; stdcall;
  2781. {$EXTERNALSYM LoadCursorA}
  2782. function LoadCursorW(hInstance: HINSTANCE; lpCursorName: LPCWSTR): HCURSOR; stdcall;
  2783. {$EXTERNALSYM LoadCursorW}
  2784. {$IFDEF UNICODE}
  2785. function LoadCursor(hInstance: HINSTANCE; lpCursorName: LPCWSTR): HCURSOR; stdcall;
  2786. {$EXTERNALSYM LoadCursor}
  2787. {$ELSE}
  2788. function LoadCursor(hInstance: HINSTANCE; lpCursorName: LPCSTR): HCURSOR; stdcall;
  2789. {$EXTERNALSYM LoadCursor}
  2790. {$ENDIF}
  2791. function LoadCursorFromFileA(lpFileName: LPCSTR): HCURSOR; stdcall;
  2792. {$EXTERNALSYM LoadCursorFromFileA}
  2793. function LoadCursorFromFileW(lpFileName: LPCWSTR): HCURSOR; stdcall;
  2794. {$EXTERNALSYM LoadCursorFromFileW}
  2795. {$IFDEF UNICODE}
  2796. function LoadCursorFromFile(lpFileName: LPCWSTR): HCURSOR; stdcall;
  2797. {$EXTERNALSYM LoadCursorFromFile}
  2798. {$ELSE}
  2799. function LoadCursorFromFile(lpFileName: LPCSTR): HCURSOR; stdcall;
  2800. {$EXTERNALSYM LoadCursorFromFile}
  2801. {$ENDIF}
  2802. function CreateCursor(hInst: HINSTANCE; xHotSpot, yHotSpot, nWidth, nHeight: Integer;
  2803.   pvANDPlane: PVOID; pvXORPlane: PVOID): HCURSOR; stdcall;
  2804. {$EXTERNALSYM CreateCursor}
  2805. function DestroyCursor(hCursor: HCURSOR): BOOL; stdcall;
  2806. {$EXTERNALSYM DestroyCursor}
  2807. function CopyCursor(pcur: HCURSOR): HCURSOR;
  2808. {$EXTERNALSYM CopyCursor}
  2809. //
  2810. // Standard Cursor IDs
  2811. //
  2812. const
  2813.   IDC_ARROW       = MAKEINTRESOURCE(32512);
  2814.   {$EXTERNALSYM IDC_ARROW}
  2815.   IDC_IBEAM       = MAKEINTRESOURCE(32513);
  2816.   {$EXTERNALSYM IDC_IBEAM}
  2817.   IDC_WAIT        = MAKEINTRESOURCE(32514);
  2818.   {$EXTERNALSYM IDC_WAIT}
  2819.   IDC_CROSS       = MAKEINTRESOURCE(32515);
  2820.   {$EXTERNALSYM IDC_CROSS}
  2821.   IDC_UPARROW     = MAKEINTRESOURCE(32516);
  2822.   {$EXTERNALSYM IDC_UPARROW}
  2823.   IDC_SIZE        = MAKEINTRESOURCE(32640); // OBSOLETE: use IDC_SIZEALL
  2824.   {$EXTERNALSYM IDC_SIZE}
  2825.   IDC_ICON        = MAKEINTRESOURCE(32641); // OBSOLETE: use IDC_ARROW
  2826.   {$EXTERNALSYM IDC_ICON}
  2827.   IDC_SIZENWSE    = MAKEINTRESOURCE(32642);
  2828.   {$EXTERNALSYM IDC_SIZENWSE}
  2829.   IDC_SIZENESW    = MAKEINTRESOURCE(32643);
  2830.   {$EXTERNALSYM IDC_SIZENESW}
  2831.   IDC_SIZEWE      = MAKEINTRESOURCE(32644);
  2832.   {$EXTERNALSYM IDC_SIZEWE}
  2833.   IDC_SIZENS      = MAKEINTRESOURCE(32645);
  2834.   {$EXTERNALSYM IDC_SIZENS}
  2835.   IDC_SIZEALL     = MAKEINTRESOURCE(32646);
  2836.   {$EXTERNALSYM IDC_SIZEALL}
  2837.   IDC_NO          = MAKEINTRESOURCE(32648); // not in win3.1
  2838.   {$EXTERNALSYM IDC_NO}
  2839.   IDC_HAND        = MAKEINTRESOURCE(32649);
  2840.   {$EXTERNALSYM IDC_HAND}
  2841.   IDC_APPSTARTING = MAKEINTRESOURCE(32650); // not in win3.1
  2842.   {$EXTERNALSYM IDC_APPSTARTING}
  2843.   IDC_HELP        = MAKEINTRESOURCE(32651);
  2844.   {$EXTERNALSYM IDC_HELP}
  2845. function SetSystemCursor(hcur: HCURSOR; id: DWORD): BOOL; stdcall;
  2846. {$EXTERNALSYM SetSystemCursor}
  2847. type
  2848.   PICONINFO = ^ICONINFO;
  2849.   _ICONINFO = record
  2850.     fIcon: BOOL;
  2851.     xHotspot: DWORD;
  2852.     yHotspot: DWORD;
  2853.     hbmMask: HBITMAP;
  2854.     hbmColor: HBITMAP;
  2855.   end;
  2856.   {$EXTERNALSYM _ICONINFO}
  2857.   ICONINFO = _ICONINFO;
  2858.   {$EXTERNALSYM ICONINFO}
  2859.   TIconInfo = ICONINFO;
  2860. function LoadIconA(hInstance: HINSTANCE; lpIconName: LPCSTR): HICON; stdcall;
  2861. {$EXTERNALSYM LoadIconA}
  2862. function LoadIconW(hInstance: HINSTANCE; lpIconName: LPCWSTR): HICON; stdcall;
  2863. {$EXTERNALSYM LoadIconW}
  2864. {$IFDEF UNICODE}
  2865. function LoadIcon(hInstance: HINSTANCE; lpIconName: LPCWSTR): HICON; stdcall;
  2866. {$EXTERNALSYM LoadIcon}
  2867. {$ELSE}
  2868. function LoadIcon(hInstance: HINSTANCE; lpIconName: LPCSTR): HICON; stdcall;
  2869. {$EXTERNALSYM LoadIcon}
  2870. {$ENDIF}
  2871. function PrivateExtractIconsA(szFileName: LPCSTR; nIconIndex, cxIcon, cyIcon: Integer; var phicon: HICON;
  2872.   var piconid: UINT; nIcons, flags: UINT): UINT; stdcall;
  2873. {$EXTERNALSYM PrivateExtractIconsA}
  2874. function PrivateExtractIconsW(szFileName: LPCWSTR; nIconIndex, cxIcon, cyIcon: Integer; var phicon: HICON;
  2875.   var piconid: UINT; nIcons, flags: UINT): UINT; stdcall;
  2876. {$EXTERNALSYM PrivateExtractIconsW}
  2877. {$IFDEF UNICODE}
  2878. function PrivateExtractIcons(szFileName: LPCWSTR; nIconIndex, cxIcon, cyIcon: Integer; var phicon: HICON;
  2879.   var piconid: UINT; nIcons, flags: UINT): UINT; stdcall;
  2880. {$EXTERNALSYM PrivateExtractIcons}
  2881. {$ELSE}
  2882. function PrivateExtractIcons(szFileName: LPCSTR; nIconIndex, cxIcon, cyIcon: Integer; var phicon: HICON;
  2883.   var piconid: UINT; nIcons, flags: UINT): UINT; stdcall;
  2884. {$EXTERNALSYM PrivateExtractIcons}
  2885. {$ENDIF}
  2886. function CreateIcon(hInstance: HINSTANCE; nWidth, nHeight: Integer; cPlanes,
  2887.   cBitsPixel: BYTE; lpbANDbits: LPBYTE; lpbXORbits: LPBYTE): HICON; stdcall;
  2888. {$EXTERNALSYM CreateIcon}
  2889. function DestroyIcon(hIcon: HICON): BOOL; stdcall;
  2890. {$EXTERNALSYM DestroyIcon}
  2891. function LookupIconIdFromDirectory(presbits: PBYTE; fIcon: BOOL): Integer; stdcall;
  2892. {$EXTERNALSYM LookupIconIdFromDirectory}
  2893. function LookupIconIdFromDirectoryEx(presbits: PBYTE; fIcon: BOOL;
  2894.   cxDesired, cyDesired: Integer; Flags: UINT): Integer; stdcall;
  2895. {$EXTERNALSYM LookupIconIdFromDirectoryEx}
  2896. function CreateIconFromResource(presbits: PBYTE; dwResSize: DWORD;
  2897.   fIcon: BOOL; dwVer: DWORD): HICON; stdcall;
  2898. {$EXTERNALSYM CreateIconFromResource}
  2899. function CreateIconFromResourceEx(presbits: PBYTE; dwResSize: DWORD; fIcon: BOOL;
  2900.   dwVer: DWORD; cxDesired, cyDesired: Integer; Flags: UINT): HICON; stdcall;
  2901. {$EXTERNALSYM CreateIconFromResourceEx}
  2902. // Icon/Cursor header//
  2903. type
  2904.   LPCURSORSHAPE = ^CURSORSHAPE;
  2905.   {$EXTERNALSYM LPCURSORSHAPE}
  2906.   tagCURSORSHAPE = record
  2907.     xHotSpot: Integer;
  2908.     yHotSpot: Integer;
  2909.     cx: Integer;
  2910.     cy: Integer;
  2911.     cbWidth: Integer;
  2912.     Planes: BYTE;
  2913.     BitsPixel: BYTE;
  2914.   end;
  2915.   {$EXTERNALSYM tagCURSORSHAPE}
  2916.   CURSORSHAPE = tagCURSORSHAPE;
  2917.   {$EXTERNALSYM CURSORSHAPE}
  2918.   TCursorShape = CURSORSHAPE;
  2919.   PCursorShape = LPCURSORSHAPE;
  2920. const
  2921.   IMAGE_BITMAP      = 0;
  2922.   {$EXTERNALSYM IMAGE_BITMAP}
  2923.   IMAGE_ICON        = 1;
  2924.   {$EXTERNALSYM IMAGE_ICON}
  2925.   IMAGE_CURSOR      = 2;
  2926.   {$EXTERNALSYM IMAGE_CURSOR}
  2927.   IMAGE_ENHMETAFILE = 3;
  2928.   {$EXTERNALSYM IMAGE_ENHMETAFILE}
  2929.   LR_DEFAULTCOLOR     = $0000;
  2930.   {$EXTERNALSYM LR_DEFAULTCOLOR}
  2931.   LR_MONOCHROME       = $0001;
  2932.   {$EXTERNALSYM LR_MONOCHROME}
  2933.   LR_COLOR            = $0002;
  2934.   {$EXTERNALSYM LR_COLOR}
  2935.   LR_COPYRETURNORG    = $0004;
  2936.   {$EXTERNALSYM LR_COPYRETURNORG}
  2937.   LR_COPYDELETEORG    = $0008;
  2938.   {$EXTERNALSYM LR_COPYDELETEORG}
  2939.   LR_LOADFROMFILE     = $0010;
  2940.   {$EXTERNALSYM LR_LOADFROMFILE}
  2941.   LR_LOADTRANSPARENT  = $0020;
  2942.   {$EXTERNALSYM LR_LOADTRANSPARENT}
  2943.   LR_DEFAULTSIZE      = $0040;
  2944.   {$EXTERNALSYM LR_DEFAULTSIZE}
  2945.   LR_VGACOLOR         = $0080;
  2946.   {$EXTERNALSYM LR_VGACOLOR}
  2947.   LR_LOADMAP3DCOLORS  = $1000;
  2948.   {$EXTERNALSYM LR_LOADMAP3DCOLORS}
  2949.   LR_CREATEDIBSECTION = $2000;
  2950.   {$EXTERNALSYM LR_CREATEDIBSECTION}
  2951.   LR_COPYFROMRESOURCE = $4000;
  2952.   {$EXTERNALSYM LR_COPYFROMRESOURCE}
  2953.   LR_SHARED           = $8000;
  2954.   {$EXTERNALSYM LR_SHARED}
  2955. function LoadImageA(hinst: HINSTANCE; lpszName: LPCSTR; uType: UINT;
  2956.   cxDesired, cyDesired: Integer; fuLoad: UINT): HANDLE; stdcall;
  2957. {$EXTERNALSYM LoadImageA}
  2958. function LoadImageW(hinst: HINSTANCE; lpszName: LPCWSTR; uType: UINT;
  2959.   cxDesired, cyDesired: Integer; fuLoad: UINT): HANDLE; stdcall;
  2960. {$EXTERNALSYM LoadImageW}
  2961. {$IFDEF UNICODE}
  2962. function LoadImage(hinst: HINSTANCE; lpszName: LPCWSTR; uType: UINT;
  2963.   cxDesired, cyDesired: Integer; fuLoad: UINT): HANDLE; stdcall;
  2964. {$EXTERNALSYM LoadImage}
  2965. {$ELSE}
  2966. function LoadImage(hinst: HINSTANCE; lpszName: LPCSTR; uType: UINT;
  2967.   cxDesired, cyDesired: Integer; fuLoad: UINT): HANDLE; stdcall;
  2968. {$EXTERNALSYM LoadImage}
  2969. {$ENDIF}
  2970. function CopyImage(hinst: HANDLE; lpszName: UINT; cxDesired, cyDesired: Integer;
  2971.   fuFlags: UINT): HANDLE; stdcall;
  2972. {$EXTERNALSYM CopyImage}
  2973. const
  2974.   DI_MASK        = $0001;
  2975.   {$EXTERNALSYM DI_MASK}
  2976.   DI_IMAGE       = $0002;
  2977.   {$EXTERNALSYM DI_IMAGE}
  2978.   DI_NORMAL      = $0003;
  2979.   {$EXTERNALSYM DI_NORMAL}
  2980.   DI_COMPAT      = $0004;
  2981.   {$EXTERNALSYM DI_COMPAT}
  2982.   DI_DEFAULTSIZE = $0008;
  2983.   {$EXTERNALSYM DI_DEFAULTSIZE}
  2984.   DI_NOMIRROR    = $0010;
  2985.   {$EXTERNALSYM DI_NOMIRROR}
  2986. function DrawIconEx(hdc: HDC; xLeft, yTop: Integer; hIcon: HICON;
  2987.   cxWidth, cyWidth: Integer; istepIfAniCur: UINT; hbrFlickerFreeDraw: HBRUSH;
  2988.   diFlags: UINT): BOOL; stdcall;
  2989. {$EXTERNALSYM DrawIconEx}
  2990. function CreateIconIndirect(const piconinfo: ICONINFO): HICON; stdcall;
  2991. {$EXTERNALSYM CreateIconIndirect}
  2992. function CopyIcon(hIcon: HICON): HICON; stdcall;
  2993. {$EXTERNALSYM CopyIcon}
  2994. function GetIconInfo(hIcon: HICON; var piconinfo: ICONINFO): BOOL; stdcall;
  2995. {$EXTERNALSYM GetIconInfo}
  2996. const
  2997.   RES_ICON   = 1;
  2998.   {$EXTERNALSYM RES_ICON}
  2999.   RES_CURSOR = 2;
  3000.   {$EXTERNALSYM RES_CURSOR}
  3001. //
  3002. // OEM Resource Ordinal Numbers
  3003. //
  3004.   OBM_CLOSE    = 32754;
  3005.   {$EXTERNALSYM OBM_CLOSE}
  3006.   OBM_UPARROW  = 32753;
  3007.   {$EXTERNALSYM OBM_UPARROW}
  3008.   OBM_DNARROW  = 32752;
  3009.   {$EXTERNALSYM OBM_DNARROW}
  3010.   OBM_RGARROW  = 32751;
  3011.   {$EXTERNALSYM OBM_RGARROW}
  3012.   OBM_LFARROW  = 32750;
  3013.   {$EXTERNALSYM OBM_LFARROW}
  3014.   OBM_REDUCE   = 32749;
  3015.   {$EXTERNALSYM OBM_REDUCE}
  3016.   OBM_ZOOM     = 32748;
  3017.   {$EXTERNALSYM OBM_ZOOM}
  3018.   OBM_RESTORE  = 32747;
  3019.   {$EXTERNALSYM OBM_RESTORE}
  3020.   OBM_REDUCED  = 32746;
  3021.   {$EXTERNALSYM OBM_REDUCED}
  3022.   OBM_ZOOMD    = 32745;
  3023.   {$EXTERNALSYM OBM_ZOOMD}
  3024.   OBM_RESTORED = 32744;
  3025.   {$EXTERNALSYM OBM_RESTORED}
  3026.   OBM_UPARROWD = 32743;
  3027.   {$EXTERNALSYM OBM_UPARROWD}
  3028.   OBM_DNARROWD = 32742;
  3029.   {$EXTERNALSYM OBM_DNARROWD}
  3030.   OBM_RGARROWD = 32741;
  3031.   {$EXTERNALSYM OBM_RGARROWD}
  3032.   OBM_LFARROWD = 32740;
  3033.   {$EXTERNALSYM OBM_LFARROWD}
  3034.   OBM_MNARROW  = 32739;
  3035.   {$EXTERNALSYM OBM_MNARROW}
  3036.   OBM_COMBO    = 32738;
  3037.   {$EXTERNALSYM OBM_COMBO}
  3038.   OBM_UPARROWI = 32737;
  3039.   {$EXTERNALSYM OBM_UPARROWI}
  3040.   OBM_DNARROWI = 32736;
  3041.   {$EXTERNALSYM OBM_DNARROWI}
  3042.   OBM_RGARROWI = 32735;
  3043.   {$EXTERNALSYM OBM_RGARROWI}
  3044.   OBM_LFARROWI = 32734;
  3045.   {$EXTERNALSYM OBM_LFARROWI}
  3046.   OBM_OLD_CLOSE   = 32767;
  3047.   {$EXTERNALSYM OBM_OLD_CLOSE}
  3048.   OBM_SIZE        = 32766;
  3049.   {$EXTERNALSYM OBM_SIZE}
  3050.   OBM_OLD_UPARROW = 32765;
  3051.   {$EXTERNALSYM OBM_OLD_UPARROW}
  3052.   OBM_OLD_DNARROW = 32764;
  3053.   {$EXTERNALSYM OBM_OLD_DNARROW}
  3054.   OBM_OLD_RGARROW = 32763;
  3055.   {$EXTERNALSYM OBM_OLD_RGARROW}
  3056.   OBM_OLD_LFARROW = 32762;
  3057.   {$EXTERNALSYM OBM_OLD_LFARROW}
  3058.   OBM_BTSIZE      = 32761;
  3059.   {$EXTERNALSYM OBM_BTSIZE}
  3060.   OBM_CHECK       = 32760;
  3061.   {$EXTERNALSYM OBM_CHECK}
  3062.   OBM_CHECKBOXES  = 32759;
  3063.   {$EXTERNALSYM OBM_CHECKBOXES}
  3064.   OBM_BTNCORNERS  = 32758;
  3065.   {$EXTERNALSYM OBM_BTNCORNERS}
  3066.   OBM_OLD_REDUCE  = 32757;
  3067.   {$EXTERNALSYM OBM_OLD_REDUCE}
  3068.   OBM_OLD_ZOOM    = 32756;
  3069.   {$EXTERNALSYM OBM_OLD_ZOOM}
  3070.   OBM_OLD_RESTORE = 32755;
  3071.   {$EXTERNALSYM OBM_OLD_RESTORE}
  3072.   OCR_NORMAL      = 32512;
  3073.   {$EXTERNALSYM OCR_NORMAL}
  3074.   OCR_IBEAM       = 32513;
  3075.   {$EXTERNALSYM OCR_IBEAM}
  3076.   OCR_WAIT        = 32514;
  3077.   {$EXTERNALSYM OCR_WAIT}
  3078.   OCR_CROSS       = 32515;
  3079.   {$EXTERNALSYM OCR_CROSS}
  3080.   OCR_UP          = 32516;
  3081.   {$EXTERNALSYM OCR_UP}
  3082.   OCR_SIZE        = 32640; // OBSOLETE: use OCR_SIZEALL
  3083.   {$EXTERNALSYM OCR_SIZE}
  3084.   OCR_ICON        = 32641; // OBSOLETE: use OCR_NORMAL
  3085.   {$EXTERNALSYM OCR_ICON}
  3086.   OCR_SIZENWSE    = 32642;
  3087.   {$EXTERNALSYM OCR_SIZENWSE}
  3088.   OCR_SIZENESW    = 32643;
  3089.   {$EXTERNALSYM OCR_SIZENESW}
  3090.   OCR_SIZEWE      = 32644;
  3091.   {$EXTERNALSYM OCR_SIZEWE}
  3092.   OCR_SIZENS      = 32645;
  3093.   {$EXTERNALSYM OCR_SIZENS}
  3094.   OCR_SIZEALL     = 32646;
  3095.   {$EXTERNALSYM OCR_SIZEALL}
  3096.   OCR_ICOCUR      = 32647; // OBSOLETE: use OIC_WINLOGO
  3097.   {$EXTERNALSYM OCR_ICOCUR}
  3098.   OCR_NO          = 32648;
  3099.   {$EXTERNALSYM OCR_NO}
  3100.   OCR_HAND        = 32649;
  3101.   {$EXTERNALSYM OCR_HAND}
  3102.   OCR_APPSTARTING = 32650;
  3103.   {$EXTERNALSYM OCR_APPSTARTING}
  3104.   OIC_SAMPLE      = 32512;
  3105.   {$EXTERNALSYM OIC_SAMPLE}
  3106.   OIC_HAND        = 32513;
  3107.   {$EXTERNALSYM OIC_HAND}
  3108.   OIC_QUES        = 32514;
  3109.   {$EXTERNALSYM OIC_QUES}
  3110.   OIC_BANG        = 32515;
  3111.   {$EXTERNALSYM OIC_BANG}
  3112.   OIC_NOTE        = 32516;
  3113.   {$EXTERNALSYM OIC_NOTE}
  3114.   OIC_WINLOGO     = 32517;
  3115.   {$EXTERNALSYM OIC_WINLOGO}
  3116.   OIC_WARNING     = OIC_BANG;
  3117.   {$EXTERNALSYM OIC_WARNING}
  3118.   OIC_ERROR       = OIC_HAND;
  3119.   {$EXTERNALSYM OIC_ERROR}
  3120.   OIC_INFORMATION = OIC_NOTE;
  3121.   {$EXTERNALSYM OIC_INFORMATION}
  3122.   ORD_LANGDRIVER = 1; // The ordinal number for the entry point of language drivers.
  3123.   {$EXTERNALSYM ORD_LANGDRIVER}
  3124. //
  3125. // Standard Icon IDs
  3126. //
  3127.   IDI_APPLICATION = MAKEINTRESOURCE(32512);
  3128.   {$EXTERNALSYM IDI_APPLICATION}
  3129.   IDI_HAND        = MAKEINTRESOURCE(32513);
  3130.   {$EXTERNALSYM IDI_HAND}
  3131.   IDI_QUESTION    = MAKEINTRESOURCE(32514);
  3132.   {$EXTERNALSYM IDI_QUESTION}
  3133.   IDI_EXCLAMATION = MAKEINTRESOURCE(32515);
  3134.   {$EXTERNALSYM IDI_EXCLAMATION}
  3135.   IDI_ASTERISK    = MAKEINTRESOURCE(32516);
  3136.   {$EXTERNALSYM IDI_ASTERISK}
  3137.   IDI_WINLOGO = MAKEINTRESOURCE(32517);
  3138.   {$EXTERNALSYM IDI_WINLOGO}
  3139.   IDI_WARNING     = IDI_EXCLAMATION;
  3140.   {$EXTERNALSYM IDI_WARNING}
  3141.   IDI_ERROR       = IDI_HAND;
  3142.   {$EXTERNALSYM IDI_ERROR}
  3143.   IDI_INFORMATION = IDI_ASTERISK;
  3144.   {$EXTERNALSYM IDI_INFORMATION}
  3145. function LoadStringA(hInstance: HINSTANCE; uID: UINT; lpBuffer: LPSTR;
  3146.   nBufferMax: Integer): Integer; stdcall;
  3147. {$EXTERNALSYM LoadStringA}
  3148. function LoadStringW(hInstance: HINSTANCE; uID: UINT; lpBuffer: LPWSTR;
  3149.   nBufferMax: Integer): Integer; stdcall;
  3150. {$EXTERNALSYM LoadStringW}
  3151. {$IFDEF UNICODE}
  3152. function LoadString(hInstance: HINSTANCE; uID: UINT; lpBuffer: LPWSTR;
  3153.   nBufferMax: Integer): Integer; stdcall;
  3154. {$EXTERNALSYM LoadString}
  3155. {$ELSE}
  3156. function LoadString(hInstance: HINSTANCE; uID: UINT; lpBuffer: LPSTR;
  3157.   nBufferMax: Integer): Integer; stdcall;
  3158. {$EXTERNALSYM LoadString}
  3159. {$ENDIF}
  3160. //
  3161. // Dialog Box Command IDs
  3162. //
  3163. const
  3164.   IDOK     = 1;
  3165.   {$EXTERNALSYM IDOK}
  3166.   IDCANCEL = 2;
  3167.   {$EXTERNALSYM IDCANCEL}
  3168.   IDABORT  = 3;
  3169.   {$EXTERNALSYM IDABORT}
  3170.   IDRETRY  = 4;
  3171.   {$EXTERNALSYM IDRETRY}
  3172.   IDIGNORE = 5;
  3173.   {$EXTERNALSYM IDIGNORE}
  3174.   IDYES    = 6;
  3175.   {$EXTERNALSYM IDYES}
  3176.   IDNO     = 7;
  3177.   {$EXTERNALSYM IDNO}
  3178.   IDCLOSE  = 8;
  3179.   {$EXTERNALSYM IDCLOSE}
  3180.   IDHELP   = 9;
  3181.   {$EXTERNALSYM IDHELP}
  3182.   IDTRYAGAIN = 10;
  3183.   {$EXTERNALSYM IDTRYAGAIN}
  3184.   IDCONTINUE = 11;
  3185.   {$EXTERNALSYM IDCONTINUE}
  3186.   IDTIMEOUT  = 32000;
  3187.   {$EXTERNALSYM IDTIMEOUT}
  3188. //
  3189. // Control Manager Structures and Definitions
  3190. //
  3191. //
  3192. // Edit Control Styles
  3193. //
  3194.   ES_LEFT        = $0000;
  3195.   {$EXTERNALSYM ES_LEFT}
  3196.   ES_CENTER      = $0001;
  3197.   {$EXTERNALSYM ES_CENTER}
  3198.   ES_RIGHT       = $0002;
  3199.   {$EXTERNALSYM ES_RIGHT}
  3200.   ES_MULTILINE   = $0004;
  3201.   {$EXTERNALSYM ES_MULTILINE}
  3202.   ES_UPPERCASE   = $0008;
  3203.   {$EXTERNALSYM ES_UPPERCASE}
  3204.   ES_LOWERCASE   = $0010;
  3205.   {$EXTERNALSYM ES_LOWERCASE}
  3206.   ES_PASSWORD    = $0020;
  3207.   {$EXTERNALSYM ES_PASSWORD}
  3208.   ES_AUTOVSCROLL = $0040;
  3209.   {$EXTERNALSYM ES_AUTOVSCROLL}
  3210.   ES_AUTOHSCROLL = $0080;
  3211.   {$EXTERNALSYM ES_AUTOHSCROLL}
  3212.   ES_NOHIDESEL   = $0100;
  3213.   {$EXTERNALSYM ES_NOHIDESEL}
  3214.   ES_OEMCONVERT  = $0400;
  3215.   {$EXTERNALSYM ES_OEMCONVERT}
  3216.   ES_READONLY    = $0800;
  3217.   {$EXTERNALSYM ES_READONLY}
  3218.   ES_WANTRETURN  = $1000;
  3219.   {$EXTERNALSYM ES_WANTRETURN}
  3220.   ES_NUMBER      = $2000;
  3221.   {$EXTERNALSYM ES_NUMBER}
  3222. //
  3223. // Edit Control Notification Codes
  3224. //
  3225.   EN_SETFOCUS  = $0100;
  3226.   {$EXTERNALSYM EN_SETFOCUS}
  3227.   EN_KILLFOCUS = $0200;
  3228.   {$EXTERNALSYM EN_KILLFOCUS}
  3229.   EN_CHANGE    = $0300;
  3230.   {$EXTERNALSYM EN_CHANGE}
  3231.   EN_UPDATE    = $0400;
  3232.   {$EXTERNALSYM EN_UPDATE}
  3233.   EN_ERRSPACE  = $0500;
  3234.   {$EXTERNALSYM EN_ERRSPACE}
  3235.   EN_MAXTEXT   = $0501;
  3236.   {$EXTERNALSYM EN_MAXTEXT}
  3237.   EN_HSCROLL   = $0601;
  3238.   {$EXTERNALSYM EN_HSCROLL}
  3239.   EN_VSCROLL   = $0602;
  3240.   {$EXTERNALSYM EN_VSCROLL}
  3241.   EN_ALIGN_LTR_EC = $0700;
  3242.   {$EXTERNALSYM EN_ALIGN_LTR_EC}
  3243.   EN_ALIGN_RTL_EC = $0701;
  3244.   {$EXTERNALSYM EN_ALIGN_RTL_EC}
  3245. // Edit control EM_SETMARGIN parameters//
  3246.   EC_LEFTMARGIN  = $0001;
  3247.   {$EXTERNALSYM EC_LEFTMARGIN}
  3248.   EC_RIGHTMARGIN = $0002;
  3249.   {$EXTERNALSYM EC_RIGHTMARGIN}
  3250.   EC_USEFONTINFO = $ffff;
  3251.   {$EXTERNALSYM EC_USEFONTINFO}
  3252. // wParam of EM_GET/SETIMESTATUS //
  3253.   EMSIS_COMPOSITIONSTRING = $0001;
  3254.   {$EXTERNALSYM EMSIS_COMPOSITIONSTRING}
  3255. // lParam for EMSIS_COMPOSITIONSTRING //
  3256.   EIMES_GETCOMPSTRATONCE         = $0001;
  3257.   {$EXTERNALSYM EIMES_GETCOMPSTRATONCE}
  3258.   EIMES_CANCELCOMPSTRINFOCUS     = $0002;
  3259.   {$EXTERNALSYM EIMES_CANCELCOMPSTRINFOCUS}
  3260.   EIMES_COMPLETECOMPSTRKILLFOCUS = $0004;
  3261.   {$EXTERNALSYM EIMES_COMPLETECOMPSTRKILLFOCUS}
  3262. //
  3263. // Edit Control Messages
  3264. //
  3265.   EM_GETSEL              = $00B0;
  3266.   {$EXTERNALSYM EM_GETSEL}
  3267.   EM_SETSEL              = $00B1;
  3268.   {$EXTERNALSYM EM_SETSEL}
  3269.   EM_GETRECT             = $00B2;
  3270.   {$EXTERNALSYM EM_GETRECT}
  3271.   EM_SETRECT             = $00B3;
  3272.   {$EXTERNALSYM EM_SETRECT}
  3273.   EM_SETRECTNP           = $00B4;
  3274.   {$EXTERNALSYM EM_SETRECTNP}
  3275.   EM_SCROLL              = $00B5;
  3276.   {$EXTERNALSYM EM_SCROLL}
  3277.   EM_LINESCROLL          = $00B6;
  3278.   {$EXTERNALSYM EM_LINESCROLL}
  3279.   EM_SCROLLCARET         = $00B7;
  3280.   {$EXTERNALSYM EM_SCROLLCARET}
  3281.   EM_GETMODIFY           = $00B8;
  3282.   {$EXTERNALSYM EM_GETMODIFY}
  3283.   EM_SETMODIFY           = $00B9;
  3284.   {$EXTERNALSYM EM_SETMODIFY}
  3285.   EM_GETLINECOUNT        = $00BA;
  3286.   {$EXTERNALSYM EM_GETLINECOUNT}
  3287.   EM_LINEINDEX           = $00BB;
  3288.   {$EXTERNALSYM EM_LINEINDEX}
  3289.   EM_SETHANDLE           = $00BC;
  3290.   {$EXTERNALSYM EM_SETHANDLE}
  3291.   EM_GETHANDLE           = $00BD;
  3292.   {$EXTERNALSYM EM_GETHANDLE}
  3293.   EM_GETTHUMB            = $00BE;
  3294.   {$EXTERNALSYM EM_GETTHUMB}
  3295.   EM_LINELENGTH          = $00C1;
  3296.   {$EXTERNALSYM EM_LINELENGTH}
  3297.   EM_REPLACESEL          = $00C2;
  3298.   {$EXTERNALSYM EM_REPLACESEL}
  3299.   EM_GETLINE             = $00C4;
  3300.   {$EXTERNALSYM EM_GETLINE}
  3301.   EM_LIMITTEXT           = $00C5;
  3302.   {$EXTERNALSYM EM_LIMITTEXT}
  3303.   EM_CANUNDO             = $00C6;
  3304.   {$EXTERNALSYM EM_CANUNDO}
  3305.   EM_UNDO                = $00C7;
  3306.   {$EXTERNALSYM EM_UNDO}
  3307.   EM_FMTLINES            = $00C8;
  3308.   {$EXTERNALSYM EM_FMTLINES}
  3309.   EM_LINEFROMCHAR        = $00C9;
  3310.   {$EXTERNALSYM EM_LINEFROMCHAR}
  3311.   EM_SETTABSTOPS         = $00CB;
  3312.   {$EXTERNALSYM EM_SETTABSTOPS}
  3313.   EM_SETPASSWORDCHAR     = $00CC;
  3314.   {$EXTERNALSYM EM_SETPASSWORDCHAR}
  3315.   EM_EMPTYUNDOBUFFER     = $00CD;
  3316.   {$EXTERNALSYM EM_EMPTYUNDOBUFFER}
  3317.   EM_GETFIRSTVISIBLELINE = $00CE;
  3318.   {$EXTERNALSYM EM_GETFIRSTVISIBLELINE}
  3319.   EM_SETREADONLY         = $00CF;
  3320.   {$EXTERNALSYM EM_SETREADONLY}
  3321.   EM_SETWORDBREAKPROC    = $00D0;
  3322.   {$EXTERNALSYM EM_SETWORDBREAKPROC}
  3323.   EM_GETWORDBREAKPROC    = $00D1;
  3324.   {$EXTERNALSYM EM_GETWORDBREAKPROC}
  3325.   EM_GETPASSWORDCHAR     = $00D2;
  3326.   {$EXTERNALSYM EM_GETPASSWORDCHAR}
  3327.   EM_SETMARGINS          = $00D3;
  3328.   {$EXTERNALSYM EM_SETMARGINS}
  3329.   EM_GETMARGINS          = $00D4;
  3330.   {$EXTERNALSYM EM_GETMARGINS}
  3331.   EM_SETLIMITTEXT        = EM_LIMITTEXT; // ;win40 Name change
  3332.   {$EXTERNALSYM EM_SETLIMITTEXT}
  3333.   EM_GETLIMITTEXT        = $00D5;
  3334.   {$EXTERNALSYM EM_GETLIMITTEXT}
  3335.   EM_POSFROMCHAR         = $00D6;
  3336.   {$EXTERNALSYM EM_POSFROMCHAR}
  3337.   EM_CHARFROMPOS         = $00D7;
  3338.   {$EXTERNALSYM EM_CHARFROMPOS}
  3339.   EM_SETIMESTATUS = $00D8;
  3340.   {$EXTERNALSYM EM_SETIMESTATUS}
  3341.   EM_GETIMESTATUS = $00D9;
  3342.   {$EXTERNALSYM EM_GETIMESTATUS}
  3343. //
  3344. // EDITWORDBREAKPROC code values
  3345. //
  3346.   WB_LEFT        = 0;
  3347.   {$EXTERNALSYM WB_LEFT}
  3348.   WB_RIGHT       = 1;
  3349.   {$EXTERNALSYM WB_RIGHT}
  3350.   WB_ISDELIMITER = 2;
  3351.   {$EXTERNALSYM WB_ISDELIMITER}
  3352. //
  3353. // Button Control Styles
  3354. //
  3355.   BS_PUSHBUTTON      = $00000000;
  3356.   {$EXTERNALSYM BS_PUSHBUTTON}
  3357.   BS_DEFPUSHBUTTON   = $00000001;
  3358.   {$EXTERNALSYM BS_DEFPUSHBUTTON}
  3359.   BS_CHECKBOX        = $00000002;
  3360.   {$EXTERNALSYM BS_CHECKBOX}
  3361.   BS_AUTOCHECKBOX    = $00000003;
  3362.   {$EXTERNALSYM BS_AUTOCHECKBOX}
  3363.   BS_RADIOBUTTON     = $00000004;
  3364.   {$EXTERNALSYM BS_RADIOBUTTON}
  3365.   BS_3STATE          = $00000005;
  3366.   {$EXTERNALSYM BS_3STATE}
  3367.   BS_AUTO3STATE      = $00000006;
  3368.   {$EXTERNALSYM BS_AUTO3STATE}
  3369.   BS_GROUPBOX        = $00000007;
  3370.   {$EXTERNALSYM BS_GROUPBOX}
  3371.   BS_USERBUTTON      = $00000008;
  3372.   {$EXTERNALSYM BS_USERBUTTON}
  3373.   BS_AUTORADIOBUTTON = $00000009;
  3374.   {$EXTERNALSYM BS_AUTORADIOBUTTON}
  3375.   BS_PUSHBOX         = $0000000A;
  3376.   {$EXTERNALSYM BS_PUSHBOX}
  3377.   BS_OWNERDRAW       = $0000000B;
  3378.   {$EXTERNALSYM BS_OWNERDRAW}
  3379.   BS_TYPEMASK        = $0000000F;
  3380.   {$EXTERNALSYM BS_TYPEMASK}
  3381.   BS_LEFTTEXT        = $00000020;
  3382.   {$EXTERNALSYM BS_LEFTTEXT}
  3383.   BS_TEXT            = $00000000;
  3384.   {$EXTERNALSYM BS_TEXT}
  3385.   BS_ICON            = $00000040;
  3386.   {$EXTERNALSYM BS_ICON}
  3387.   BS_BITMAP          = $00000080;
  3388.   {$EXTERNALSYM BS_BITMAP}
  3389.   BS_LEFT            = $00000100;
  3390.   {$EXTERNALSYM BS_LEFT}
  3391.   BS_RIGHT           = $00000200;
  3392.   {$EXTERNALSYM BS_RIGHT}
  3393.   BS_CENTER          = $00000300;
  3394.   {$EXTERNALSYM BS_CENTER}
  3395.   BS_TOP             = $00000400;
  3396.   {$EXTERNALSYM BS_TOP}
  3397.   BS_BOTTOM          = $00000800;
  3398.   {$EXTERNALSYM BS_BOTTOM}
  3399.   BS_VCENTER         = $00000C00;
  3400.   {$EXTERNALSYM BS_VCENTER}
  3401.   BS_PUSHLIKE        = $00001000;
  3402.   {$EXTERNALSYM BS_PUSHLIKE}
  3403.   BS_MULTILINE       = $00002000;
  3404.   {$EXTERNALSYM BS_MULTILINE}
  3405.   BS_NOTIFY          = $00004000;
  3406.   {$EXTERNALSYM BS_NOTIFY}
  3407.   BS_FLAT            = $00008000;
  3408.   {$EXTERNALSYM BS_FLAT}
  3409.   BS_RIGHTBUTTON     = BS_LEFTTEXT;
  3410.   {$EXTERNALSYM BS_RIGHTBUTTON}
  3411. //
  3412. // User Button Notification Codes
  3413. //
  3414.   BN_CLICKED       = 0;
  3415.   {$EXTERNALSYM BN_CLICKED}
  3416.   BN_PAINT         = 1;
  3417.   {$EXTERNALSYM BN_PAINT}
  3418.   BN_HILITE        = 2;
  3419.   {$EXTERNALSYM BN_HILITE}
  3420.   BN_UNHILITE      = 3;
  3421.   {$EXTERNALSYM BN_UNHILITE}
  3422.   BN_DISABLE       = 4;
  3423.   {$EXTERNALSYM BN_DISABLE}
  3424.   BN_DOUBLECLICKED = 5;
  3425.   {$EXTERNALSYM BN_DOUBLECLICKED}
  3426.   BN_PUSHED        = BN_HILITE;
  3427.   {$EXTERNALSYM BN_PUSHED}
  3428.   BN_UNPUSHED      = BN_UNHILITE;
  3429.   {$EXTERNALSYM BN_UNPUSHED}
  3430.   BN_DBLCLK        = BN_DOUBLECLICKED;
  3431.   {$EXTERNALSYM BN_DBLCLK}
  3432.   BN_SETFOCUS      = 6;
  3433.   {$EXTERNALSYM BN_SETFOCUS}
  3434.   BN_KILLFOCUS     = 7;
  3435.   {$EXTERNALSYM BN_KILLFOCUS}
  3436. //
  3437. // Button Control Messages
  3438. //
  3439.   BM_GETCHECK = $00F0;
  3440.   {$EXTERNALSYM BM_GETCHECK}
  3441.   BM_SETCHECK = $00F1;
  3442.   {$EXTERNALSYM BM_SETCHECK}
  3443.   BM_GETSTATE = $00F2;
  3444.   {$EXTERNALSYM BM_GETSTATE}
  3445.   BM_SETSTATE = $00F3;
  3446.   {$EXTERNALSYM BM_SETSTATE}
  3447.   BM_SETSTYLE = $00F4;
  3448.   {$EXTERNALSYM BM_SETSTYLE}
  3449.   BM_CLICK    = $00F5;
  3450.   {$EXTERNALSYM BM_CLICK}
  3451.   BM_GETIMAGE = $00F6;
  3452.   {$EXTERNALSYM BM_GETIMAGE}
  3453.   BM_SETIMAGE = $00F7;
  3454.   {$EXTERNALSYM BM_SETIMAGE}
  3455.   BST_UNCHECKED     = $0000;
  3456.   {$EXTERNALSYM BST_UNCHECKED}
  3457.   BST_CHECKED       = $0001;
  3458.   {$EXTERNALSYM BST_CHECKED}
  3459.   BST_INDETERMINATE = $0002;
  3460.   {$EXTERNALSYM BST_INDETERMINATE}
  3461.   BST_PUSHED        = $0004;
  3462.   {$EXTERNALSYM BST_PUSHED}
  3463.   BST_FOCUS         = $0008;
  3464.   {$EXTERNALSYM BST_FOCUS}
  3465. //
  3466. // Static Control Constants
  3467. //
  3468.   SS_LEFT           = $00000000;
  3469.   {$EXTERNALSYM SS_LEFT}
  3470.   SS_CENTER         = $00000001;
  3471.   {$EXTERNALSYM SS_CENTER}
  3472.   SS_RIGHT          = $00000002;
  3473.   {$EXTERNALSYM SS_RIGHT}
  3474.   SS_ICON           = $00000003;
  3475.   {$EXTERNALSYM SS_ICON}
  3476.   SS_BLACKRECT      = $00000004;
  3477.   {$EXTERNALSYM SS_BLACKRECT}
  3478.   SS_GRAYRECT       = $00000005;
  3479.   {$EXTERNALSYM SS_GRAYRECT}
  3480.   SS_WHITERECT      = $00000006;
  3481.   {$EXTERNALSYM SS_WHITERECT}
  3482.   SS_BLACKFRAME     = $00000007;
  3483.   {$EXTERNALSYM SS_BLACKFRAME}
  3484.   SS_GRAYFRAME      = $00000008;
  3485.   {$EXTERNALSYM SS_GRAYFRAME}
  3486.   SS_WHITEFRAME     = $00000009;
  3487.   {$EXTERNALSYM SS_WHITEFRAME}
  3488.   SS_USERITEM       = $0000000A;
  3489.   {$EXTERNALSYM SS_USERITEM}
  3490.   SS_SIMPLE         = $0000000B;
  3491.   {$EXTERNALSYM SS_SIMPLE}
  3492.   SS_LEFTNOWORDWRAP = $0000000C;
  3493.   {$EXTERNALSYM SS_LEFTNOWORDWRAP}
  3494.   SS_OWNERDRAW      = $0000000D;
  3495.   {$EXTERNALSYM SS_OWNERDRAW}
  3496.   SS_BITMAP         = $0000000E;
  3497.   {$EXTERNALSYM SS_BITMAP}
  3498.   SS_ENHMETAFILE    = $0000000F;
  3499.   {$EXTERNALSYM SS_ENHMETAFILE}
  3500.   SS_ETCHEDHORZ     = $00000010;
  3501.   {$EXTERNALSYM SS_ETCHEDHORZ}
  3502.   SS_ETCHEDVERT     = $00000011;
  3503.   {$EXTERNALSYM SS_ETCHEDVERT}
  3504.   SS_ETCHEDFRAME    = $00000012;
  3505.   {$EXTERNALSYM SS_ETCHEDFRAME}
  3506.   SS_TYPEMASK       = $0000001F;
  3507.   {$EXTERNALSYM SS_TYPEMASK}
  3508.   SS_REALSIZECONTROL = $00000040;
  3509.   {$EXTERNALSYM SS_REALSIZECONTROL}
  3510.   SS_NOPREFIX       = $00000080; // Don't do "&" character translation
  3511.   {$EXTERNALSYM SS_NOPREFIX}
  3512.   SS_NOTIFY         = $00000100;
  3513.   {$EXTERNALSYM SS_NOTIFY}
  3514.   SS_CENTERIMAGE    = $00000200;
  3515.   {$EXTERNALSYM SS_CENTERIMAGE}
  3516.   SS_RIGHTJUST      = $00000400;
  3517.   {$EXTERNALSYM SS_RIGHTJUST}
  3518.   SS_REALSIZEIMAGE  = $00000800;
  3519.   {$EXTERNALSYM SS_REALSIZEIMAGE}
  3520.   SS_SUNKEN         = $00001000;
  3521.   {$EXTERNALSYM SS_SUNKEN}
  3522.   SS_EDITCONTROL    = $00002000;
  3523.   {$EXTERNALSYM SS_EDITCONTROL}
  3524.   SS_ENDELLIPSIS    = $00004000;
  3525.   {$EXTERNALSYM SS_ENDELLIPSIS}
  3526.   SS_PATHELLIPSIS   = $00008000;
  3527.   {$EXTERNALSYM SS_PATHELLIPSIS}
  3528.   SS_WORDELLIPSIS   = $0000C000;
  3529.   {$EXTERNALSYM SS_WORDELLIPSIS}
  3530.   SS_ELLIPSISMASK   = $0000C000;
  3531.   {$EXTERNALSYM SS_ELLIPSISMASK}
  3532. //
  3533. // Static Control Mesages
  3534. //
  3535.   STM_SETICON  = $0170;
  3536.   {$EXTERNALSYM STM_SETICON}
  3537.   STM_GETICON  = $0171;
  3538.   {$EXTERNALSYM STM_GETICON}
  3539.   STM_SETIMAGE = $0172;
  3540.   {$EXTERNALSYM STM_SETIMAGE}
  3541.   STM_GETIMAGE = $0173;
  3542.   {$EXTERNALSYM STM_GETIMAGE}
  3543.   STN_CLICKED  = 0;
  3544.   {$EXTERNALSYM STN_CLICKED}
  3545.   STN_DBLCLK   = 1;
  3546.   {$EXTERNALSYM STN_DBLCLK}
  3547.   STN_ENABLE   = 2;
  3548.   {$EXTERNALSYM STN_ENABLE}
  3549.   STN_DISABLE  = 3;
  3550.   {$EXTERNALSYM STN_DISABLE}
  3551.   STM_MSGMAX   = $0174;
  3552.   {$EXTERNALSYM STM_MSGMAX}
  3553. //
  3554. // Dialog window class
  3555. //
  3556.   WC_DIALOG = (MAKEINTATOM($8002));
  3557.   {$EXTERNALSYM WC_DIALOG}
  3558. //
  3559. // Get/SetWindowWord/Long offsets for use with WC_DIALOG windows
  3560. //
  3561.   DWL_MSGRESULT = 0;
  3562.   {$EXTERNALSYM DWL_MSGRESULT}
  3563.   DWL_DLGPROC   = 4;
  3564.   {$EXTERNALSYM DWL_DLGPROC}
  3565.   DWL_USER      = 8;
  3566.   {$EXTERNALSYM DWL_USER}
  3567.   DWLP_MSGRESULT = 0;
  3568.   {$EXTERNALSYM DWLP_MSGRESULT}
  3569.   DWLP_DLGPROC   = DWLP_MSGRESULT + SizeOf(LRESULT);
  3570.   {$EXTERNALSYM DWLP_DLGPROC}
  3571.   DWLP_USER      = DWLP_DLGPROC + SizeOf(DLGPROC);
  3572.   {$EXTERNALSYM DWLP_USER}
  3573. //
  3574. // Dialog Manager Routines
  3575. //
  3576. function IsDialogMessageA(hDlg: HWND; const lpMsg: MSG): BOOL; stdcall;
  3577. {$EXTERNALSYM IsDialogMessageA}
  3578. function IsDialogMessageW(hDlg: HWND; const lpMsg: MSG): BOOL; stdcall;
  3579. {$EXTERNALSYM IsDialogMessageW}
  3580. {$IFDEF UNICODE}
  3581. function IsDialogMessage(hDlg: HWND; const lpMsg: MSG): BOOL; stdcall;
  3582. {$EXTERNALSYM IsDialogMessage}
  3583. {$ELSE}
  3584. function IsDialogMessage(hDlg: HWND; const lpMsg: MSG): BOOL; stdcall;
  3585. {$EXTERNALSYM IsDialogMessage}
  3586. {$ENDIF}
  3587. function MapDialogRect(hDlg: HWND; var lpRect: RECT): BOOL; stdcall;
  3588. {$EXTERNALSYM MapDialogRect}
  3589. function DlgDirListA(hDlg: HWND; lpPathSpec: LPSTR; nIDListBox: Integer;
  3590.   nIDStaticPath: Integer; uFileType: UINT): Integer; stdcall;
  3591. {$EXTERNALSYM DlgDirListA}
  3592. function DlgDirListW(hDlg: HWND; lpPathSpec: LPWSTR; nIDListBox: Integer;
  3593.   nIDStaticPath: Integer; uFileType: UINT): Integer; stdcall;
  3594. {$EXTERNALSYM DlgDirListW}
  3595. {$IFDEF UNICODE}
  3596. function DlgDirList(hDlg: HWND; lpPathSpec: LPWSTR; nIDListBox: Integer;
  3597.   nIDStaticPath: Integer; uFileType: UINT): Integer; stdcall;
  3598. {$EXTERNALSYM DlgDirList}
  3599. {$ELSE}
  3600. function DlgDirList(hDlg: HWND; lpPathSpec: LPSTR; nIDListBox: Integer;
  3601.   nIDStaticPath: Integer; uFileType: UINT): Integer; stdcall;
  3602. {$EXTERNALSYM DlgDirList}
  3603. {$ENDIF}
  3604. //
  3605. // DlgDirList, DlgDirListComboBox flags values
  3606. //
  3607. const
  3608.   DDL_READWRITE = $0000;
  3609.   {$EXTERNALSYM DDL_READWRITE}
  3610.   DDL_READONLY  = $0001;
  3611.   {$EXTERNALSYM DDL_READONLY}
  3612.   DDL_HIDDEN    = $0002;
  3613.   {$EXTERNALSYM DDL_HIDDEN}
  3614.   DDL_SYSTEM    = $0004;
  3615.   {$EXTERNALSYM DDL_SYSTEM}
  3616.   DDL_DIRECTORY = $0010;
  3617.   {$EXTERNALSYM DDL_DIRECTORY}
  3618.   DDL_ARCHIVE   = $0020;
  3619.   {$EXTERNALSYM DDL_ARCHIVE}
  3620.   DDL_POSTMSGS  = $2000;
  3621.   {$EXTERNALSYM DDL_POSTMSGS}
  3622.   DDL_DRIVES    = $4000;
  3623.   {$EXTERNALSYM DDL_DRIVES}
  3624.   DDL_EXCLUSIVE = $8000;
  3625.   {$EXTERNALSYM DDL_EXCLUSIVE}
  3626. function DlgDirSelectExA(hDlg: HWND; lpString: LPSTR; nCount, nIDListBox: Integer): BOOL; stdcall;
  3627. {$EXTERNALSYM DlgDirSelectExA}
  3628. function DlgDirSelectExW(hDlg: HWND; lpString: LPWSTR; nCount, nIDListBox: Integer): BOOL; stdcall;
  3629. {$EXTERNALSYM DlgDirSelectExW}
  3630. {$IFDEF UNICODE}
  3631. function DlgDirSelectEx(hDlg: HWND; lpString: LPWSTR; nCount, nIDListBox: Integer): BOOL; stdcall;
  3632. {$EXTERNALSYM DlgDirSelectEx}
  3633. {$ELSE}
  3634. function DlgDirSelectEx(hDlg: HWND; lpString: LPSTR; nCount, nIDListBox: Integer): BOOL; stdcall;
  3635. {$EXTERNALSYM DlgDirSelectEx}
  3636. {$ENDIF}
  3637. function DlgDirListComboBoxA(hDlg: HWND; lpPathSpec: LPSTR; nIDComboBox: Integer;
  3638.   nIDStaticPath: Integer; uFiletype: UINT): Integer; stdcall;
  3639. {$EXTERNALSYM DlgDirListComboBoxA}
  3640. function DlgDirListComboBoxW(hDlg: HWND; lpPathSpec: LPWSTR; nIDComboBox: Integer;
  3641.   nIDStaticPath: Integer; uFiletype: UINT): Integer; stdcall;
  3642. {$EXTERNALSYM DlgDirListComboBoxW}
  3643. {$IFDEF UNICODE}
  3644. function DlgDirListComboBox(hDlg: HWND; lpPathSpec: LPWSTR; nIDComboBox: Integer;
  3645.   nIDStaticPath: Integer; uFiletype: UINT): Integer; stdcall;
  3646. {$EXTERNALSYM DlgDirListComboBox}
  3647. {$ELSE}
  3648. function DlgDirListComboBox(hDlg: HWND; lpPathSpec: LPSTR; nIDComboBox: Integer;
  3649.   nIDStaticPath: Integer; uFiletype: UINT): Integer; stdcall;
  3650. {$EXTERNALSYM DlgDirListComboBox}
  3651. {$ENDIF}
  3652. function DlgDirSelectComboBoxExA(hDlg: HWND; lpString: LPSTR; nCount: Integer;
  3653.   nIDComboBox: Integer): BOOL; stdcall;
  3654. {$EXTERNALSYM DlgDirSelectComboBoxExA}
  3655. function DlgDirSelectComboBoxExW(hDlg: HWND; lpString: LPWSTR; nCount: Integer;
  3656.   nIDComboBox: Integer): BOOL; stdcall;
  3657. {$EXTERNALSYM DlgDirSelectComboBoxExW}
  3658. {$IFDEF UNICODE}
  3659. function DlgDirSelectComboBoxEx(hDlg: HWND; lpString: LPWSTR; nCount: Integer;
  3660.   nIDComboBox: Integer): BOOL; stdcall;
  3661. {$EXTERNALSYM DlgDirSelectComboBoxEx}
  3662. {$ELSE}
  3663. function DlgDirSelectComboBoxEx(hDlg: HWND; lpString: LPSTR; nCount: Integer;
  3664.   nIDComboBox: Integer): BOOL; stdcall;
  3665. {$EXTERNALSYM DlgDirSelectComboBoxEx}
  3666. {$ENDIF}
  3667. //
  3668. // Dialog Styles
  3669. //
  3670. const
  3671.   DS_ABSALIGN      = $01;
  3672.   {$EXTERNALSYM DS_ABSALIGN}
  3673.   DS_SYSMODAL      = $02;
  3674.   {$EXTERNALSYM DS_SYSMODAL}
  3675.   DS_LOCALEDIT     = $20; // Edit items get Local storage.
  3676.   {$EXTERNALSYM DS_LOCALEDIT}
  3677.   DS_SETFONT       = $40; // User specified font for Dlg controls
  3678.   {$EXTERNALSYM DS_SETFONT}
  3679.   DS_MODALFRAME    = $80; // Can be combined with WS_CAPTION
  3680.   {$EXTERNALSYM DS_MODALFRAME}
  3681.   DS_NOIDLEMSG     = $100; // WM_ENTERIDLE message will not be sent
  3682.   {$EXTERNALSYM DS_NOIDLEMSG}
  3683.   DS_SETFOREGROUND = $200; // not in win3.1
  3684.   {$EXTERNALSYM DS_SETFOREGROUND}
  3685.   DS_3DLOOK       = $0004;
  3686.   {$EXTERNALSYM DS_3DLOOK}
  3687.   DS_FIXEDSYS     = $0008;
  3688.   {$EXTERNALSYM DS_FIXEDSYS}
  3689.   DS_NOFAILCREATE = $0010;
  3690.   {$EXTERNALSYM DS_NOFAILCREATE}
  3691.   DS_CONTROL      = $0400;
  3692.   {$EXTERNALSYM DS_CONTROL}
  3693.   DS_CENTER       = $0800;
  3694.   {$EXTERNALSYM DS_CENTER}
  3695.   DS_CENTERMOUSE  = $1000;
  3696.   {$EXTERNALSYM DS_CENTERMOUSE}
  3697.   DS_CONTEXTHELP  = $2000;
  3698.   {$EXTERNALSYM DS_CONTEXTHELP}
  3699.   DS_SHELLFONT = (DS_SETFONT or DS_FIXEDSYS);
  3700.   {$EXTERNALSYM DS_SHELLFONT}
  3701. //#if(_WIN32_WCE >= 0x0500)
  3702.   DS_USEPIXELS = $8000;
  3703.   {$EXTERNALSYM DS_USEPIXELS}
  3704. //#endif
  3705.   DM_GETDEFID = (WM_USER+0);
  3706.   {$EXTERNALSYM DM_GETDEFID}
  3707.   DM_SETDEFID = (WM_USER+1);
  3708.   {$EXTERNALSYM DM_SETDEFID}
  3709.   DM_REPOSITION = (WM_USER+2);
  3710.   {$EXTERNALSYM DM_REPOSITION}
  3711. //
  3712. // Returned in HIWORD() of DM_GETDEFID result if msg is supported
  3713. //
  3714.   DC_HASDEFID = $534B;
  3715.   {$EXTERNALSYM DC_HASDEFID}
  3716. //
  3717. // Dialog Codes
  3718. //
  3719.   DLGC_WANTARROWS      = $0001; // Control wants arrow keys
  3720.   {$EXTERNALSYM DLGC_WANTARROWS}
  3721.   DLGC_WANTTAB         = $0002; // Control wants tab keys
  3722.   {$EXTERNALSYM DLGC_WANTTAB}
  3723.   DLGC_WANTALLKEYS     = $0004; // Control wants all keys
  3724.   {$EXTERNALSYM DLGC_WANTALLKEYS}
  3725.   DLGC_WANTMESSAGE     = $0004; // Pass message to control
  3726.   {$EXTERNALSYM DLGC_WANTMESSAGE}
  3727.   DLGC_HASSETSEL       = $0008; // Understands EM_SETSEL message
  3728.   {$EXTERNALSYM DLGC_HASSETSEL}
  3729.   DLGC_DEFPUSHBUTTON   = $0010; // Default pushbutton
  3730.   {$EXTERNALSYM DLGC_DEFPUSHBUTTON}
  3731.   DLGC_UNDEFPUSHBUTTON = $0020; // Non-default pushbutton
  3732.   {$EXTERNALSYM DLGC_UNDEFPUSHBUTTON}
  3733.   DLGC_RADIOBUTTON     = $0040; // Radio button
  3734.   {$EXTERNALSYM DLGC_RADIOBUTTON}
  3735.   DLGC_WANTCHARS       = $0080; // Want WM_CHAR messages
  3736.   {$EXTERNALSYM DLGC_WANTCHARS}
  3737.   DLGC_STATIC          = $0100; // Static item: don't include
  3738.   {$EXTERNALSYM DLGC_STATIC}
  3739.   DLGC_BUTTON          = $2000; // Button item: can be checked
  3740.   {$EXTERNALSYM DLGC_BUTTON}
  3741.   LB_CTLCODE = 0;
  3742.   {$EXTERNALSYM LB_CTLCODE}
  3743. //
  3744. // Listbox Return Values
  3745. //
  3746.   LB_OKAY     = 0;
  3747.   {$EXTERNALSYM LB_OKAY}
  3748.   LB_ERR      = DWORD(-1);
  3749.   {$EXTERNALSYM LB_ERR}
  3750.   LB_ERRSPACE = DWORD(-2);
  3751.   {$EXTERNALSYM LB_ERRSPACE}
  3752. //
  3753. //  The idStaticPath parameter to DlgDirList can have the following values
  3754. //  ORed if the list box should show other details of the files along with
  3755. //  the name of the files;
  3756. //
  3757. // all other details also will be returned
  3758. //
  3759. // Listbox Notification Codes
  3760. //
  3761.   LBN_ERRSPACE  = DWORD(-2);
  3762.   {$EXTERNALSYM LBN_ERRSPACE}
  3763.   LBN_SELCHANGE = 1;
  3764.   {$EXTERNALSYM LBN_SELCHANGE}
  3765.   LBN_DBLCLK    = 2;
  3766.   {$EXTERNALSYM LBN_DBLCLK}
  3767.   LBN_SELCANCEL = 3;
  3768.   {$EXTERNALSYM LBN_SELCANCEL}
  3769.   LBN_SETFOCUS  = 4;
  3770.   {$EXTERNALSYM LBN_SETFOCUS}
  3771.   LBN_KILLFOCUS = 5;
  3772.   {$EXTERNALSYM LBN_KILLFOCUS}
  3773. //
  3774. // Listbox messages
  3775. //
  3776.   LB_ADDSTRING           = $0180;
  3777.   {$EXTERNALSYM LB_ADDSTRING}
  3778.   LB_INSERTSTRING        = $0181;
  3779.   {$EXTERNALSYM LB_INSERTSTRING}
  3780.   LB_DELETESTRING        = $0182;
  3781.   {$EXTERNALSYM LB_DELETESTRING}
  3782.   LB_SELITEMRANGEEX      = $0183;
  3783.   {$EXTERNALSYM LB_SELITEMRANGEEX}
  3784.   LB_RESETCONTENT        = $0184;
  3785.   {$EXTERNALSYM LB_RESETCONTENT}
  3786.   LB_SETSEL              = $0185;
  3787.   {$EXTERNALSYM LB_SETSEL}
  3788.   LB_SETCURSEL           = $0186;
  3789.   {$EXTERNALSYM LB_SETCURSEL}
  3790.   LB_GETSEL              = $0187;
  3791.   {$EXTERNALSYM LB_GETSEL}
  3792.   LB_GETCURSEL           = $0188;
  3793.   {$EXTERNALSYM LB_GETCURSEL}
  3794.   LB_GETTEXT             = $0189;
  3795.   {$EXTERNALSYM LB_GETTEXT}
  3796.   LB_GETTEXTLEN          = $018A;
  3797.   {$EXTERNALSYM LB_GETTEXTLEN}
  3798.   LB_GETCOUNT            = $018B;
  3799.   {$EXTERNALSYM LB_GETCOUNT}
  3800.   LB_SELECTSTRING        = $018C;
  3801.   {$EXTERNALSYM LB_SELECTSTRING}
  3802.   LB_DIR                 = $018D;
  3803.   {$EXTERNALSYM LB_DIR}
  3804.   LB_GETTOPINDEX         = $018E;
  3805.   {$EXTERNALSYM LB_GETTOPINDEX}
  3806.   LB_FINDSTRING          = $018F;
  3807.   {$EXTERNALSYM LB_FINDSTRING}
  3808.   LB_GETSELCOUNT         = $0190;
  3809.   {$EXTERNALSYM LB_GETSELCOUNT}
  3810.   LB_GETSELITEMS         = $0191;
  3811.   {$EXTERNALSYM LB_GETSELITEMS}
  3812.   LB_SETTABSTOPS         = $0192;
  3813.   {$EXTERNALSYM LB_SETTABSTOPS}
  3814.   LB_GETHORIZONTALEXTENT = $0193;
  3815.   {$EXTERNALSYM LB_GETHORIZONTALEXTENT}
  3816.   LB_SETHORIZONTALEXTENT = $0194;
  3817.   {$EXTERNALSYM LB_SETHORIZONTALEXTENT}
  3818.   LB_SETCOLUMNWIDTH      = $0195;
  3819.   {$EXTERNALSYM LB_SETCOLUMNWIDTH}
  3820.   LB_ADDFILE             = $0196;
  3821.   {$EXTERNALSYM LB_ADDFILE}
  3822.   LB_SETTOPINDEX         = $0197;
  3823.   {$EXTERNALSYM LB_SETTOPINDEX}
  3824.   LB_GETITEMRECT         = $0198;
  3825.   {$EXTERNALSYM LB_GETITEMRECT}
  3826.   LB_GETITEMDATA         = $0199;
  3827.   {$EXTERNALSYM LB_GETITEMDATA}
  3828.   LB_SETITEMDATA         = $019A;
  3829.   {$EXTERNALSYM LB_SETITEMDATA}
  3830.   LB_SELITEMRANGE        = $019B;
  3831.   {$EXTERNALSYM LB_SELITEMRANGE}
  3832.   LB_SETANCHORINDEX      = $019C;
  3833.   {$EXTERNALSYM LB_SETANCHORINDEX}
  3834.   LB_GETANCHORINDEX      = $019D;
  3835.   {$EXTERNALSYM LB_GETANCHORINDEX}
  3836.   LB_SETCARETINDEX       = $019E;
  3837.   {$EXTERNALSYM LB_SETCARETINDEX}
  3838.   LB_GETCARETINDEX       = $019F;
  3839.   {$EXTERNALSYM LB_GETCARETINDEX}
  3840.   LB_SETITEMHEIGHT       = $01A0;
  3841.   {$EXTERNALSYM LB_SETITEMHEIGHT}
  3842.   LB_GETITEMHEIGHT       = $01A1;
  3843.   {$EXTERNALSYM LB_GETITEMHEIGHT}
  3844.   LB_FINDSTRINGEXACT     = $01A2;
  3845.   {$EXTERNALSYM LB_FINDSTRINGEXACT}
  3846.   LB_SETLOCALE           = $01A5;
  3847.   {$EXTERNALSYM LB_SETLOCALE}
  3848.   LB_GETLOCALE           = $01A6;
  3849.   {$EXTERNALSYM LB_GETLOCALE}
  3850.   LB_SETCOUNT            = $01A7;
  3851.   {$EXTERNALSYM LB_SETCOUNT}
  3852.   LB_INITSTORAGE   = $01A8;
  3853.   {$EXTERNALSYM LB_INITSTORAGE}
  3854.   LB_ITEMFROMPOINT = $01A9;
  3855.   {$EXTERNALSYM LB_ITEMFROMPOINT}
  3856.   LB_MULTIPLEADDSTRING = $01B1;
  3857.   {$EXTERNALSYM LB_MULTIPLEADDSTRING}
  3858.   LB_GETLISTBOXINFO    = $01B2;
  3859.   {$EXTERNALSYM LB_GETLISTBOXINFO}
  3860. {$IFDEF WINVER_0400_GREATER}
  3861.   LB_MSGMAX = $01B3;
  3862.   {$EXTERNALSYM LB_MSGMAX}
  3863. {$ELSE}
  3864. {$IFDEF WINVER_0400_GREATER}
  3865.   LB_MSGMAX = $01B0;
  3866.   {$EXTERNALSYM LB_MSGMAX}
  3867. {$ELSE}
  3868.   LB_MSGMAX = $01A8;
  3869.   {$EXTERNALSYM LB_MSGMAX}
  3870. {$ENDIF}
  3871. {$ENDIF}
  3872. //
  3873. // Listbox Styles
  3874. //
  3875.   LBS_NOTIFY            = $0001;
  3876.   {$EXTERNALSYM LBS_NOTIFY}
  3877.   LBS_SORT              = $0002;
  3878.   {$EXTERNALSYM LBS_SORT}
  3879.   LBS_NOREDRAW          = $0004;
  3880.   {$EXTERNALSYM LBS_NOREDRAW}
  3881.   LBS_MULTIPLESEL       = $0008;
  3882.   {$EXTERNALSYM LBS_MULTIPLESEL}
  3883.   LBS_OWNERDRAWFIXED    = $0010;
  3884.   {$EXTERNALSYM LBS_OWNERDRAWFIXED}
  3885.   LBS_OWNERDRAWVARIABLE = $0020;
  3886.   {$EXTERNALSYM LBS_OWNERDRAWVARIABLE}
  3887.   LBS_HASSTRINGS        = $0040;
  3888.   {$EXTERNALSYM LBS_HASSTRINGS}
  3889.   LBS_USETABSTOPS       = $0080;
  3890.   {$EXTERNALSYM LBS_USETABSTOPS}
  3891.   LBS_NOINTEGRALHEIGHT  = $0100;
  3892.   {$EXTERNALSYM LBS_NOINTEGRALHEIGHT}
  3893.   LBS_MULTICOLUMN       = $0200;
  3894.   {$EXTERNALSYM LBS_MULTICOLUMN}
  3895.   LBS_WANTKEYBOARDINPUT = $0400;
  3896.   {$EXTERNALSYM LBS_WANTKEYBOARDINPUT}
  3897.   LBS_EXTENDEDSEL       = $0800;
  3898.   {$EXTERNALSYM LBS_EXTENDEDSEL}
  3899.   LBS_DISABLENOSCROLL   = $1000;
  3900.   {$EXTERNALSYM LBS_DISABLENOSCROLL}
  3901.   LBS_NODATA            = $2000;
  3902.   {$EXTERNALSYM LBS_NODATA}
  3903.   LBS_NOSEL             = $4000;
  3904.   {$EXTERNALSYM LBS_NOSEL}
  3905.   LBS_COMBOBOX          = $8000;
  3906.   {$EXTERNALSYM LBS_COMBOBOX}
  3907.   
  3908.   LBS_STANDARD          = (LBS_NOTIFY or LBS_SORT or WS_VSCROLL or WS_BORDER);
  3909.   {$EXTERNALSYM LBS_STANDARD}
  3910. //
  3911. // Combo Box return Values
  3912. //
  3913.   CB_OKAY     = 0;
  3914.   {$EXTERNALSYM CB_OKAY}
  3915.   CB_ERR      = DWORD(-1);
  3916.   {$EXTERNALSYM CB_ERR}
  3917.   CB_ERRSPACE = DWORD(-2);
  3918.   {$EXTERNALSYM CB_ERRSPACE}
  3919. //
  3920. // Combo Box Notification Codes
  3921. //
  3922.   CBN_ERRSPACE     = DWORD(-1);
  3923.   {$EXTERNALSYM CBN_ERRSPACE}
  3924.   CBN_SELCHANGE    = 1;
  3925.   {$EXTERNALSYM CBN_SELCHANGE}
  3926.   CBN_DBLCLK       = 2;
  3927.   {$EXTERNALSYM CBN_DBLCLK}
  3928.   CBN_SETFOCUS     = 3;
  3929.   {$EXTERNALSYM CBN_SETFOCUS}
  3930.   CBN_KILLFOCUS    = 4;
  3931.   {$EXTERNALSYM CBN_KILLFOCUS}
  3932.   CBN_EDITCHANGE   = 5;
  3933.   {$EXTERNALSYM CBN_EDITCHANGE}
  3934.   CBN_EDITUPDATE   = 6;
  3935.   {$EXTERNALSYM CBN_EDITUPDATE}
  3936.   CBN_DROPDOWN     = 7;
  3937.   {$EXTERNALSYM CBN_DROPDOWN}
  3938.   CBN_CLOSEUP      = 8;
  3939.   {$EXTERNALSYM CBN_CLOSEUP}
  3940.   CBN_SELENDOK     = 9;
  3941.   {$EXTERNALSYM CBN_SELENDOK}
  3942.   CBN_SELENDCANCEL = 10;
  3943.   {$EXTERNALSYM CBN_SELENDCANCEL}