-----------------------------------------------
                           GO TO VFP ADVANCED (X64)
                                 January 2017
                 -----------------------------------------------
                                    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 and LONG data types, they are 32-bit integer.

     In VFP Advanced (x64), for the HANDLE 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.

     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 and etc.,
     so we must use the third-party ActiveX controls 64-bit version or build the ActiveX controls 64-bit version ourself.