New items added 06/07/91 through the date of this file
Part 1
   Memory (corrected) 
Part 2
-------------------------------------------------------------------------

This file contains information about bugs, quirks, and general points
of interest to programmers working with Visual Basic. It is divided
into four parts:

  Part 1 - Description of bugs, quirks, etc.
           Note that the version column contains 1.00 for all entries,
	   but will be useful in the future.
  Part 2 - General points of interest
  Part 3 - Sample programs

If you want to find one of the above quickly, use your text editor to
search for the text shown above. i.e., Search for "Part 1 -".

All new or changed entries will be marked with the date
that the information was added or changed. The date will appear in the
entry in the format (yy/mm/dd).

This file is maintained by Mark Novisoff of MicroHelp, Inc. MicroHelp
publishes add-on products for Visual Basic, including VBTools, the
MicroHelp Communications Library and MicroHelp Muscle (Muscle will be released 
during the summer of 1991). MicroHelp also publishes a number of add-on
products for Microsoft QuickBASIC and PDS 7.x.

If you have additional information that should be added, please send it
to:
     Mark Novisoff
     MicroHelp, Inc.
     4636 Huntridge Drive
     Roswell GA 30075-2012
     Compuserve ID 73047,3706 in MSSYS (Microsoft Systems Forum)
     
If possible, please include a *small* sample program that will demonstrate
the problem and cause it to happen whenever the program is run.     

-------------------------------------------------------------------------
Part 1 - Description of bugs, quirks, etc.
-------------------------------------------------------------------------
Topic          Version         Description
-------------- --------------- --------------------------------------------
Beep           1.00            See KeyPress.
Hide           1.00            If you simply Hide a form when you're done
                               with it, the form consumes system "resources".
			       Because resources are limited, you may be
			       better off to Unload the form until it's
			       needed again.
KeyPress       1.00            If the user presses <Enter> while a Text Box
                               has the focus, and you don't have a Command
			       Button with the Default property set to TRUE,
			       Windows will cause a BEEP to occur. To avoid
			       the BEEP, change the KeyAscii parameter to
			       zero when it is passed to you as 13.
List Box       1.00            When a List Box has the focus, the up and
                               down arrow keys will generate a CtlName_Click 
			       event. 
ListIndex      1.00            Setting the ListIndex property of a List Box
                               causes a CtlName_Click event.
Memory         1.00            Each Form and each module gets its own 64K
			       segment to hold scalar variables
			       (i.e., variables that are not in arrays).
			       Each array is stored in its own segment,
			       with each array having a limit of just
			       under 64K.
			       All properties on a form, except for the
			       .Text properties in List Box controls (which
			       get a separate segment assigned to each one), 
			       go into a single 64K segment.
			       (Corrected 91/06/07)
Now            1.00            Now is a double-precision variable. If you
                               save it in a single-precision variable,
			       you may lose accuracy.
Picture        1.00            To delete a bitmap from a Picture property,
                               select the Picture property via the properties
			       bar, set the focus to the (bitmap) display
			       in the Combo Box, and press the Del key.
Text           1.00            When you are adding text to a Text Box
                               control, and you have many items to add
			       (such as lines from a text file), it is
			       more efficient to first concatenate all
			       the strings and then place them in the
			       control in a single operation. This also
			       eliminates the flickering that would
			       otherwise occur when adding many items.
Text Box       1.00            See KeyPress.
Unload         1.00            See Hide.
Unload         1.00            If a form is unloaded, accessing any 
                               property on the form causes the form
			       to be reloaded. This can result in an
			       "Out of memory" error.
			       
----------------------------------------------------------------------------
Part 2 - General points of interest
----------------------------------------------------------------------------
EXE File sizes

Every comment in a VB program takes 2 bytes of space in an .EXE file.
Every blank line in a VB program also takes 2 bytes of space in an .EXE.

If you load a project, then edit-make exe-edit-make exe, etc., your EXE
file size may increase each time. If you do this for a long period of
time, your EXE will be substantially larger than if you simply loaded the
project and immediately built the EXE.

To create the smallest possible EXE file:

   Load the project
   For I = 1 To All FormsAndModules
       Code-Save Text
       Code-Load Text (replacing existing code)
   Next
   Make the EXE
----------------------------------------------------------------------------
Handling Keystrokes

Every key on the keyboard generates a KeyCode. Special cases to note are:

  KeyUp/KeyDown/KeyPress events will be invoked for <Enter> only if no 
    Default command button exists on the form.
  
  KeyUp/KeyDown/KeyPress events will be invoked for <Esc> only if no 
    Escape command button exists on the form.

  KeyUp/KeyDown/KeyPress events will not be invoked for <Tab>.

  Use KeyDown to trap all non-ascii keys (i.e. the function keys, arrow
  keys, etc), or when the user wishes to differentiate the number-pad keys
  from the numeric-row keys.

  Use KeyDown and KeyUp in combination when your program needs to know how 
  long a key was depressed.
----------------------------------------------------------------------------
System Resources

There are a few things you can do to free up system resources:

  Run in Standard mode instead of 386Enhanced mode:
      This eliminates the overhead of windows virtual memory management.
      While it is faster, you'll have only the physical RAM available to 
      you.  However, if you have at least 8meg of RAM, you will probably
      not notice a difference in the number of apps you can run simultaneously
      because the resource limit is the same in both modes.

      Unless you run some memory intense program or run DOS apps in the 
      background, there really isn't any reason to run in 386Enh mode.

  Minimize the number of Program groups and icons within your Program manager:
      Every group and every Icon uses up system resouces. Keep only the 
      programs you use all of the time in a program group.

  Use MSDOS.EXE as your Shell instead of PROGMAN.EXE:
      This is a bit extreme, but MSDOS.EXE uses much less memory and
      resources than PROGMAN.EXE, and it is much faster. 
  
----------------------------------------------------------------------------
Part 3 - Sample programs
----------------------------------------------------------------------------

<No programs are present at this time>

<End of file>
