----------------------------------------------- GO TO VFP ADVANCED (X64) January 2024 ----------------------------------------------- CCB 1. The VFP Advanced (x64) Project. Usually, recommend to create the VFP Advanced (x64) project in another folder. For example, If we create the VFP Advanced 32-bit (or VFP 9.0) project in the folder C:\Myproject, we can create the VFP Advanced (x64) project in another folder C:\Myproject64. 2. The DECLARE Statements. In VFP 9.0 (and before), there is no difference for the INTEGER data type and the LONG data type, they are 32-bit integer. In VFP Advanced (x64), for the HANDLE data type and the size_t data type, recommend to use the LONG data type instead of the INTEGER data type. For example, BOOL WINAPI OpenProcessToken( _In_ HANDLE ProcessHandle, _In_ DWORD DesiredAccess, _Out_ PHANDLE TokenHandle ); Sometimes the following code can not run fine in VFP Advanced (x64): DECLARE INTEGER OpenProcessToken IN win32api ; INTEGER ProcessHandle,; INTEGER DesiredAccess,; INTEGER @TokenHandle Recommend to use the following code: DECLARE INTEGER OpenProcessToken IN win32api ; LONG ProcessHandle,; INTEGER DesiredAccess,; LONG @TokenHandle For more details for the DECLARE statement, please refer to the file tools\xcheckdeclare64\readme.txt. There is a good news, ALL DECLARED FUNCTIONS IN THE FOLLOWING DLLS CAN WORK FINE! =========================================================== KERNEL32.DLL 799 USER32.DLL 639 GDI32.DLL 371 WINSPOOL.DRV 196 COMDLG32.DLL 27 COMCTL32.DLL 100 ADVAPI32.DLL 608 SHELL32.DLL 232 SHLWAPI.DLL 310 IMM32.DLL 81 OLEDLG.DLL 21 OLEACC.DLL 15 URLMON.DLL 71 HLINK.DLL 28 MSVCR100.DLL 135 MSVCRT.DLL 729 VERSION.DLL 12 MPR.DLL 43 OLEAUT32.DLL 392 OLE32.DLL 327 WINMM.DLL 207 GDIPLUS.DLL 609 MAPI32.DLL 130 ODBC32.DLL 136 ODBCCP32.DLL 56 UXTHEME.DLL 48 WININET.DLL 226 WS2_32.DLL 116 NTDLL.DLL 1169 VFPA.EXE 3 VFPAR.DLL 11 VFPAT.DLL 11 CTL3D32.DLL 9 DWMAPI.DLL 30 MSSPELL.DLL 16 SCC.DLL 38 VBAME.DLL 11 VSPERF100.DLL 8 TOTAL 7970 FUNCTIONS. For the declared functions in the other dlls, we must do more to check the data type. 3. The SET LIBRARY TO Statements. 1, The Visual FoxPro Tools Library (foxtools.fll) Some functions such as RegFn32(), RegFn(), CallFn() are not supported, please use the DECLARE statement to do it. 2, The Visual FoxPro FoxDoc Support Library (fd3.fll) All functions are supported. 3, The Visual FoxPro Wizard Support Libary (wizard.fll) All functions are supported. 4, All functions in VFP C++ Compiler (x64) are supported. 5, All functions in VFPX64.fll and dFPUG64.fll are supported. 6, All functions in vfp2c64.fll are supported. 7, All functions in libhpdf64.dll and libpng1664.dll are supported. 8, All functions in zlib64.dll are supported. For the other VFP API libraries, if we have the C/C++ source code of the VFP API libraries, we can use the VFP Advanced (x64) Library Construction Kit to build the 64-bit VFP API libraries, this is the best way to build the 64-bit VFP API libraries. 4. The ActiveX Controls. There is no the MS Common Controls 64-bit version such as TreeView, ListView, DateTimePicker, etc., so we must use the third-party ActiveX controls 64-bit version, for example, the DBI ActiveX controls (https://www.dbi-tech.com), or build the ActiveX controls 64-bit version ourselves. |