KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q130085: Details of the .VCX File Architecture

Article: Q130085
Product(s): Microsoft FoxPro
Version(s): 3.00
Operating System(s): 
Keyword(s): 
Last Modified: 26-AUG-1999

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft Visual FoxPro for Windows, version 3.0 
-------------------------------------------------------------------------------

SUMMARY
=======

You can create classes in Visual FoxPro in a program or in the visual interface.
Using the Class Designer to create classes visually produces a table with a .VCX
extension. Although it is not necessary to understand the ways in which the .VCX
tables store metadata, many developers have reasons for wanting to read and
write to these tables. This article shows and explains the file architecture of
a .VCX table.

MORE INFORMATION
================

The VCX table contains information about the objects in classes.

Field Name  Type  Example            Definition
-------------------------------------------------------------------------
Platform    C(8)  WINDOWS            Associates a specific platform
                                    for an object. In single-platform
                                    tables, every object has one record
                                    per platform. Cross-platform objects
                                    have one record per platform with the
                                    same UniqueID and are distinguished by
                                    the Platform field. For records that
                                    do not relate to a specific class or
                                    object, the Platform field contains
                                    the string "COMMENT." The header
                                    record (record #1) has UniqueID =
                                    Class.

UniqueID    C(10) _ QYB0RAW20        Gives unique ID code for individual
                                    classes and objects. Related
                                    cross-platform records share the same
                                    UniqueID value. For records that do
                                    not relate to a specific class or
                                    object, the UniqueID field contains
                                    information that describes the type
                                    of record. The header record
                                    (record #1) has UniqueID = "Class."

TimeStamp   N(10) 495748740          Relates directly to the date and time
                                    the object symbols were created or
                                    last generated. The TimeStamp field
                                    for all records associated with a
                                    class are updated whenever the class
                                    is changed. For records that do not
                                    relate to a specific class or object,
                                    TimeStamp=0.

Class       Memo  mycommandbutton    Defines which class is used to create
                                    the subclass of the class or object
                                    member.

ClassLoc    Memo  tsbase.vcx         Gives relative path and filename of
                                    class defined in the Class field. If
                                    the Class field specifies a Visual
                                    FoxPro built-in base class or the
                                    Class name specified is located in the
                                    same VCX, then the ClassLoc field is
                                    empty.

BaseClass   Memo  commandbutton      Stores the name of the base class, or
                                    topmost parent class in the class tree
                                    hierarchy, of the class or object
                                    member.

ObjName     Memo  cmdCancel          Defines the name of the class or
                                    object member.

Parent      Memo  form1              References the immediate parent
                                    container object that the object is a
                                    member of. If an object member is not
                                    a child member of a container, the
                                    Parent field is empty.

Properties  Memo  Height=22          Lists properties and their set values
                 Width=69           that override the values defined in
                 FontSize=8         the parent class from which a class or
                 Caption="Cancel"   object member is derived.
                 Name="cmdcancel"

Protected   Memo  cAliasdUpdated     Lists all properties and methods that
                                    are marked as protected members for a
                                    class.

Methods     Memo  PROCEDURE Click    Contains all snippet code of a class
                 thisform.Release() or object member.
                 ENDPROC

ObjCode     Memo                     Stores the compiled p-code of source
                                    code stored in the Methods field.
                                    ObjCode is empty if the Methods field
                                    is empty.

Ole         Memo                     Stores binary information for OLE
                                    class and object members.

Ole2        Memo                     Stores binary information for OLE
                                    class and object members.

Reserved1   Memo  Class              Uses Class tag field to indicate the
                                    start of a class definition by storing
                                    the string "Class." If a record is not
                                    the start of a class definition, the
                                    Reserved1 field is empty.

Reserved2   Memo  2                  Stores the number of records
                                    associated with a class, including the
                                    class or container record. This field
                                    only contains a value for the first
                                    record of a class definition. If a
                                    class doesn't contain any object
                                    members, the Reserved2 field for the
                                    record that starts the class
                                    definition contains a 1. For records
                                    that are not the start of a class
                                    definition, the Reserved2 field is
                                    empty.

Reserved3   Memo  cAlias             Lists all user-defined member names of
                 nResultd           a class with the member description
                 Updated            separated by a single space character.
                 cMyProperty        One member is stored with its
                 ^aNames[5]         description per memo line. Standard
                 ^aMyArray[100]     property names are listed without a
                 *Print             preceding character, array properties
                 *SortNames         are preceded with a caret (^), and
                 *MyMethod          method names are preceded with an
                                    asterisk (*).

Reserved4   Memo  bmps\cancel.bmp    Stores the relative path and filename
                                    of the bitmap (.BMP) of a custom class
                                    icon.

Reserved5   Memo  bmps\cancel.bmp    Stores the relative path and filename
                                    of the bitmap (.BMP) for a custom
                                    Project Manager and Class Browser
                                    class icon.

Reserved6   Memo  Pixels             Stores scalemode (Pixels/Foxels) of a
                                    class or object.

Reserved7   Memo  This class         Stores a class description that can be
                 releases the       modified within the Class Info...
                 form               dialog of the Class Designer.

Reserved8   Memo  ..\vfp\FoxPro.h    Stores the relative path and filename
                                    of the #INCLUDE file for all snippets.

User        Memo                     Remains open for user-defined
                                    purposes.

REFERENCES
==========

Information in this article was obtained from "Visual FoxPro's VCX and SCX
Architectures" by Ken Levy in the March 1995 issue of FoxTalk.

Additional query words: structure architecture VFoxWin

======================================================================
Keywords          :  
Technology        : kbVFPsearch kbAudDeveloper kbVFP300
Version           : 3.00

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.