In Visual DataFlex 32-bit you can use any of the following versions:
/COM indicates the 32-bit edition of the ActiveX version
The application built using /COM version runs on any Windows 32 or 64-bit machine.
In Visual DataFlex 64-bit you can use any of the following versions:
/COM/64 indicates the 64-bit edition of the ActiveX version
The application built using /COM/64 version runs on Windows 64-bit machine only. The application built using /COM/64 version cannot run on Windows 32-bit machine.
If you want to use your application on 32 and 64-bit machines, you can go for:
/COM/ANY indicates the 32 and 64-bit editions of the ActiveX versions
The problem: using the component as isolated component, so it requires NO
registration/calling of regsvr32 on the client machine, no administration
privileges required, and so on
The solution: An isolated application is a process that uses side-by-side private COM (DLL/OCX) components that resides in the application folder and so is not available to any other application. To do this the isolated application must use an application manifest file that contains dependency information about each COM component used by the application. In an isolated application with private COM components, the components will not be replaced when another application installs or uninstalls the same COM components on the machine. This also eliminates versioning conflicts and means that you will not need to register the components with the system by e.g. using the regsvr32.exe program.
The problem: when using the component as isolated COM, the window is hidden
as soon as it lose the focus. Gaining the focus, makes the component to be
visible again.
The solution: It is a manifest problem. The object was not getting properly activated from a DataFlex point of view. The reason is that various flags that tell our runtime what kind of COM object this is, were missing. The fact that it works with a C# is not relevant as we are talking about different focus mechanisms. It worked in the registry because the registry had the right flag settings.
Specifically, there are these things called MiscStatus flags. The OLEMISC
type describes the values for the MiscStatus flags.
These flags are stored in the registry when the object is registered. You will see this under:
HKEY_CLASSES_ROOT\CLSID\{clsid}\ MiscStatus is 1, and it should be 131473.
This information needs to be in the manifest file, but it is not. This causes the problem.
The flags that should not be missing are: activatewhenvisible and
setclientsitefirst. The clsid is the class identifier for the main object in
the component, while typelibid is the identifier of the control's type
library.
For instance, the manifest file for exg2antt
component may look as follows:
Thanks to Support of Visual DataFlex and Bernhard Ponemayr, from Comtech IT Systeme, Austria, who provided
the note and help for syntax of Visual DataFlex programming language.