home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 14 Text / 14-Text.zip / vbfaq.zip / VB.FAQ
Internet Message Format  |  1994-08-23  |  192KB

  1. From ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack Tue Aug 23 23:10:52 1994
  2. Newsgroups: comp.lang.basic.visual,comp.answers,news.answers
  3. Path: ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack
  4. From: knosack@park.uvsc.edu (Kris Nosack)
  5. Subject: FAQ: comp.lang.basic.visual General Frequently Asked Questions
  6. X-Content-Currency: This FAQ changes regularly.  When a saved or printed copy
  7.                     is over 6 months old, please obtain a new one.
  8. Expires: Wed, 7 Sep 1994 05:30:11 GMT
  9. Reply-To: ac150@freenet.buffalo.edu (Peter G. Millard)
  10. Organization: Visual Basic FAQ Maintainers
  11. Date: Sun, 21 Aug 1994 05:30:15 GMT
  12. Approved: news-answers-request@MIT.Edu
  13. X-Posting-Frequency: Posted on the 5th and 20th of each month.
  14. Message-ID: <visual-basic-faq-general-1-777447011@freenet.buffalo.edu>
  15. Followup-To: comp.lang.basic.visual
  16. Summary: General information and frequently asked questions concerning
  17.          Microsoft's Visual Basic products.
  18. Keywords: FAQ VISUAL BASIC GENERAL INFORMATION
  19. Sender: knosack@park.uvsc.edu (Kris Nosack)
  20. Supersedes: <visual-basic-faq-general-1-776151021@freenet.buffalo.edu>
  21. Lines: 508
  22. Xref: ankh.iia.org comp.lang.basic.visual:14006 comp.answers:3268 news.answers:9761
  23.  
  24. Posted-By: auto-faq 3.1.1.2
  25. Archive-name: visual-basic-faq/general-info
  26.  
  27. Last-Modified: 06/10/94
  28.  
  29.  
  30.                           GENERAL INFORMATION
  31.                     about Microsoft's Visual Basic 
  32.                  the COMP.LANG.BASIC.VISUAL newsgroup
  33.                  ====================================
  34.  
  35. PREFACE:
  36. This document is a compilation of frequently asked questions and their
  37. answers about Visual Basic in general which have been gathered from the
  38. comp.lang.basic.visual newsgroup.   Although some efforts have been
  39. made to find obvious errors, there is no guarantee that the information in
  40. this document is error-free.  The FAQ maintainer, or anyone else
  41. associated with this document, assume NO liability for the content or use
  42. of this document.  If you find any errors, please report them to the address
  43. given below.
  44.  
  45. Most FAQs (including this one) are available at the anonymous ftp archive
  46. site "rtfm.mit.edu".  All four parts of the VB FAQ may be found in the
  47. directory "pub/usenet/news.answers/visual-basic-faq".
  48.  
  49. You can also have the VB FAQs e-mailed to you by sending a message
  50. to "mail-server@rtfm.mit.edu" with ONLY the text "send
  51. usenet/news.answers/visual-basic-faq/*" in the body of the message.
  52.  
  53. As the FAQ maintainers, we don't have time to explore all of the aspects
  54. of Visual Basic.  we rely on your submissions to improve the quality and
  55. inclusiveness of this document.  If you have found a VB hint, tip, trick,
  56. work-around, etc., please write it up and send it to us!  Direct any
  57. comments/suggestions/flames to one of these addresses:
  58.  
  59.   Peter Millard   ac150@freenet.buffalo.edu    -General and VBDOS FAQ
  60.   Jan Haugland    Jan.Haugland@uib.no           -VB/Win FAQ    
  61. ==========================================
  62. Table of Contents
  63.  
  64. I.    The COMP.LANG.BASIC.VISUAL Charter:
  65. II.   What is Visual Basic and Where can I get it?
  66. III.  What's the difference between VB/Win & VBDOS?
  67. IV.   What are the features of the Professional vs. the Standard
  68.       editions of the VB products?
  69.       A. VB/Win
  70.       B. VBDOS
  71. V.    What to do BEFORE you post. 
  72.  
  73. VI.   What are some good 3rd party books to learn vb?
  74. VII.  What are some other VB resources and where can I get
  75.       them?
  76. VIII. Where can I get good Public domain, shareware, or
  77.       freeware software for VB?
  78.       A. FTP
  79.            ftp.cica.indiana.edu:/pub/pc/win3/programr/vbasic
  80.            ftp.microsoft.com:
  81.       B. BBS
  82.       C. Compuserve
  83.       D. America On-Line
  84. IX.   Specific Question and Answer sections
  85.       A.   VB/Win
  86.       B.   VBDOS
  87. X.    Appendix for FAQ POST #1
  88.  
  89. ==========================================
  90.  
  91. I.    The COMP.LANG.BASIC.VISUAL Charter:
  92.  
  93.       COMP.LANG.BASIC.VISUAL is an unmoderated forum to
  94.       share information about Microsoft's Visual Basic for Windows
  95.       and MS-DOS, as well as the new "Application Basic" embedded
  96.       in MS applications such as Word for Windows, Excel, and
  97.       Access.
  98.  
  99.       Microsoft provides no Internet support channel for Visual Basic,
  100.       so this group will let Visual Basic users get together to help
  101.       each other, without requiring them to filter through unrelated,
  102.       broader Windows programming issues.
  103.  
  104. II.   What is Visual Basic and Where can I get it?
  105.  
  106.       Visual Basic (often abbreviated 'VB') is a programming
  107.       language initially developed by Microsoft to provide
  108.       programmers with a quick and easy method of developing
  109.       Windows applications.
  110.  
  111.       Visual Basic provides the programmer with an integrated
  112.       environment where s/he can use tools to create a point and shoot
  113.       interface and use event driven programming techniques.  A
  114.       developer can quickly and easily create a user interface, then
  115.       write the code to respond to specific events which occur as a
  116.       result of user input. 
  117.  
  118.       The integrated development environment (IDE) has sophisticated
  119.       editing and debugging tools which allow you to attach code
  120.       quick to the interface created for each event which is applicable
  121.       for any type of object on the interface. 
  122.  
  123.       Currently, there are two different "flavors" of Visual Basic. The
  124.       original language was developed for Windows (often abbreviated
  125.       'VB/Win') and will only create apps for it. Visual Basic for
  126.       DOS (often abbreviated 'VBDOS') came along later as the
  127.       demand for point-and-shoot applications grew. The two flavors
  128.       are similar in programming techniques (they both use event-
  129.       driven subroutines), however they remain vastly different
  130.       products. 
  131.  
  132.       All current versions of Visual Basic are commercial applications,
  133.       and thus should be availible at your local computer store. You
  134.       can also get in contact with Microsoft.
  135.  
  136. III.  What's the difference between VB/Win & VBDOS?
  137.  
  138.       VB/Win gives you the capability of creating applications which
  139.       run in Windows, while VBDOS gives you the ability to develop
  140.       apps which do not need Windows to run and run in text mode
  141.       using the extended character set to give the user the feeling of a
  142.       graphical environment, while still remaining in a text mode. 
  143.  
  144.       VB/Win applications are compiled into a pseudo-code (p-code)
  145.       file with an "EXE" extension.  When run, the p-code file
  146.       accesses a run-time Dynamic Linked Library (DLL)
  147.       (VBRUNx00.DLL) which interprets the p-code into
  148.       Windows(tm) Aplication Programming Interface (API)
  149.       instructions.  VB/Win cannot create a stand-alone application
  150.       (i.e. an executable which does not need the VBRUNx00.DLL.). 
  151.       Currently, applications developed using a particular version of
  152.       VB/Win requires the same version of the run-time DLL. 
  153.       Therefore, a VB application developed in VB/Win version 3.0
  154.       will only work if the run-time DLL VBRUN300.DLL is installed
  155.       in either the WINDOWS or SYSTEM directories.
  156.  
  157.       VBDOS can create both types of applications. Those that require
  158.       a run-time module, or those that are a stand-alone .exe file.
  159.  
  160. IV.   What are the features of the Professional vs. the Standard
  161.       editions of the VB products?
  162.  
  163.       A. VB/Win
  164.  
  165.            Both editions (version 3.0) include all of the basic graphic
  166.            primitives (controls) that make Windows(tm) such a nice
  167.            Graphical User Interface (GUI) to work with, such as: text
  168.            boxes, message boxes, drop-down menus, combo boxes,
  169.            Multiple Document Interface, File controls, etc.  Version
  170.            3.0 added database capabilities by tying into the Microsoft
  171.            Access database engine (a DLL that handles all the actual
  172.            database file manipulation).
  173.       
  174.            The Professional Edition includes: more reference materials
  175.            (manuals, Knowledge Base, Windows API information,
  176.            etc.), more extensive database capabilities (ability to create
  177.            databases), additional controls for serial port
  178.            communications, masked text boxes, 3D "sculpted"
  179.            controls, etc., Pen API support, and more!  Serious
  180.            programmers and developers would be best served by the
  181.            professional edition.  Most VB/Win users on the
  182.            comp.lang.basic.visual newsgroup feel that the added
  183.            features of the Professional Edition make it well worth the
  184.            extra cost.  The Standard Edition is sufficient for small and
  185.            fairly simple programs and "hobby" programmers.  Since
  186.            Microsoft offers an upgrade path from the Standard to the
  187.            Professional Edition, those who aren't sure they need the
  188.            Professional Edition can start with the Standard Edition and
  189.            move up when they're ready.
  190.  
  191.       
  192.       B. VBDOS
  193.  
  194.            Both version of VBDOS load and run all existing QBasic
  195.            and QuickBasic programs. With little or no effort, your
  196.            QBasic and QuickBasic programs can use the compiler in
  197.            Visual Basic for MSDOS to take advantage of optimized
  198.            code generation and greater string capacity. The
  199.            professional edition has the capability of loading and
  200.            running Basic PDS programs designed for MS-DOS. 
  201.  
  202.            Both editions of VBDOS allow you to incrementally add
  203.            forms, dialog boxes, and controls to existing applications
  204.            without rewriting them. 
  205.  
  206.            The Professional editions of VBDOS includes 286 and
  207.            386/486 specific code generation in its native code
  208.            compiler. Also included is a high-speed alternate floating-
  209.            point math library. The MOVE Overlay technology found
  210.            in MS C/C++ 7.0 allows compiled programs to be up to
  211.            16MB! Also included is the MS Source Profiler which
  212.            allows you to fine tune your applications, stub files which
  213.            allow you to remove run-time functionality your program
  214.            does not use. The Professional edition also includes a
  215.            powerful ISAM (Indexed Sequential Access Method)
  216.            Database engine for developing database applications which
  217.            can use database files up to 128MB.
  218.  
  219.  
  220.            Here are the additional features you will find in the
  221.            professional edition of Visual Basic for MS-DOS: 
  222.  
  223.            Feature                   Notes
  224.            -----------------------------------------------------
  225.            Help toolkit              create on-line help
  226.            Setup toolkit             create distribution disks
  227.            CodeView debugger         version 4.02
  228.            Financial toolkit         functions from Microsoft Excel
  229.            Present. graphics kit     make charts and graphs
  230.            Matrix math toolkit       matrix operations
  231.            Create custom controls    requires MS MASM
  232.            Create custom rtms        Put your modules into RTM.
  233.            Microsoft mouse driver    version 8.2a
  234.             (NOTE: RTM = Runtime Module)
  235.            
  236. V.    What to do BEFORE you post. 
  237.  
  238.       First, consult the manuals included with Visual Basic.  The
  239.       manuals *generally* do a good job explaining most of the basics
  240.       of Visual Basic.  Expect to be flamed if you post a question to
  241.       the newsgroup that is plainly answered in the manual! 
  242.  
  243.       Second, check the Knowledge Base (KB). The Knowledge Base
  244.       is a file that documents many of the most common problems /
  245.       bugs / questions that the VB technical support folks at Microsoft
  246.       have encountered. The Knowledge Base comes standard with the
  247.       Professional Edition, but Standard Edition users can get a copy
  248.       of the Knowledge Base via ftp (see section VII), CompuServe,
  249.       America On-line, or your local BBS. The file *should* be
  250.       named something like "vbkb".
  251.  
  252.       Third, check the FAQ.  Since you are reading this document, I
  253.       don't think much needs to be said here.  As a side note:
  254.       PLEASE, encourage those who post frequently asked questions
  255.       which are covered in this document to get and read the FAQ!  If
  256.       we don't, people will just keep posting those same questions
  257.       over and over.  Help us break this cycle of over-dependency on
  258.       knowledgeable and kind-hearted newsgroup users.
  259.  
  260.       Forth, thoroughly test the problem you are encountering.  You
  261.       are more apt to get some useful help if you can speak
  262.       intelligently about the problem you are having and what you
  263.       have done to try and fix or get around the problem.
  264.  
  265.       Finally, post to the COMP.LANG.BASIC.VISUAL newsgroup. 
  266.       Helping each other with Visual Basic problems and questions is
  267.       a lot about what this newsgroup is about.  If you've done your
  268.       homework, you will probably be met with helpful responses to
  269.       your inquiry.  Since both VB/Win and VBDOS users read this
  270.       newsgroup, please prefix the subject line of your post with a
  271.       note that indicates which type of VB you're using (i.e. "Subject:
  272.       [VB/Win] Problem with DoEvents", "Subject: [VBDOS]
  273.       Question on ISAM parameters").
  274.  
  275. VI.   What are some good 3rd party books to learn vb?
  276.       We (the editors) have compiled a list of various books which
  277.       cover a wide range of VB/Win subjects. Many of the books are
  278.       personal reccommendations from various people on the net. The
  279.       remaining books came from a keyword search of 'VISUAL' at
  280.       the internet site BOOKS.COM. This site can be used to purchase
  281.       books via credit card or you can use their database of books to
  282.       find information as I have done. A complete list can be found at
  283.       the end of this document. 
  284.  
  285. VII.  What are some other VB resources and where can I get
  286.       them?
  287.  
  288.       The Knowledge Base (often abbreviated 'KB') is a file that
  289.       documents many of the most common problems, bugs, questions,
  290.       tips, fixes and work-arounds that the VB technical support folks
  291.       at Microsoft have encountered.  The KB comes standard with the
  292.       Professional Edition, but Standard Edition users can get a copy
  293.       of the Knowledge Base via ftp (see section VIII), CompuServe,
  294.       America On-line, or perhaps even your local BBS.  Many
  295.       answers to common VB problems can be found in the KB.  This
  296.       file is a must-have!
  297.       Visual Basic Tips and Tricks is a compilation of useful VB code
  298.       examples, a listing of the latest VB file versions and dates, and
  299.       other useful information that isn't in the Knowledge Base.  VB
  300.       Tips and Tricks is a Windows help file put together by Dave
  301.       McCarter of DPM Computer Solutions.  It can be found at many
  302.       places (including ftp.cica.indiana.edu) as "VBTIPSxx.ZIP",
  303.       where xx is the version number (larger numbers represent newer
  304.       versions).  It is updated on a monthly basis.
  305.  
  306. VIII. Where can I get good Public domain, shareware, or freeware
  307.       software for VB?
  308.  
  309.       A. FTP
  310.       VB/windows ftp sites:
  311.       ---------------------
  312.       ftp.cica.indiana.edu:/pub/pc/win3/programr/vbasic
  313.            Best/largest source for Visual Basic files, utilities, example
  314.            programs, VBXs, etc.
  315.  
  316.       ftp.microsoft.com:
  317.            Microsoft's anonymous ftp site.  There is a lot on this site
  318.            so look around.  Here are some of the more useful
  319.            directories:
  320.            /Softlib/MSLFILES
  321.                Get the Knowledge Base for VB here!  VBKB.EXE
  322.                (929K) is the regular KB in windows help format.
  323.                VBKB_FT.EXE (2,563K)is the same as VBKB.EXE
  324.                but with text searching added.  Lot's of other good
  325.                files in this directory.
  326.            /MSDN
  327.                Contains LOTS of Windows programming files and
  328.                examples!  Get the index file MSDN-IDX.ZIP for a
  329.                description of the files in this directory.  Suggestion:
  330.                search the index file for the text "Visual Basic".
  331.            /MSDN/VBTECH
  332.                VB specific files.
  333.            /DEVTOOLS/LANG/VB/PUBLIC
  334.                Misc. VB files and updates.                          
  335.  
  336.       B. BBS
  337.  
  338.       I run a public BBS in Bellefonte, PA, which caters to
  339.       programmers and UNIX users.  I have a fairly large-sized
  340.       BASIC file section, with some Visual BASIC  files uploaded
  341.       from users, and culled from various FTP sites.  I would 
  342.       certainly welcome additional users interested in VB.
  343.  
  344.       The BBS is called the Centre Programmers Unit BBS, and can
  345.       be reached at  814-353-0566.  The system is up 24 hours a day,
  346.       7 days a week, and has a  USR Dual Standard
  347.       (14.4HST/V.32bis) online.  There is no charge for access,  but I
  348.       enforce a file upload/download ratio.  Here's my welcome
  349.       screen:
  350.                                                                     
  351.                            You are invited to call:
  352.                          The Centre Programmers Unit
  353.                                Bellefonte, PA 
  354.                       A gathering point for UNIX users,
  355.                          and programmers of all types.
  356.                 ---------------------------------------------------      
  357.                 System size: 1.5Gb         Online: 24 hours, 7 days
  358.       
  359.             Modem: USR Dual Standard: 1200-14400 baud
  360.                    MNP 1-5, v.32, v.32bis, v.42, v.42bis, HST
  361.       
  362.                 (814) 353-0566             Sysop: Mike Loewen
  363.       
  364.            MSDOS programming tools and libraries, UNIX source, GNU, X
  365.                    Select USENET Newsgroups. Linux.
  366.            BBS users should login as 'bbs', 8N1, no password required.
  367.                  email: mloewen@cpumagic.scol.pa.us
  368.  
  369.       C. Compuserve
  370.            Compuserve does have a fairly active basic forum. To
  371.            acces this forum, type GO MSBASIC. Microsoft employees
  372.            have been known to frequent this forum. May be useful for
  373.            those last ditch pleas for some useful tidbit of information.
  374.  
  375.            Some Useful files in the MSBASIC forum:
  376.            - VBBK05.ZIP:  List of books/mags dealing with VB.
  377.            - MLIST4.ZIP:  Multi-column listbox. No 64K limit. 
  378.  
  379.       D. America On-Line
  380.            America On-Line has a good selection of VB files and an
  381.            active message area for discussing Visual Basic.
  382.  
  383. IX.   Specific Question and Answer sections
  384.  
  385.       A.   VB/Win - refer to the post titled: "comp.lang.basic.visual
  386.            VB/Win Frequently Asked Questions".
  387.  
  388.       B.   VBDOS - refer to the post titled: "comp.lang.basic.visual
  389.            VB/DOS Frequently Asked Questions".
  390.  
  391. X.    Appendix for FAQ POST #1
  392.       ========================
  393.       BOOK LIST for VB/Win
  394.       ========================
  395.  
  396.       ---From: ian@monty.demon.co.uk (Ian Piper)
  397.  
  398.            Here, in descending order of usefulness (in my own
  399.            personal opinion) are the VB books I use the most:
  400.  
  401.            1. Visual Basic Programmers guide to the Windows
  402.            API, by Daniel Appleman. ISBN1-56276-073-4. If you
  403.            only want to get one book on VB, this is the one. It covers
  404.            the ground from simple to advanced programming very
  405.            well. 
  406.  
  407.            2. The Waite Group's VB How-To, several authors, ISBN
  408.            1-878739-09-3. This is the ISBN number for version 1 - I
  409.            think it's been updated by now. Lots of examples to
  410.            demonstrate each point. This is a close second.
  411.  
  412.            3. Visual Basic Utilities, by Paul Bonner, ISBN
  413.            1-56276-106-4. This has some excellent learning stuff in it
  414.            and also some advanced stuff, including how to write your
  415.            own DLLs (!) using GFA-BASIC.
  416.  
  417.            4. Fun programming with VB, several authors, ISBN
  418.            1-56529-106-9. This uses a half-dozen or so projects to
  419.            illustrate how various programmers designed and built apps
  420.            using VB.
  421.  
  422.            5. Windows 3.1 programming for mere mortals, by
  423.            Woody Leonhard, ISBN 0-201-60832-4. This covers VB
  424.            and WordBasic. Some very neat examples.
  425.  
  426.       ---From: tivadar@interaccess.com (John Quarto-vonTivadar)
  427.  
  428.            I found the following VERY useful, to the point that I
  429.            don't even use the manuals anymore:
  430.  
  431.            6. The Visual Guide to Visual Basic for Windows, by
  432.            Richard Mansfield, published by Ventura Press. This is a
  433.            encyclopedia of the language itself. It supposes that you
  434.            DO know how to program so basically (if you pardon the
  435.            pun) it's a guide to VB's slang. I use this for referencing
  436.            the grammar when i get a bug.
  437.  
  438.       ---From: idavidson@csu.edu.au (Ian Davidson)
  439.  
  440.            7. Visual Basic How-To, Robert Arnson, Daniel Rosen,
  441.            Mitch Waite &  Jonathon Zuck: The Waite Group, 1992. 
  442.            ISBN 1-878739-09-3.  Includes  disk.  Many practical
  443.            examples & some sample custom controls.Introduces &
  444.            expands on the use of API's.  An excellent book suitable
  445.            for Beginners thru Advanced - one of my most-often-used 
  446.            references.
  447.  
  448.            8. Learn Programming and Visual Basic with John
  449.            Socha, John Socha:  Sybex, 1992.  ISBN 0-7821-1057-6. 
  450.            Includes disk.  A useful introduction for absolute beginner
  451.            programmers thru intermediate.
  452.  
  453.  
  454.       -- From Gary Cornell:
  455.            There's a new version of my book - it's been enlarged and
  456.            updated. It's now called the Visual Basic 3 For Windows
  457.            Handbook.
  458.                
  459.               Author   : Cornell, Gary
  460.               Title    : Visual Basic 3 For Windows Handbook
  461.               ISBN     : 0078819318 Dewey #  : 005.10
  462.               Publisher: Osborne McGraw Hill
  463.               Date Pub : 01/93
  464.  
  465.       --from Wallace Wang: 72662,1711 (Compuserve)
  466.            Here's the information you requested. Thanks for including
  467.            my book in your listing:
  468.  
  469.            Publisher name: IDG Books Publisher 
  470.            address: 155 Bovet Road, Suite 310
  471.                     San Mateo, CA 94402 
  472.            Phone number: (415) 312-0650 
  473.            Fax number: (415) 358-1260
  474.  
  475.            Book name: Visual Basic 3 For Dummies 
  476.            Author name: Wallace Wang 
  477.            When released: March 1994 
  478.  
  479.            50-word description: This book takes readers, 
  480.                step-by-step, to understanding, learning, and writing
  481.                Visual Basic programs. Explains how to use the most
  482.                common features of Visual Basic for creating user
  483.                interfaces and writing BASIC code. Includes a
  484.                friendly dose of humor and easy to read explanations,
  485.                this book also includes suggestions for finding
  486.                additional information about Visual Basic. Intended
  487.                audience: 
  488.  
  489.            Beginners Price: $19.95
  490.            Disk of examples: No.
  491.  
  492.       ---From EDITOR: 
  493.            The following books were those I found using a keyword
  494.            search of 'VISUAL' at the internet site BOOKS.COM. This
  495.            site can be used to purchase books via credit card or you
  496.            can use their database of books to find information as I
  497.            have done. 
  498.  
  499.            Author   : Nelson, Ross
  500.            Title    : The Microsoft VB for Windows Primer
  501.            ISBN     : 1556154771    Dewey #  : 005.10
  502.            Publisher: Microsoft Pr  Date Pub : 11/92
  503.       
  504.            Author   : Orvis, William
  505.            Title    : Do It Yourself Visual Basic for Windows
  506.            ISBN     : 0672302594    Dewey #  : 005.10
  507.            Publisher: Sams          Date Pub : 11/92
  508.  
  509.            Author   : Craig, John Clark
  510.            Title    : Microsoft VB Workshop/Book and Disk
  511.            ISBN     : 1556153864    Dewey #  :   5.26
  512.            Publisher: Microsoft Pr  Date Pub : 09/91
  513.       
  514.            Author   : Murray, William H./Pappas, Chris H.
  515.            Title    : Using VB : Writing Windows Apps
  516.            ISBN     : 0201581450    Dewey #  :   5.43
  517.            Publisher: Addison Wesley Pub. Co.
  518.            Date Pub : 01/92
  519.  
  520.       ========================
  521.       BOOK LIST for VBDOS
  522.       ========================
  523.  
  524.            Author   : Hergert, Douglas A.
  525.            Title    : Visual Basic Programming With DOS
  526.            Applications
  527.                    / Book and Disk
  528.            ISBN     : 0553370995    Dewey #  : 005.00
  529.            Publisher: Bantam Doubleday Dell Pub
  530.            Date Pub : 07/92
  531.  
  532.  
  533. From ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack Tue Aug 23 23:11:02 1994
  534. Newsgroups: comp.lang.basic.visual,comp.answers,news.answers
  535. Path: ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack
  536. From: knosack@park.uvsc.edu (Kris Nosack)
  537. Subject: FAQ: comp.lang.basic.visual VB/Win Frequently Asked Questions
  538. X-Content-Currency: This FAQ changes regularly.  When a saved or printed copy
  539.                     is over 6 months old, please obtain a new one.
  540. Expires: Wed, 7 Sep 1994 05:30:23 GMT
  541. Reply-To: Jan.Haugland@uib.no (Jan Steinar Haugland)
  542. Organization: Visual Basic FAQ Maintainers
  543. Date: Sun, 21 Aug 1994 05:30:29 GMT
  544. Approved: news-answers-request@MIT.Edu
  545. X-Posting-Frequency: Posted on the 5th and 20th of each month.
  546. Message-ID: <visual-basic-faq-windows-1-777447023@uib.no>
  547. Followup-To: comp.lang.basic.visual
  548. Summary: Frequently asked questions concerning Visual Basic for Windows.
  549. Keywords: FAQ VISUAL BASIC WINDOWS
  550. Sender: knosack@park.uvsc.edu (Kris Nosack)
  551. Supersedes: <visual-basic-faq-windows-1-776151034@uib.no>
  552. Lines: 2296
  553. Xref: ankh.iia.org comp.lang.basic.visual:14007 comp.answers:3269 news.answers:9762
  554.  
  555. Posted-By: auto-faq 3.1.1.2
  556. Archive-name: visual-basic-faq/windows
  557.  
  558. Last-modified: 13.08.94
  559.  
  560.  
  561.                     VISUAL BASIC FOR WINDOWS (VB/Win)
  562.                    Frequently asked Questions & Answers
  563.                               Section IX - B
  564.  
  565.  
  566.    TABLE OF CONTENTS:
  567.    ******************
  568.  
  569.    A. PREFACE
  570.  
  571.    B. GENERAL VISUAL BASIC QUESTIONS
  572.  
  573.           1. Does VB/Win make standalone .EXE files?
  574.  
  575.           2. What is the current version of Visual Basic for Windows?
  576.  
  577.           3. Where can I get updated VB and other Microsoft files?
  578.  
  579.           4. Help! I am lost on ftp.microsoft.com.
  580.  
  581.           5. Where can I get good up-to-date information about VB?
  582.  
  583.           6. Are there any examples of commercial applications built
  584.               using Visual Basic?
  585.  
  586.  
  587.    C. COMMON VISUAL BASIC PROGRAMMING QUESTIONS
  588.  
  589.           1. What's the difference between MODAL and MODELESS forms?
  590.  
  591.           2. When/Why should I use Option Explicit?
  592.  
  593.           3. Why does everybody say I should save in TEXT not BINARY?
  594.  
  595.           4. Is the Variant type slower than using other variable
  596.               types?
  597.  
  598.           5. How do I make a text box not beep but do something else
  599.               when I hit the Enter key?
  600.  
  601.           6. How do I implement an incremental search in
  602.               list/dir/combo/file boxes?
  603.  
  604.           7. How do I get the Tab key to be treated like a normal
  605.               character?
  606.  
  607.           8. How do I make an animated icon for my program?
  608.  
  609.           9. What is passing by reference?
  610.  
  611.           10. I get a "file not found" error on the IIF function when
  612.               I distribute by program. Uh?
  613.  
  614.           11. Is there any way to pass a variable to a form apart from
  615.               using global variables?
  616.  
  617.           12. How should dates be implemented so they work with other
  618.               language and country formats?
  619.  
  620.           13. Can a VB application be an OLE server?
  621.  
  622.           14. How do I dial a phone number without using the MSCOMM
  623.               VBX?
  624.           15. I have [several] megabytes of memory. Why do I get an
  625.               "out of memory" error?
  626.  
  627.           16. How do I mimic a toggle button?
  628.  
  629.           17. How do I get my application on top?
  630.  
  631.           18. Is there a way to break long lines in VB code?
  632.  
  633.           19. How do I remove/change the picture property of a control
  634.               at design time?
  635.  
  636.           20. Is a [foo] VBX/DLL available as shareware/freeware?
  637.  
  638.           21. How do I make my applications screen-resolution
  639.               independent?
  640.  
  641.           22. How do I do Peek and Poke?
  642.  
  643.           23. Why doesn't "my string" & Chr$(13) do what I want?
  644.  
  645.           24. How do I prevent multiple instances of my program?
  646.  
  647.  
  648.    D. ADVANCED VISUAL BASIC PROGRAMMING ISSUES
  649.  
  650.           1. How do I tell when an application executed using the
  651.               SHELL command is finished?
  652.  
  653.           2. How do I access C style strings?
  654.  
  655.           3. How can I change the printer Windows uses in code without
  656.               using the print common dialog?
  657.  
  658.           4. Any tips for speeding up VB?
  659.  
  660.           5. How do I speed up control property access?
  661.  
  662.           6. How much gain in performance will I get if I write my
  663.              number crunching routines in C instead of Visual Basic?
  664.  
  665.           7. How do you make a TEXTBOX read only? Or, how do I prevent
  666.              the user from changing the text in a TEXTBOX?
  667.  
  668.           8. How can I create a VBX?
  669.  
  670.           9. How do you change the system menu (on the Control-Menu
  671.              Box)?
  672.  
  673.           10. How do I play MID, WAV or other multimedia files?
  674.  
  675.           11. How can I call a 'hidden' DOS program from VB?
  676.  
  677.           12. How do I do drag & drop between applications?
  678.  
  679.           13. How do I use GetPrivateProfileString to read from INI
  680.               files?
  681.  
  682.           14. How do I implement Undo?
  683.  
  684.           15. How do I create a window with a small title bar as in a
  685.               floating toolbar?
  686.  
  687.           16. What is Pseudocode?
  688.  
  689.           17. Does VB support pointers to functions?
  690.  
  691.           18. How do I program the Novell NetWare API from VB?
  692.  
  693.           19. Some Visual Basic 4 rumours
  694.  
  695.  
  696.    E. CALLING THE WINDOWS API AND DLLs IN GENERAL
  697.  
  698.           1. What is the Windows API?
  699.  
  700.           2. How do I call a DLL?
  701.  
  702.           3. What about DLL calls that require callbacks?
  703.  
  704.           4. Tips for calling DLLs (such as the Windows API)
  705.  
  706.  
  707.    F. VISUAL BASIC AND DATABASES
  708.  
  709.           1. Why can't I use an index with my VB accessed database?
  710.  
  711.           2. Why does my compiled VB database app generate an error
  712.               when it ran just fine in the design environment?
  713.  
  714.           3. Is the Access Engine and Visual Basic Pro good enough for
  715.               database work?
  716.  
  717.           4. How do you avoid the "Invalid use of null" error when
  718.               reading null values from a database?
  719.  
  720.           5. What is "NULL"?
  721.  
  722.           6. How can I access a record by record number?
  723.  
  724.           7. How about Access 2.0 compatibility?
  725.  
  726.           8. Tips for VB database programming:
  727.  
  728.           9. How come I get a "No Current Record" error when I use a a
  729.               Data Control on an empty table?
  730.  
  731.           10. How can I speed up my VB database application?
  732.  
  733.           11. How do I get a bitmap picture in a field in an Access
  734.               database?
  735.  
  736.  
  737.    G. DISTRIBUTING VISUAL BASIC APPLICATIONS
  738.  
  739.           1. What are some tips for using Setup Wizard?
  740.  
  741.           2. Are there restrictions on what I can distribute with my
  742.               VB program?
  743.  
  744.           3. What alternatives to setup wizard do I have?
  745.  
  746.           4. Do I need to worry about users who have Progman
  747.               replacements such as Norton Desktop and PC Tools?
  748.  
  749.           5. Can I distribute my app without vbrunXXX.dll?
  750.  
  751.           6. Why won't my setup program install commdlg.dll et. al.?
  752.  
  753.           7. Where do I install VBXs and DLLs?
  754.  
  755.  
  756.    H. MISCELLANEOUS TIPS AND INFORMATION
  757.  
  758.           1. Multiple identifiers after the DIM statement can be
  759.               confusing
  760.  
  761.           2. "Clean up" your project before final EXE compilation.
  762.  
  763.           3. Multiple END statements can be dangerous; or, The program
  764.               that refused to terminate.
  765.  
  766.           4. What are the latest versions of the various files used by
  767.               VB?
  768.  
  769.  
  770.    I. VISUAL BASIC FOR APPLICATIONS (VBA)
  771.  
  772.           1. Any tips for VB/Win 3 programmers moving to VBA?
  773.  
  774.           2. Does VBA support VBXs?
  775.  
  776.           3. How do I access properties on my dialog boxes in VBA?
  777.  
  778.           4. How do I use database routines from Excel VBA?
  779.  
  780.  
  781.  
  782. A. PREFACE
  783.  
  784.  
  785.    This document is a compilation of frequently asked questions and
  786.    their answers about Visual Basic for Windows and Visual Basic for
  787.    Applications which have been gathered from posts to the
  788.    comp.lang.basic.visual newsgroup.  Although efforts have been made
  789.    to find obvious errors, there is no guarantee that the information
  790.    in this document is error-free. Neither the FAQ maintainer nor
  791.    anyone else associated with this document assume ANY liability for
  792.    the content or use of this document. If you find any errors, please
  793.    report them to the address given below.
  794.  
  795.    This FAQ document is protected by international copyright
  796.    regulations. Permission is granted to distribute it freely, both in
  797.    electronic and written format, provided no charge is made. Also, do
  798.    not make changes to this document without the consent of the
  799.    maintainer. Usenet netiquette applies.
  800.  
  801.    Most FAQs (including this one) are available at the anonymous ftp
  802.    archive site "rtfm.mit.edu". All parts of the VB FAQ may be found
  803.    in the directory "pub/usenet/comp.lang.basic.visual".
  804.  
  805.    You can also have the VB FAQs e-mailed to you by sending a message
  806.    to "mail-server@rtfm.mit.edu" with ONLY the text
  807.  
  808.       send usenet/news.answers/visual-basic-faq/*
  809.  
  810.    in the BODY of the message.
  811.  
  812.    In this document, whenever a long line of code must be split into
  813.    two or more lines of text in the code examples, a | symbol will
  814.    precede each line which should be appended to the line above it.
  815.  
  816.    As the FAQ maintainer, I don't have time to explore all of the
  817.    aspects of Visual Basic. I rely on your submissions to improve the
  818.    quality and inclusiveness of this document. If you have found a VB
  819.    hint, tip, trick, work-around, etc., please write it up and send it
  820.    to me!
  821.  
  822.    Jan Steinar Haugland (Jan.Haugland@uib.no), VB/Win FAQ maintainer
  823.  
  824.    Please note that my first language is not English. You can safely
  825.    ignore all typos, but if you find an error that is so embarrassing
  826.    you can't help pulling your hair and screaming loud, just send me a
  827.    note and I'll correct it quietly. OK?
  828.  
  829.    I would like to thank all contributers, and also all those who have
  830.    given constructive feedback. This FAQ is now widely distributed in
  831.    the net community.
  832.  
  833.    Special thanks to the following people who have made many and
  834.    invaluable contributions to the VB/Win FAQ:  Kris Nosack (the
  835.    previous maintainer), Peter Millard, Nic Gibson, Mr. "D" (the
  836.    anonymous contributor), George Tatge (gat@csn.org), Andy Dingley
  837.    (dingbat@codesmth.demon.co.uk), and those I may have forgotten
  838.    (sorry).
  839.  
  840.    Your help is GREATLY appreciated!
  841.  
  842.  
  843. B. GENERAL VISUAL BASIC QUESTIONS
  844.  
  845.  
  846. 1. Does VB/Win make standalone .EXE files?
  847.  
  848.    VB/Win produces .exe files, but they are not standalone. All VB/Win
  849.    programs must be distributed with the VBRUNx00.DLL file (where x is
  850.    the major version number). This DLL must accompany all VB/Win
  851.    programs, but only one such file should reside on every system
  852.    where VB programs are used.
  853.  
  854. 2. What is the current version of Visual Basic for Windows?
  855.  
  856.    VB/Win is currently at version 3.0
  857.  
  858. 3. Where can I get updated VB and other Microsoft files?
  859.  
  860.    Microsoft Software Library (MSL) is accessible from the following
  861.    services:
  862.  
  863.    - Compu$erve
  864.  
  865.      GO MSL
  866.      Search for <filename.EXE>
  867.  
  868.    - Microsoft Download Service (MSDL)
  869.      Dial (206) 936-6735 to connect to MSDL
  870.  
  871.    - Internet (anonymous FTP)
  872.      ftp ftp.microsoft.com
  873.      Change to the \softlib\mslfiles directory
  874.      (There are a LOT of files in this directory! It is not
  875.      advisable to list all the files unless you have good time.
  876.      See map below.)
  877.  
  878. 4. Help! I am lost on ftp.microsoft.com.
  879.  
  880.    You're not alone. The organisation of this ftp site is *ugly*.
  881.  
  882.    Here's a *very* useful map. It was valid as of 16 June 1994; I have
  883.    the impression they move things around just for fun!:
  884.  
  885.    |- [ADVSYS]
  886.    |      |- [LANMAN]
  887.    |      |- [MAIL]
  888.    |      |- [MSCLIENT]
  889.    |      |- [ODBC]
  890.    |      |- [SNASRVR]
  891.    |      |- [SQLSRVR]
  892.    |      |- [WINNT]
  893.    |      |- [WINSOCK]
  894.    |
  895.    |- [DESKAPPS]
  896.    |      |- [ACCESS]
  897.    |      |- [DRAW]
  898.    |      |- [EXCEL]
  899.    |      |- [FOX]
  900.    |      |- [GAMES]
  901.    |      |- [GRAPH]
  902.    |      |- [MMAPPS]
  903.    |      |- [MONEY]
  904.    |      |- [MSPUB]
  905.    |      |- [OFFICE]
  906.    |      |- [POWERPT]
  907.    |      |- [PROJECT]
  908.    |      |- [VIDEO]
  909.    |      |- [WORD]
  910.    |      |- [WORDART]
  911.    |      |- [WORKS]
  912.    |
  913.    |- [DEVELOPER]
  914.    |      |
  915.    |      |- [DEVTOOLS]
  916.    |      |         |- [DELTA]
  917.    |      |         |- [FOX]
  918.    |      |         |- [LANG] -----
  919.    |      |         |- [MAPI]      |- [BASIC]
  920.    |      |         |- [TAPI]      |- [CCPP]
  921.    |      |         |- [WIN32DDK]  |- [FORTRAN]
  922.    |      |         |- [WIN32SDK]  |- [MASM]
  923.    |      |         |- [WINSDK]    |- [MFC]
  924.    |      |                        |- [MSVC32]
  925.    |      |                        |- [MSVCWIN]
  926.    |      |                        |- [TEST]
  927.    |      |                        |- [VB]
  928.    |      |       -----------------|-----------------------
  929.    |      |      |                        |               |
  930.    |      |     [KB]                   [PUBLIC]       [UNSUP-ED]
  931.    |      |      |- README.TXT (Note 1)   |- INDEX.TXT  (empty)
  932.    |      |      |- INDEX.TXT  (Note 2)   |- *.EXE (Note 3)
  933.    |      |      |- [Q*    ]
  934.    |      |
  935.    |      |- [DRG] (Developer Relations Group)
  936.    |      |
  937.    |      |- [MSJ] (Source code from Systems Journal)
  938.    |      |
  939.    |      |- [MSDN] (Developers Network) (Note 4)
  940.    |          |- [CD7] (some VB stuff, get index)
  941.    |          |- [NEWUP] ('C' code for animation & pic edit control)
  942.    |                      (also WHATHLP.ZIP)
  943.    |
  944.    |- [MISC] (Internet Engineering Task Force docs)
  945.    |
  946.    |- [MSATWORK]
  947.    |
  948.    |- [MSFT] (For MS Investors)
  949.    |
  950.    |- [PEROPSYS]
  951.    |     |- [MMEDIA]
  952.    |     |- [MOUSE]
  953.    |     |- [MSDOS]
  954.    |     |- [WFW]
  955.    |     |- [WIN3X]
  956.    |     |- [WIN-NEWS]
  957.    |
  958.    |- [SOFTLIB]
  959.         |- SLLIST.TXT (files in [MSLFILES] 1200+ entries) (Note 5)
  960.         |- [MSLFILES] (Note 6)
  961.  
  962.    Notes:
  963.    1: Read this to understand the Q* directory structure.
  964.    2: 1400+ entries.
  965.    3: DLL/VBX updates.
  966.    4: MSDN has been reorganised and many files have been renamed and
  967.       put in [CD7].  If you see MSDN-IDX.ZIP, it's the index for the
  968.       old file arrangement, ignore it.  The index/abstracts viewer
  969.       (was msdn100.zip) is being updated by the author and should be
  970.       available from CICA and mirrors in a few days.
  971.    5: If you find 'duplicate' entries at the end of this file they
  972.       are a list of additions/updates.
  973.    6: Contains VBKB.EXE (VB_BUGS & VB_TIPS) 1.5Mb !
  974.       VBKB_FT.EXE (VB_BUGS & VB_TIPS *with text search*) 4.2Mb !!
  975.  
  976.    Map with notes supplied by Richard Mason (richard@whitney.demon.co.uk)
  977.    Please mail him direct if you discover any significant inconsistencies
  978.    between this map and the real world.
  979.  
  980. 5. Where can I get good up-to-date information about VB?
  981.  
  982.    If you do any VB programming at all, you really should get the
  983.    latest copy of the Microsoft Knowledge Base from one of the sources
  984.    listed above!  The filename is VBKB.EXE or VBKB_FT.EXE for the
  985.    version with full text searching. The Knowledge Base is a Windows
  986.    help formatted document that is updated almost monthly. (Beware:
  987.    The files are huge, as noted above!)
  988.  
  989.    The EXE files on ftp.microsoft.com (and other places) are simple
  990.    self-extracting files. They don't do any automatic updating of your
  991.    system, just dump the file(s) inside them in the current directory
  992.    on your disk, uncompressed and ready for use. Just replace the old
  993.    files on your system with the new files (same name, usually).
  994.  
  995.    This FAQ (ahem) is a pretty good source as a digest of many of the
  996.    VB issues that are discussed in the comp.lang.basic.visual
  997.    newsgroup, but as such the information contained in this FAQ may
  998.    not have been thoroughly tested or verified.
  999.  
  1000.    For easier access to and use of this FAQ document, get the Windows
  1001.    Help file format FAQ doc by anonymous ftp to quasar.sba.dal.ca and
  1002.    look under /www/hlp. The .hlp version is made by Tim Roberts
  1003.    (TJR@SBACOOP.SBA.DAL.CA). It is HIGHLY RECOMMENDED.
  1004.  
  1005.    Dave McCarter puts out a nice Windows help formatted document
  1006.    called "Visual Basic Tips and Tricks". A good resource with
  1007.    information that isn't found in the Knowledge Base. It can be found
  1008.    by anonymous ftp to ftp.cica.indiana.edu
  1009.    /pub/pc/win3/programr/vbasic/ as VBTIPS??.ZIP, where '??' is the
  1010.    version number (yes, get the one with the highest number).
  1011.  
  1012.    There is presently an effort to put together a VB code library so
  1013.    that VB users can share their best - and trickiest - programming
  1014.    work. The code library project is being spear headed by Hein Ragas
  1015.    who has managed to get a directory on CICA for code snippets to be
  1016.    deposited. Stayed tuned to comp.lang.basic.visual for more
  1017.    information.
  1018.  
  1019.    There's a VISBAS-L mailing list for Visual Basic. You can subscribe
  1020.    to this mailing list by sending an email to
  1021.  
  1022.      LISTSERV@tamvm1.tamu.edu
  1023.  
  1024.    Place the following text in the *body* of the message (no, not the
  1025.    subject line):
  1026.  
  1027.      SUB VISBAS-L Real Name
  1028.  
  1029.    Where Real Name is just that, *your full real name* not your email
  1030.    address. Note that the traffic on this list may overflow your
  1031.    mailbox if you have a limited mail buffer. Expect around 40-50
  1032.    messages every weekday, a bit less during weekends. Also, to
  1033.    unsubscribe, do as above but with "UNSUB" in the body of the
  1034.    message to the LISTSERV address, *not* to the VISBAS-L list address
  1035.    itself (Believe it or not, we usually receive 2-3 sub/unsub mails
  1036.    every day on the list, and we're really fed up!)
  1037.  
  1038.    Sorry, I know no mailservers or other Internet resources dedicated
  1039.    to VBA specifically. Send me any information you may have, and I'll
  1040.    bring it on.
  1041.  
  1042.    There are several Usenet newsgroups dedicated to MS Windows
  1043.    programming and use. There's recently been a major group creation
  1044.    process. Those groups that may be of special interest to VB
  1045.    programmers are marked with *:
  1046.  
  1047.    comp.os.ms-windows.misc
  1048.    comp.os.ms-windows.programmer.misc
  1049.    comp.binaries.ms-windows
  1050.    comp.os.ms-windows.advocacy
  1051.    comp.os.ms-windows.announce
  1052.    comp.os.ms-windows.apps
  1053.    comp.os.ms-windows.nt.misc
  1054.    comp.os.ms-windows.nt.setup
  1055.    comp.os.ms-windows.programmer.tools     *
  1056.    comp.os.ms-windows.programmer.win32
  1057.    comp.os.ms-windows.setup                *
  1058.    comp.os.ms-windows.programmer.winhelp   *
  1059.    comp.os.ms-windows.programmer.networks
  1060.    comp.os.ms-windows.programmer.graphics
  1061.    comp.os.ms-windows.programmer.controls  *
  1062.  
  1063.    The latest groups have been added to split the enormous traffic on
  1064.    the *.misc groups down in managable chunks. However, the second
  1065.    group (.programmer.misc) contains lots of interesting info (mostly
  1066.    C related), if you have the time to read it all!
  1067.  
  1068.    Also note comp.lang.pascal which is a very good newsgroup for
  1069.    Pascal, including Borland Pascal and Turbo Pascal for Windows.
  1070.  
  1071.    Please don't use this guide to find out where you should crosspost
  1072.    VB questions. Check the charter for each group before posting to
  1073.    it. If you are sure that your crosspost is legitimate, please note
  1074.    the crossposting in the text.
  1075.  
  1076.    NOTE: PLEASE don't post VB stuff to comp.lang.visual. This group
  1077.    has *nothing* to do with Visual Basic, and the academics discussing
  1078.    "real" visual programming there are very, very annoyed at what they
  1079.    call "quasi-visual" stuff and postings about those languages to
  1080.    their group.
  1081.  
  1082.    If you have a Compu$erve account, you will find a forum for Visual
  1083.    Basic there, including some support from Microsoft:
  1084.  
  1085.    MS BASIC Forum    (GO MSBASIC)
  1086.  
  1087.    Message Sections Available:             Libraries Available:
  1088.     1 Forum News/Info                       1 MS Info and Index
  1089.     2 Setup Wizard/Kit                      2 Setup Wizard/Kit
  1090.     3 Data Access Objects                   3 Data Access Objects
  1091.     4 The Data Control                      4 The Data Control
  1092.     5 Programming Issues                    5 Programming Issues
  1093.     6 ODBC Connectivity                     6 ODBC Connectivity
  1094.     7 SQL Queries                           7 SQL Queries
  1095.     8 ProEdition Controls                   8 ProEdition Controls
  1096.     9 Calling API's/DLL's                   9 Calling API's/DLL's
  1097.    10 Using OLE/DDE                        10 VBWIN-ODBC/Database
  1098.    11 MSCOMM control                       11 MSCOMM control
  1099.    12 MCI/MAPI controls                    12 MCI/MAPI controls
  1100.    13 DOS Visual Basic                     13 DOS Visual Basic
  1101.    14 DOS and Mac Basic                    14 DOS and Mac Basic
  1102.    15 Suggestions/Mktg.                    15 Suggestions/Mktg.
  1103.    16 CDK                                  16 CDK
  1104.    17 3rd Party Products                   17 3rd Party Products
  1105.  
  1106.    There are magazines dedicated to VB. The best known is Fawcett
  1107.    Technical Publications' _Visual Basic Programmer's Journal_ (VSPJ).
  1108.    Phone 800-848-5523 (for US credit card orders) or 303-541-0610
  1109.    (int'l and US other orders), Email 74003.224@compuserve.com to
  1110.    Shirley Modric for subscription info. Address is 280 Second Street,
  1111.    Suite 200, Los Altos, CA 94022-3603 USA  (Note: for completeness
  1112.    other VB magazines should be listed, and I would like to receive
  1113.    info on those!)
  1114.  
  1115. 6. Are there any examples of commercial applications built using
  1116.    Visual Basic?
  1117.  
  1118.    Profit by Microsoft was written mostly in Visual Basic. In fact,
  1119.    Profit was one of three programs selected as PC Magazine's Editor's
  1120.    Choice among Windows small business accounting packages.
  1121.  
  1122.    Microsoft uses VB extensively for smaller utilities. 3 of the small
  1123.    apps in the Windows and Windows for Workgroups Resource Toolkits
  1124.    are written in VB. Also, if you have the Microsoft Bookshelf CD-
  1125.    ROM, you will notice that the MVOPTION.EXE program, which is an
  1126.    "options" program for MS Viewer, is created in VB.
  1127.  
  1128.    Note: The existence of VBX files in a package doesn't ecessarily
  1129.    mean that it was written in VB. The most popular C++ compilers also
  1130.    support VBXes.
  1131.  
  1132.  
  1133. C. COMMON VISUAL BASIC PROGRAMMING QUESTIONS
  1134.  
  1135.  
  1136. 1. What's the difference between MODAL and MODELESS forms?
  1137.  
  1138.    MODAL forms are forms which require user input before any other
  1139.    actions can be taken place. In other words, a modal form has
  1140.    exclusive focus until it is dismissed. When showing a modal form,
  1141.    the program pauses at the SHOW command until the modal form is
  1142.    either hidden or unloaded. The internal MsgBox and InputBox forms
  1143.    are examples of modal forms. To show a form modally, use the
  1144.    syntax:
  1145.  
  1146.      MyForm.SHOW 1
  1147.  
  1148.    MODELESS forms are those which are shown but do not require
  1149.    immediate user input. MDI child forms are always modeless. To show
  1150.    a form modeless, use the syntax:
  1151.  
  1152.      MyForm.SHOW
  1153.  
  1154. 2. When/Why should I use Option Explicit?
  1155.  
  1156.    Option Explicit forces you to declare all variables before using
  1157.    them. Opinions vary greatly on this subject. The main reason to use
  1158.    the OPTION EXPLICIT statement at the top of all modules is to
  1159.    minimize the amount of bugs introduced into your code by
  1160.    misspelling a variable name. Most variants of BASIC (including VB)
  1161.    have the capability to create variables 'on the fly' (without any
  1162.    declarations). This capability can be a double edged sword.
  1163.  
  1164.    At the minimum, some suggest using the DEFINT A-Z statement in leu
  1165.    of OPTION EXPLICIT. This statement will cause any variables which
  1166.    are created on the fly to be created as integers as opposed to
  1167.    variant (VB 3.0) or single precision (VB 1.0 and 2.0). (Integers
  1168.    take up less memory).
  1169.  
  1170.    The OPTION EXPLICIT statement causes VB to 'disable' its ability to
  1171.    create variables on the fly. Thus, all variables must be declared
  1172.    using a DIM or REDIM statement. All variables not declared will
  1173.    cause an error when the OPTION EXPLICIT statement is used. This
  1174.    will eliminate bugs caused by a misspelled variable. The option
  1175.    works module-wide, so you can have some modules with and some
  1176.    without this option in your project.
  1177.  
  1178. 3. Why does everybody say I should save in TEXT not BINARY?
  1179.  
  1180.    Actually, saving in binary mode is a bit faster, so why do we
  1181.    recommend you to save in text?
  1182.  
  1183.    If you save the source and the project as text, it becomes ASCII
  1184.    (or really, ANSI) code that you can edit with any text editor or
  1185.    (if you are careful when you save) word processor. If you save in
  1186.    binary, only the VB development environment, current or later
  1187.    versions, will understand the code. The Setup Wizard can not scan
  1188.    binary projects. Also, source documenters and other programming
  1189.    tools usually require text mode. If you use text, you can use a
  1190.    simple text editor (ie. notepad) to cut and paste code from other
  1191.    source/form modules into your current project. Some 'tricks' (like
  1192.    making an array of 1 control into a single non-array control again)
  1193.    is easily done with an editor but not that easy in the environment.
  1194.    If you want to print your project to paper the file|print option in
  1195.    the VB environment is often not good enough; you may want to import
  1196.    the text files into your word processor. And, finally, if something
  1197.    goes wrong (only one byte is changed!) you may be out of luck in
  1198.    binary mode. In text mode you will more easily be able to fix it.
  1199.  
  1200. 4. Is the Variant type slower than using other variable types?
  1201.  
  1202.    Generally, yes, if we are talking numeric variable types. The
  1203.    Variant type also increases memory overhead. To test the speed
  1204.    difference, try the following piece of code in something like a
  1205.    button_click event and keep the debug window on the screen:
  1206.  
  1207.      Dim Va As Variant
  1208.      Dim In As Integer
  1209.      T1! = Timer
  1210.      For i% = 1 To 32766
  1211.        Va = i%
  1212.      Next i%
  1213.      T2! = Timer
  1214.      Debug.Print "With variant:  "; Format$((T2! - T1!), "0.0000")
  1215.      T1! = Timer
  1216.      For i% = 1 To 32766
  1217.        In = i%
  1218.      Next i%
  1219.      T2! = Timer
  1220.      Debug.Print "With integer:  "; Format$((T2! - T1!),"0.0000")
  1221.  
  1222.    This test shows (on our test system) that integers are ~60% faster!
  1223.    However, for strings there where no real difference, or in some
  1224.    instances, variants were faster than strings for routines with
  1225.    heavy conversion usage. For the best result in your application,
  1226.    test your routines directly.
  1227.  
  1228. 5. How do I make a text box not beep but do something else when I hit
  1229.    the Enter key?
  1230.  
  1231.    Put "something else" in your _KeyPress event, depending on what you
  1232.    really want. This code example makes *nothing* happen, for an
  1233.    extended period of time:
  1234.  
  1235.      Sub Text1_KeyPress (KeyAscii As Integer)
  1236.          If KeyAscii = 13 Then   '13 is Key_Return
  1237.             KeyAscii = 0
  1238.          End If
  1239.      End Sub
  1240.  
  1241.    This might not be a very nice thing to do, since your users usually
  1242.    have some intention when they press Enter. Often they will want to
  1243.    jump to the next control, like the Tab key does. To have the Enter
  1244.    key emulate the Tab key action, you will need to add the line
  1245.    'SendKeys "{tab}"' above 'KeyAscii=0' in the example above (Yes, I
  1246.    thought KeyAscii=9 works but it doesn't! Tab is obviously handled
  1247.    by Windows on a lower level).
  1248.  
  1249.    By the way, you'll also find this in the Microsoft VB Knowledge
  1250.    Base (see KB Q78305 and Q85562).
  1251.  
  1252.    Note: If MultiLine=True you will *not* want to disable the normal
  1253.    behaviour of the Enter key.
  1254.  
  1255. 6. How do I implement an incremental search in list/dir/combo/file
  1256.    boxes?
  1257.  
  1258.    This is your lucky day. Dan Champagne (Dan_Champagne@dell.com) made
  1259.    some VB code (no DLLs are necessary!) which easily provides this
  1260.    feature for your applications:
  1261.  
  1262.      ' Code by Dan Champagne
  1263.      ' 4/18/94
  1264.  
  1265.      ' This code can be used to do an incremental search in either a
  1266.      ' list box, dir, combo, or a file box. The following code is set
  1267.      ' for a file box called FILE1. To make it work with a list box, or
  1268.      ' a file box with a different name, change all occurences of FILE1
  1269.      ' with whatever you or VB has named your list, combo, dir, or file box.
  1270.      ' There are two places where you will need to change these. They are
  1271.      ' on the last couple of lines in the KeyPress code.
  1272.      ' Also, thanks to John Tarr for helping debug the code.
  1273.  
  1274.      'In a .BAS file, add the following:
  1275.      'searchme$ is a global vaiable that will keep track of what the
  1276.      'user has typed so far.
  1277.      Global searchme$
  1278.  
  1279.      'The following needs to be on one line.
  1280.      Declare Function SendMessageBystring& Lib "User" ALIAS
  1281.      |"Send Message" (ByVal hWnd%, ByVal wMsg%, ByVal
  1282.      |wParam%, ByVal lParam$)
  1283.  
  1284.      Global Const WM_USER = &H400
  1285.      Global Const LB_SELECTSTRING = (WM_USER + 13)
  1286.      Global Const LB_FINDSTRING = (WM_USER + 16)
  1287.  
  1288.      'In File1 under keydown, add the following:
  1289.      'This checks if the user has pressed the up or down arrow.
  1290.      'If they have, reset searchme$ to "".
  1291.      If KeyCode = 40 Or KeyCode = 38 Then
  1292.         searchme$ = ""
  1293.      End If
  1294.  
  1295.      'In File1 under lostfocus, pathchange, patternchange, and click add:
  1296.  
  1297.      'If the user has done any of the above, reset the searchme$
  1298.      'string.
  1299.      searchme$ = ""
  1300.  
  1301.      'In File1 under keypress add:
  1302.  
  1303.      Dim result&
  1304.  
  1305.      Select Case KeyAscii
  1306.          Case 8     'Backspace
  1307.              If searchme$ <> "" Then
  1308.                  searchme$ = Left$(searchme$, Len(searchme$) - 1)
  1309.              Else
  1310.                 File1.ListIndex = 0
  1311.              End If
  1312.              KeyAscii = 0
  1313.              Exit Sub
  1314.          Case 27    'Escape
  1315.              searchme$ = ""
  1316.              KeyAscii = 0
  1317.              Exit Sub
  1318.          Case 13    'Enter
  1319.              searchme$ = ""
  1320.              KeyAscii = 0
  1321.              Exit Sub
  1322.          Case Asc("a") To Asc("z"), Asc("A") To Asc("Z"), Asc("'"),
  1323.          |Asc("."), Asc(" "), Asc("0") To Asc("9")
  1324.              searchme$ = searchme$ & Chr$(KeyAscii)
  1325.              KeyAscii = 0
  1326.      End Select
  1327.  
  1328.      result& = SendMessageBystring(FILE.hWnd, LB_FINDSTRING,
  1329.      |0, searchme$)
  1330.  
  1331.      If result& = -1 Then
  1332.         searchme$ = Left$(searchme$, Len(searchme$) - 1)
  1333.      Else
  1334.         result& = SendMessageBystring(FILE1.hWnd, LB_SELECTSTRING,
  1335.         |-1, searchme$)
  1336.      End If
  1337.  
  1338. 7. How do I get the Tab key to be treated like a normal character?
  1339.  
  1340.    You must set TabStop = False for ALL controls on the active form.
  1341.    Then you will be able to insert "tab" (chr 9) characters in
  1342.    controls like the text box.
  1343.  
  1344.    If you feel you need the Tab key to behave "normal" (ie. jump to
  1345.    next control) outside this specific control, it is trivial to
  1346.    emulate its functionality in code:
  1347.  
  1348.      Sub Command1_KeyDown (KeyCode As Integer, Shift As Integer)
  1349.        If KeyCode = 9 Then
  1350.          If Shift = 0 Then
  1351.             Command2.SetFocus 'Tab=Next control
  1352.          ElseIf Shift = 1 Then
  1353.             Command3.SetFocus 'Shift-Tab=Prev.ctrl.
  1354.          End If
  1355.        End If
  1356.      End Sub
  1357.  
  1358.    ...etc.
  1359.  
  1360. 8. How do I make an animated icon for my program?
  1361.  
  1362.    For an example on how you change the icon for your application as
  1363.    it is displayed when it is minimized, see the example REDTOP in the
  1364.    \samples\picclip directory for VB/Win 3 Pro. This demonstrates a
  1365.    fancy animated icon.
  1366.  
  1367. 9. What is passing by reference?
  1368.  
  1369.    Arguments are either passed by reference or by value. When they are
  1370.    passed by value, they cannot be changed by the procedure or
  1371.    function they are passed to. They *can* be altered when passed by
  1372.    reference, since passing by reference is just passing the address.
  1373.  
  1374.    Note that procedures are less strict about variable types when you
  1375.    use BYVAL. If you declare that your Sub takes a Variant, VB takes
  1376.    that seriously and gives a nasty "mismatch error" if you try to
  1377.    pass ie. a string to it. Make it ByVal (at the cost of some speed)
  1378.    and your sub will be more tolerant.
  1379.    Also note the following nasty trap:  Arguments are passed by
  1380.    reference unless enclosed by parentheses or declared using the
  1381.    ByVal keyword. [VBWin Language Ref., p. 55]
  1382.  
  1383. 10.I get a "file not found" error on the IIF function when I
  1384.    distribute by program. Uh?
  1385.  
  1386.    There's a documentation error, since the manual does not tell you
  1387.    that the IIF function requires the file MSAFINX.DLL to be
  1388.    distributed with your application. No, IIF is not financial (I
  1389.    should know, I study finance right now, or at least I should be
  1390.    doing that ;-] ).
  1391.  
  1392. 11.Is there any way to pass a variable to a form apart from using
  1393.    global variables?
  1394.  
  1395.    The standard workaround is to put an invisible text box (or caption
  1396.    or any other control that suits your use.) on the target form and
  1397.    access it by Form.textbox = "value". Then you can use the Change
  1398.    event of that control to do anything you want in that form. Also,
  1399.    check out the .Tag property which is a "what-you-want" property
  1400.    where you can hook any string you want onto a control. This
  1401.    property can also be accessed from other modules.
  1402.    [Dave Mitton (mitton@dave.enet.dec.com)]
  1403.  
  1404. 12.How should dates be implemented so they work with other language
  1405.    and country formats?
  1406.  
  1407.    If you use ie. MM/DD/YY format dates in a program, you will get
  1408.    either a runtime-error (ie. month>12) or the wrong date (ie. March
  1409.    12 instead of December 3) when your program is used in Europe. And
  1410.    vice versa, of course. Even Microsoft's own example programs (like
  1411.    the MAPI sample) make this stupid mistake and fail miserably. Use
  1412.    the Format command to make sure you get the date you want. For
  1413.    example:
  1414.  
  1415.      strTodaysDate = Format[$](Now, "Short Date")
  1416.  
  1417.    As a side note, Microsoft has taken much heat on the newsgroup for
  1418.    VB's bad support for internationalization! Just try to make a date
  1419.    literal in source code that works everywhere as a little exercise.
  1420.    Answer elsewhere in this document. No prizes  :-)
  1421.  
  1422. 13.Can a VB application be an OLE server?
  1423.  
  1424.    No. You'll have to use an external DLL/VBX. If you see any
  1425.    examples, please tell the newsgroup.
  1426.  
  1427. 14.How do I dial a phone number without using the MSCOMM VBX?
  1428.  
  1429.    The MSCOMM VBX that comes with VB/Pro is great for creating
  1430.    communication programs, but it's overkill for dialing a phone
  1431.    number. Try the following code:
  1432.  
  1433.      PhoneNumber$ = "(123)456-7890"
  1434.      Open "COM2" For Output As #1   'or COM1
  1435.      Print #1, "ATDT" & PhoneNumber$ & Chr$(13)
  1436.      Close #1
  1437.  
  1438. 15.I have [several] megabytes of memory. Why do I get an "out of
  1439.    memory" error?
  1440.  
  1441.    Unfortunately, Microsoft has been more famous for memory barriers
  1442.    than anything else. This is a late descendant of the infamous 640K
  1443.    barrier that has been plaguing us for years. Although Windows
  1444.    allows the user to access several megabytes of memory, it uses two
  1445.    limited (64K) memory areas called User Heap and GDI Heap for some
  1446.    specific data structures. Go to the Help|About box in Program
  1447.    Manager to see the percentage of free resources in the *most*
  1448.    exhausted heap. If these areas are exhausted, you are out of luck.
  1449.    VB programs are unfortunately rather greedy on these structures.
  1450.    Windows 4 is supposed to free us from this limitation...
  1451.  
  1452.    Note that every visible control (ie every button) is a window to
  1453.    Windows. Every new control takes up some bytes in the precious User
  1454.    heap.
  1455.  
  1456.    Also, there is another way to run out of memory in Windows, not
  1457.    related to VB. Windows requires free Upper Memory Area (UMA, also
  1458.    called Upper Memory Blocks, not to be confused with High RAM, which
  1459.    is the first 64K of extended memory) to do certain tasks. If you
  1460.    use QEMM or DOS 6+ MemMaker and you have many device drivers
  1461.    (network, etc) this area may have been filled up before you launch
  1462.    Windows. You will then be unable to start applications, even though
  1463.    you have plenty of free RAM. The problem can be solved with careful
  1464.    memory setup, but this is far beyond the scope of this FAQ.
  1465.  
  1466.    On a completely unrelated problem: When you run a program with an
  1467.    outline control with some ATI graphics cards, it may crash with
  1468.    just that error message. (see Knowledge Base Q100194 PRB: "Some ATI
  1469.    Video Drivers Hang When Using MSOUTLIN.VBX")
  1470.  
  1471. 16.How do I mimic a toggle button?
  1472.  
  1473.    The only "fix" we know for this problem is to use a picture or
  1474.    image control to mimic the action of a button or button3d control.
  1475.    You need two bitmaps, one for buttonup and one for buttondown (and
  1476.    perhaps one more for inactive state). This is a kluge, we know.
  1477.    Look at the button bar used in the MDINOTE sample program supplied
  1478.    with VB for an example of this.
  1479.  
  1480. 17.How do I get my application on top?
  1481.  
  1482.    To force a form to the front of the screen, do the following
  1483.    command:
  1484.  
  1485.      Form1.ZOrder
  1486.  
  1487.    To make the application *stay* on top, put the Zorder command in a
  1488.    Timer event repeatedly called, say, every 1000 msecs. This makes a
  1489.    "softer" on-top than other methods, and allows the user to make a
  1490.    short peek below the form.
  1491.  
  1492.    There are two different "Zorder"'s of forms in Windows, both
  1493.    implemented internally as linked lists. One is for "normal"
  1494.    windows, the other for real "topmost" windows (like the Clock
  1495.    application which is distributed with MS Windows). The Zorder
  1496.    command above simply moves your window to the top of the "normal"
  1497.    window stack. To make your window truly topmost, use the
  1498.    SetWindowPos API call like this:
  1499.  
  1500.      'Make these declares:
  1501.      Declare Function SetWindowPos Lib "user" (ByVal h%,
  1502.      |ByVal hb%, ByVal x%, ByVal y%, ByVal cx%, ByVal cy%,
  1503.      |ByVal f%) As Integer
  1504.      Global Const SWP_NOMOVE = 2
  1505.      Global Const SWP_NOSIZE = 1
  1506.      Global Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
  1507.      Global Const HWND_TOPMOST = -1
  1508.      Global Const HWND_NOTOPMOST = -2
  1509.  
  1510.      'To set Form1 as a TopMost form, do the following:
  1511.      res% = SetWindowPos (Form1.hWnd, HWND_TOPMOST, 0, 0,
  1512.      |0, 0, FLAGS)
  1513.      'if res%=0, there is an error
  1514.  
  1515.      'To turn off topmost (make the form act normal again):
  1516.      res% = SetWindowPos (Form1.hWnd, HWND_NOTOPMOST, 0, 0,
  1517.      |0, 0, FLAGS)
  1518.  
  1519. 18.Is there a way to break long lines in VB code?
  1520.  
  1521.    There is unfortunately no line continuation character in VB/Win
  1522.    3.0. Excel 5 VBA does, however, use Space+Underscore (" _") as a
  1523.    line continuation character, and we hope this will be included in
  1524.    the next version of VB.
  1525.  
  1526.    There are a few tricks you can use to reduce line length, but
  1527.    unfortunately there is very little to do with DECLARE statements
  1528.    which can get very long.
  1529.  
  1530.    Print your source in landscape   :-/
  1531.  
  1532. 19.How do I remove/change the picture property of a control at design
  1533.    time?
  1534.  
  1535.    Mark the (bitmap) or (icon) text in the property window and press
  1536.    Del or Backspace. "No!" I hear you cry, "It doesn't work". Well, it
  1537.    does if you first select the object from the combo box at the top
  1538.    of the Properties Window, and then immediately afterwards
  1539.    doubleclick (or paint over) the "(bitmap)" text and press Del.
  1540.    Alternatively, just click on another control, then click back to
  1541.    the first control. Now Del works. Who said "bug"?
  1542.  
  1543.    If you want to paste your picture directly into the VB program by
  1544.    pressing Ctrl-V when you are editing the picture property, you will
  1545.    have to use a semilar procedure: select the control, select the
  1546.    property, press Ctrl-V. If you try it again without deselecting the
  1547.    control first (or selecting it from the combo box), it doesn't
  1548.    work.
  1549.  
  1550. 20.Is a [foo] VBX/DLL available as shareware/freeware?
  1551.  
  1552.    Part 4 of the FAQ is Adam Harris' excellent "Shareware Custom
  1553.    Controls List". Please consult this list before you post this
  1554.    question.
  1555.  
  1556.    The following type of controls are NOT known to be available as
  1557.    sw/pd/fw for Visual Basic, only as commercial toolboxes (If you
  1558.    feel like making any of these for VB and sharing it for a modest
  1559.    fee, you will become very popular!):
  1560.  
  1561.    a. ZModem communication control/source
  1562.  
  1563.    b. Rich Text Format-control or other mixed font/word processor
  1564.       control (rumours indicate that this will be in the Windows 4
  1565.       API, and therefor available from VB)
  1566.  
  1567.    c. Matrix math
  1568.  
  1569.    If any of these should be available, please tell us.
  1570.  
  1571. 21.How do I make my applications screen-resolution independent?
  1572.  
  1573.    There are two methods: Either get a custom control that does the
  1574.    job for you, or you write lots of complicated code in the Load and
  1575.    Resize events.
  1576.  
  1577.    For the first option, check out VideoSoft's $hareware VSVBX.VBX
  1578.    (download VSVBX.ZIP from Cica or mirrors). It has a will of its
  1579.    own, as you will experience, but it's generally better than trying
  1580.    what is described below.
  1581.  
  1582.    For the brave (or stupid), try to write "screen resolution-smart
  1583.    code" in the form's Load event. If the form is resizable (normally
  1584.    it should be), you'll have to put some magic into the Resize event
  1585.    as well. There are 4 rules of thumb:
  1586.  
  1587.    a. Do not trust the form's height and width properties.  These
  1588.       measure the entire form, not the client area where your controls
  1589.       are.  To see this in action, create a simple applet with the
  1590.       only code being in the resize event which resets a line control
  1591.       from 0,0 to the form's width,height properties.  The top left
  1592.       corner is in the client area, the bottom right corner
  1593.       disappears.  The API call GetClientRect will return the size of
  1594.       the client area in pixels.  You can use the screen object's
  1595.       TwipsPerPixelX and TwipsPerPixelY properties to convert from
  1596.       pixels to twips. If that's not enough, GetWindowRect will return
  1597.       the actual size of the entire form, client and non-client areas
  1598.       combined.  GetSystemMetrics will return individual pieces of
  1599.       things like border width/hight, caption height, etc.
  1600.  
  1601.    b. Use the TextWidth and TextHeight properties.  You can use them
  1602.       off the form if all your controls share the same font, otherwise
  1603.       use them off of the given control.  I typically do a
  1604.       TextWidth("X") and TextHeight("X") to get a value which I use as
  1605.       a margin between controls.  I grab these values on startup, and
  1606.       multiply it by 2, 1.5, .75, .5, .25 to get varying margin sizes,
  1607.       depending on how close or far apart I want to space things. If
  1608.       your control has an autosize property, you may want to use it,
  1609.       and then calculate the maximum width of a control in a given
  1610.       "column" of controls on your screen and position all of them
  1611.       accordingly.
  1612.  
  1613.    c. Try not to resize your controls in the resize event.  You will
  1614.       spawn another resize event in the process.  Of course, you can
  1615.       use a flag to determine whether the resize event is the original
  1616.       event or the spawned one.  Using the load event, and setting the
  1617.       forms borders to fixed minimizes the amount of work you have to
  1618.       do.
  1619.  
  1620.    d. Make sure you use a consistant scale.  I don't even bother with
  1621.       the scale properties, but instead just convert pixels (from API
  1622.       calls) into twips and be done with it.  If you do use scale
  1623.       properties, be sure you convert your numbers correctly.  I had
  1624.       no end of difficulty when I failed to convert into twips with
  1625.       one number that was used in a series of calculations to position
  1626.       controls.  Also be sure all your controls share the same SCALE -
  1627.       - another nasty problem I had before I gave up on them
  1628.       completely.
  1629.       [Thanks to our generous anonymous source "D"]
  1630.  
  1631. 22.How do I do Peek and Poke?
  1632.  
  1633.    VB provides no mechanism for this.  There are several 3rd party
  1634.    pkgs. which provide this.  Also, this often comes up in regards to
  1635.    the comm ports and you can many times do what you want with the
  1636.    mscomm.vbx.
  1637.    [George Tatge (gat@csn.org)]
  1638.  
  1639.    See also the Shareware Custom Controls List FAQ file
  1640.  
  1641. 23.Why doesn't "my string" & Chr$(13) do what I want?
  1642.  
  1643.    You need to also add a Chr$(10):  "my string" & Chr$(13) & Chr$(10)
  1644.    will give you a CR and LF.
  1645.    [George Tatge (gat@csn.org)]
  1646.  
  1647. 24.How do I prevent multiple instances of my program?
  1648.  
  1649.    In VB 3, the property App.PrevInstance is set to True if an older
  1650.    instance of the program already exist.
  1651.  
  1652.    The following piece of code, stolen from MS KB article Q102480,
  1653.    will activate the old instance and then terminate itself:
  1654.  
  1655.      Sub Form_Load ()
  1656.        If App.PrevInstance Then
  1657.           SaveTitle$ = App.Title
  1658.           App.Title = "... duplicate instance."      'Pretty, eh?
  1659.           Form1.Caption = "... duplicate instance."
  1660.           AppActivate SaveTitle$
  1661.           SendKeys "% R", True
  1662.           End
  1663.        End If
  1664.      End Sub
  1665.  
  1666.    Note that you shouldn't prevent multiple instances of your
  1667.    application unless you have a good reason to do so, since this is a
  1668.    very useful feature in MS Windows. Windows will only load the code
  1669.    and dynamic link code *once*, so it (normally) uses much less
  1670.    memory for the later instances than the first.
  1671.  
  1672.  
  1673. D. ADVANCED VISUAL BASIC PROGRAMMING ISSUES
  1674.  
  1675.  
  1676. 1. How do I tell when an application executed using the SHELL command
  1677.    is finished?
  1678.  
  1679.    Shell() doesn't really return a task handle, it returns an instance
  1680.    handle. Any documentation that says otherwise is wrong. But never
  1681.    mind that; the answer to your question is to use the API call
  1682.    GetModuleUsage.
  1683.  
  1684.      'Put this in the general declarations of your form/module
  1685.      Declare Function GetModuleUsage Lib "Kernel" (ByVal
  1686.      |hModule As Integer) As Integer
  1687.  
  1688.      'Here's where you shell out to the other program
  1689.      intHandle = Shell("PROGRAM.EXE")
  1690.      Do While GetModuleUsage(intHandle) > 0
  1691.         DoEvents
  1692.      Loop
  1693.    [Kenn Nesbitt, Microsoft Consulting Services (kennn@netcom.com)]
  1694.  
  1695. 2. How do I access C style strings?
  1696.  
  1697.    Use the 'lstrlen' and 'lstrcpy' calls found in the Kernel DLL.
  1698.  
  1699. 3. How can I change the printer Windows uses in code without using the
  1700.    print common dialog?
  1701.  
  1702.    You can change the printer the VB 3.0 Printer object is pointing to
  1703.    programmatically (without using the common dialogs). Just use the
  1704.    WriteProfileString API call and rewrite the [WINDOWS],  DEVICE
  1705.    entry in the WIN.INI file!  VB will instantly use the new printer,
  1706.    when the next Printer.Print command is issued. If you get the old
  1707.    printer string before you rewrite it (GetProfileString API call),
  1708.    you can set it back after using a specific printer. This technique
  1709.    is especially useful, when you want to use a FAX printer driver:
  1710.    Select the FAX driver, send your fax by printing to it and switch
  1711.    back to the normal default printer.
  1712.    [Hajo Schmidt (hajo@bwl.bwl.th-darmstadt.de)]
  1713.  
  1714.    It is recommended (and polite, as we're multitasking) to send a
  1715.    WM_WININCHANGE (&H1A) to all windows to tell them of the change.
  1716.    Also, under some circumstances the printer object won't notice that
  1717.    you have changed the default printer unless you do this.
  1718.  
  1719.      Declare Function SendMessage(ByVal hWnd As Integer,
  1720.      |ByVal wMsg As Integer, ByVal wParam As Integer,
  1721.      |lParam As Any) As Long
  1722.      Global Const WM_WININICHANGE = &H1A
  1723.      Global Const HWND_BROADCAST = &HFFFF
  1724.      ' Dummy means send to all top windows.
  1725.  
  1726.      ' Send name of changed section as lParam.
  1727.      lRes = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0,
  1728.      |ByVal "Windows")
  1729.    [Nic Gibson (nic@skin.demon.co.uk)]
  1730.  
  1731. 4. Any tips for speeding up VB?
  1732.  
  1733.    Who said "code in C"???? ;-)
  1734.  
  1735.    a. When SHOWing a form with lots of bound controls, have a blank
  1736.       frame covering everything. Then, in the Form_Activate event, set
  1737.       the Frame.Visible = False. This greatly speeds the display of
  1738.       the form and hides ugly thrashing as the data controls
  1739.       initialize.
  1740.       [Christopher Biow (biow@cs.umd.edu)]
  1741.  
  1742.    b. Try to keep any Global definitions to a minimum.  Massive
  1743.       numbers of global variables really seem to slow VB Windows down
  1744.       (besides chewing up memory).  In other words, if you've pasted a
  1745.       lot of stuff from the globals.txt file, trim all definitions and
  1746.       variables you don't use in your application.
  1747.  
  1748.    c. Keep the total number of controls and forms used to a minimum
  1749.       (you've probably already guessed that).
  1750.  
  1751.    d. Keep fancy graphics to a minimum (another one you know).
  1752.  
  1753.    e. Try "pre-processing" in the background (using Do_Events).
  1754.       Doesn't really speed anything up, but often there is a lot of
  1755.       "idle" time while the user is selecting menu's, buttons and such
  1756.       - if you can do some calculations, image loading or whatever
  1757.       during this idle time your user perceives the application is
  1758.       faster than it really is.
  1759.  
  1760.    f. Hide often-used forms rather than unloading them. Unloading
  1761.       saves memory, but it takes longer to re-load a form than to
  1762.       simply "un-hide" it.
  1763.       [Tips b to f by Galen Raben (galenr@gr.hp.com)]
  1764.  
  1765.    The following tip is along the same lines, but with a code sample.
  1766.    They are provided by Andy Dingley (dingbat@codesmth.demon.co.uk):
  1767.  
  1768.    You're limited by the system as to how quickly you can go from
  1769.    calling frmMyForm.Show to being able to type into the controls, but
  1770.    you can make the form *appear* to display faster. One technique is
  1771.    to keep forms loaded, and just switch their visibility on and off.
  1772.    This is heavy on resource usage, and doesn't help for the first
  1773.    time they're shown.
  1774.  
  1775.    Most forms have some processing (eg. querying a table to fill a
  1776.    list box) that goes on when they're first opened, and this is what
  1777.    causes the most serious delay. It's possible to display the form,
  1778.    make its controls appear on screen, then do the slow processing
  1779.    before finally making the form "live". As the user can see things
  1780.    happening, the perceived delay is less obvious.
  1781.  
  1782.    Include the following code in your form:
  1783.  
  1784.      Option Explicit
  1785.      Dim FirstActivation as integer
  1786.  
  1787.      Sub Form_Activate
  1788.         DoEvents   'Allow the _Load event to be seen on screen
  1789.         If FirstActivation Then
  1790.  
  1791.            ' Do all the slow loading stuff here
  1792.            If FillComboBox <> 0 Then
  1793.               Unload Me 'If it all goes horribly wrong, then you
  1794.                         'can call Unload from an _Activate event
  1795.                         '(Which you can't do from the _Load event)
  1796.            End If
  1797.            FirstActivation = False
  1798.         End If
  1799.         Screen.MousePointer = DEFAULT
  1800.      End Sub
  1801.  
  1802.      Sub Form_Load
  1803.         FirstActivation = True
  1804.      End Sub
  1805.  
  1806.    Show the form by using:
  1807.  
  1808.      Screen.MousePointer = HOURGLASS
  1809.      frmMyForm.Show MODAL
  1810.  
  1811.  
  1812.    Bruce Garrett (bruceg@access2.digex.net) had the following tips
  1813.    from his VBITS 93 notes:
  1814.  
  1815.    - Polling a control for its properties directly is 10 to 20
  1816.      times slower then placing the property values you need into
  1817.      variables and testing the value of the variables.
  1818.  
  1819.    - Swap tuning: Modules are not loaded until used; put related
  1820.      code in the same modules, reduce the number of intermodule
  1821.      calls and keep modules small.
  1822.  
  1823.    - Binary file I/O is faster then Text/Random.
  1824.  
  1825.    There was also a lot of discussion about "apparent" speed i.e: how
  1826.    it looks on the screen as opposed to how fast it's chugging
  1827.    internally. It was noted that the cute little flashing menu items
  1828.    and exploding windows in the Mac amounted to a little razzle-dazzle
  1829.    to distract you from how long it took to actually load something
  1830.    and get it on the screen.  Keeping all your forms loaded but hidden
  1831.    until needed was suggested.  Also the use of progress indicators
  1832.    and a simple quickly loaded and drawn startup form. Also preloading
  1833.    data you expect to need.
  1834.  
  1835. 5. How do I speed up control property access?
  1836.  
  1837.    Instead of using a property in a loop, you will be better off using
  1838.    a normal variable in the loop and then assign the variable once to
  1839.    the property afterwards. Also, when reading a property, you should
  1840.    read it once into a variable instead of using it in a loop.
  1841.  
  1842.    Sometimes it is not possible to simply put contents of a property
  1843.    into a variable. For example, if you are using a list box or you
  1844.    need to conserve memory. In these cases you can send the
  1845.    WM_SetRedraw message to the control to prevent redrawing. You can
  1846.    typically increase the speed 6-10 times - or even more.
  1847.  
  1848.      'Add the following declares:
  1849.      Declare Function SendMessage Lib "User" (ByVal hWnd As
  1850.      |Integer, ByVal wMsg As Integer, ByVal wParam As
  1851.      |Integer, lParam As Any) As Long
  1852.      Const WM_SetRedraw = &HB
  1853.  
  1854.      'Add this to your code:
  1855.      Result% = SendMessage(Text1.hWnd, WM_SetRedraw, 0, 0)
  1856.      'redraw off
  1857.      'Do your stuff here!
  1858.      Result% = SendMessage(Text1.hWnd, WM_SetRedraw, 1, 0)
  1859.      'redraw on
  1860.  
  1861.    This same method applies to list boxes and other controls.
  1862.  
  1863. 6. How much gain in performance will I get if I write my number
  1864.    crunching routines in C instead of Visual Basic?
  1865.  
  1866.    Probably the best solution to the number crunching problem is to
  1867.    write the number crunching routines as a custom control or a DLL,
  1868.    and plug it into a VB app. VB interface handling is not
  1869.    significantly slower than, say C++, and most of the wait is
  1870.    associated with Windows.
  1871.  
  1872.    Some real world experience speaks volumes about this one:
  1873.  
  1874.    I wrote some time consuming code in VB to solve a combinatorical
  1875.    (does this word exist in English?) problem. The code consists of
  1876.    one main recursive function, which calls itself very often. It took
  1877.    a night to compute a certain problem. I was rather disappointed and
  1878.    then decided to write the central routine in C++. It was a 1:1
  1879.    transcription. The routine was compiled with the MS C++-Compiler.
  1880.    It took only 22 Minutes for the same problem. Amazing, isn't it?
  1881.    The routine doesn't do any floating point arithmetic, only integer,
  1882.    and handles some arrays. The PC was a 33MHz 486. And the second
  1883.    amazing thing is, that a IBM RS6000 (560)-Risc-machine needed 17
  1884.    Min for the same code. I was the only one on the machine. I thought
  1885.    it should be much faster. The MS C++ seems to make very fast,
  1886.    optimized code. The optimization was configured to make fast code.
  1887.    [Christoph Steinbeck (steinbeck@uni-bonn.de)]
  1888.  
  1889. 7. How do you make a TEXTBOX read only? Or, how do I prevent the user
  1890.    from changing the text in a TEXTBOX?
  1891.  
  1892.    There's a lot of ideas on this one. You can grab the _KeyPress and
  1893.    _KeyDown events and set them to zero. However, the best idea is to
  1894.    use the Windows API SendMessage function to tell the control to
  1895.    become read-only:
  1896.  
  1897.      'After making the following declarations...
  1898.      Global Const WM_USER = &H400
  1899.      Global Const EM_SETREADONLY = (WM_USER + 31)
  1900.      Declare Function SendMessage Lib "User" (ByVal hWnd As
  1901.      |Integer ByVal wMsg As Integer, ByVal wParam As
  1902.      |Integer, lParam As Any) As Long
  1903.  
  1904.      'Then Try:
  1905.      SendMessage(Text1.hWnd, EM_SETREADONLY, 1, 0)
  1906.      [Pete Jones (pjones@csi.compuserve.com)]
  1907.  
  1908.    This will still allow the user to copy *from* the text box. If you
  1909.    need to disable this (why?), steal the Ctrl-C in the _KeyPress
  1910.    event.
  1911.  
  1912. 8. How can I create a VBX?
  1913.  
  1914.    VBXs (Visual Basic eXtensions) are practically always written is C
  1915.    (Borland C++, but mainly MS VC++). You should refer to the _Control
  1916.    Development Guide_ (in VB Professional Features Vol. I) and any
  1917.    relevant documentation for your compiler. Followup questions should
  1918.    normally be directed to comp.os.ms-windows.programmer.* or
  1919.    comp.lang.c*.
  1920.  
  1921.    There are some example VBX's with C code supplied with VB3 Pro.
  1922.    You'll find them under the directory [VB]\CDK.
  1923.  
  1924. 9. How do you change the system menu (on the Control-Menu Box)?
  1925.  
  1926.    You can turn off the minimize and maximize menu options by changing
  1927.    properties, but what if you need to remove the "close" option?
  1928.  
  1929.      'Make the following declares.
  1930.      Declare Function GetSystemMenu Lib "User" (ByVal hWnd
  1931.      |As Integer, ByVal bRevert As Integer) As Integer
  1932.      Declare Function RemoveMenu Lib "User" (ByVal hMenu
  1933.      |As Integer, ByVal nPosition As Integer, ByVal wFlags As
  1934.      |Integer) As Integer
  1935.      Global Const MF_BYPOSITION=&H400
  1936.  
  1937.      'Use the following code to remove the "close" option.
  1938.      SystemMenu% = GetSystemMenu (hWnd, 0)
  1939.      Res% = RemoveMenu(SystemMenu%,6, MF_BYPOSITION)
  1940.      '(also remove the separator line)
  1941.      Res% = RemoveMenu(SystemMenu%,6, MF_BYPOSITION)
  1942.  
  1943.    Adding menu items to the control menu is more complicated, since
  1944.    you need to respond to the events triggered when the user selects
  1945.    the new options. The newest Message Blaster (msgblast.vbx, see
  1946.    details in beginning of FAQ about how to get files) contains
  1947.    example code.
  1948.  
  1949. 10.How do I play MID, WAV or other multimedia files?
  1950.  
  1951.    Use the MSMCI.VBX, provided with VB/Win Pro 3.0. You can also
  1952.    declare and call the MM-functions manually:
  1953.  
  1954.      Declare Function mciExecute Lib "MMSystem"
  1955.      |(ByVal FileName as String) As Integer
  1956.  
  1957.      Sub Form1_Click ()
  1958.          iResult = mciExecute("Play c:\windows\mkmyday.wav")
  1959.      End Sub
  1960.  
  1961. 11.How can I call a 'hidden' DOS program from VB?
  1962.  
  1963.    If you run a DOS program minimized using the SHELL command, it will
  1964.    never complete. This is because DOS tasks by default are NOT setup
  1965.    to run in the background. The easiest way to get around this is to
  1966.    make a PIF file for the program you need to run with the
  1967.    "Background" option checked. Then SHELL to the PIF file to run the
  1968.    DOS program and it will return control to your VB application when
  1969.    it terminates.
  1970.  
  1971.    Tip: If you edit or replace the _DEFAULT.PIF file in the Windows
  1972.    directory to allow execution in background, this will apply to all
  1973.    DOS boxes that is not run with it's own .pif!
  1974.  
  1975. 12.How do I do drag & drop between applications?
  1976.  
  1977.    Get the file FMDROP10.ZIP from ftp.cica.indiana.edu in the vbasic
  1978.    directory. It is a good VB example of drag & drop. You may also
  1979.    want to get the MSGBLAST VBX (3-64.ZIP at ftp.microsoft.com in the
  1980.    MSDN directory) since you will need to have access to Windows
  1981.    messages in order to do drag & drop - unless you get a VBX to do it
  1982.    for you.
  1983.  
  1984.    Also, the D&DSERVE example from Windows Tech Journal Aug 92
  1985.    includes a DLL for this purpose. This is available from some ftp
  1986.    sites.
  1987.  
  1988.    Short glossary for the confused ones  :-)
  1989.    Drag & Drop Client: the form you drop objects to/on
  1990.    Drag & Drop Server: the form you drag object(s) from
  1991.  
  1992. 13.How do I use GetPrivateProfileString to read from INI files?
  1993.  
  1994.    There's a good example of accessing *.INI files in the Knowledge
  1995.    Base, but here's the basic idea:
  1996.  
  1997.      'You declare these API function as usual:
  1998.      Declare Function GetPrivateProfileString Lib "Kernel"
  1999.      |(ByVal lpApplicationName As String, ByVal lpKeyName
  2000.      |As Any, ByVal lpDefault As String, ByVal
  2001.      |lpReturnedString As String, ByVal nSize As Integer,
  2002.      |ByVal lpFileName As String) As Integer
  2003.  
  2004.      'Then in your code you do like below:
  2005.      strIniFile = "WIN.INI"
  2006.      strSection = "MyProgram"
  2007.      strKey = "Language"
  2008.      strDefault = "English"
  2009.      iLength = 70
  2010.      strReturn = String$(iLength, " ")  'Pad the string first!
  2011.      iResult = GetPrivateProfileString(strSection, strKey,
  2012.      |strDefault, strReturn, iLength, strIniFile)
  2013.  
  2014.    WARNING: Be aware that there was an ERROR in the Windows 3.1 API
  2015.    documentation that came with VB. Here's the scoop:
  2016.  
  2017.    Knowledge Base article Q110826 (DOCERR: GetPrivateProfileString
  2018.    Declaration Incorrect in API) corrects a documentation error for
  2019.    the GetPrivateProfileString function call as described in the
  2020.    Windows version 3.1 API Reference help file that shipped with
  2021.    Microsoft Visual Basic version 3.0 for Windows. The CORRECT
  2022.    declaration is as follows:
  2023.  
  2024.      Declare Function GetPrivateProfileString Lib "Kernel"
  2025.      |(ByVal lpApplicationName As String, ByVal lpKeyName
  2026.      |As Any, ByVal lpDefault As String, ByVal
  2027.      |lpReturnedString As String, ByVal nSize As Integer,
  2028.      |ByVal lpFileName As String) As Integer
  2029.  
  2030.    Note that the "ByVal" keyword was omitted from the second parameter
  2031.    in the online reference. This means that the function is passing
  2032.    the second parameter (lpKeyName) by reference. It needs to be
  2033.    passed by value.
  2034.  
  2035.    The most common problem that occurs when using the incorrect
  2036.    declaration is that when the function is called, it returns a copy
  2037.    of "lpdefault" in the "lpReturnedString" parameter instead of the
  2038.    actual value referenced by KeyName.
  2039.  
  2040. 14.How do I implement Undo?
  2041.  
  2042.    For most controls, you will have to keep track of changes yourself.
  2043.    There's no magic involved, just some coding. However, if you use
  2044.    the standard Text box or Combo box, Windows provides a "free" undo
  2045.    function for you!
  2046.  
  2047.      'Do the following declares:
  2048.      Declare Function SendMessage Lib "User" (ByVal hWnd As
  2049.      |Integer, ByVal wMsg As Integer, ByVal wParam As
  2050.      |Integer, lParam As Any) As Long
  2051.      Global Const WM_USER = &h400
  2052.      Global Const EM_UNDO = WM_USER + 23
  2053.  
  2054.      'And in your Undo Sub do the following:
  2055.      UndoResult = SendMessage(myControl.hWnd, EM_UNDO, 0, 0)
  2056.      'UndoResult = -1 indicates an error.
  2057.  
  2058. 15.How do I create a window with a small title bar as in a floating
  2059.    toolbar?
  2060.  
  2061.    Download the MSGBLAST VBX from ftp.microsoft.com (filename "8-
  2062.    3.ZIP") or (better) from ftp.cica.indiana.edu. The example files
  2063.    provide an example of a form with a small title. When you see it,
  2064.    you'll understand why I haven't include a full explanation here!
  2065.  
  2066. 16.What is Pseudocode?
  2067.  
  2068.    VB/Win does not generate machine code like most compilers do.
  2069.    Instead it creates what is called pseudocode (a real misnomer,
  2070.    IMO). A good explanation is given below:
  2071.  
  2072.    A bit of history: the original P-code was an instruction set for a
  2073.    "virtual Pascal" machine. This came with a portable Pascal compiler
  2074.    written at ETH in Zuerich. The portable compiler produced
  2075.    instructions for this phony machine which had an instruction set
  2076.    ideally suited to the stack and heap management of Pascal.  To
  2077.    executed portable Pascal programs, you had two choices: either
  2078.    write an interpreter for P-code, or translate the small set of P-
  2079.    code instructions (there were about 80) into assembler; assemble
  2080.    it; and run it at native speed.  Thus "P-code" originally stood for
  2081.    "Portable" or "Pascal" code. The broader meaning, "pseudo-code"
  2082.    came later. P-code was widely popularized by the UCSD Pascal
  2083.    system, a small workstation that was implemented entirely in Pcode
  2084.    and interpreted. It was sold for some years, and one company even
  2085.    re-did the microcode for a PDP-11 microchip to interpret P-code.
  2086.    The original Borland Turbo Pascal had obvious similarities to the
  2087.    UCSD system although it was not interpreted. The dialect was
  2088.    virtually identical.  Today P-code is used extensively in Microsoft
  2089.    apps, for two reasons. First, it is much more compact than  native
  2090.    code; so the apps are smaller. Second, having an interpreter at the
  2091.    core of an app makes it much easier to customize and extend. That
  2092.    is why VB is becoming the heart of the MS major apps.  It is simply
  2093.    not true that P-code apps run much slower than native apps. The
  2094.    slowdown is determined by the granularity of the interpreted
  2095.    routines. If every little thing is an interpreted op, the slowdown
  2096.    might be as much as 3-to-1 for the 80x86 architecture, or about 2-
  2097.    to-1 for the Motorola 68000 family (which is better suited to
  2098.    writing interpreters).  But in practice, modern P-code systems have
  2099.    large-scale instructions, each of which is executed by a big
  2100.    compiled subroutine. These subs run at native speed, so the
  2101.    overhead of the interpreter is occasional at worst.
  2102.    [Roger E. Ison (r_ison@csn.org)]
  2103.  
  2104.    It is also possible that since the code may not need recompilation
  2105.    to run on other platforms *if* the run-time interpreter is first
  2106.    ported, VB applications can become very portable. This depends on
  2107.    Microsoft's long-term plans.
  2108.  
  2109.    A note on the word "pseudocode": I wrote above that it is a
  2110.    misnomer, and I stand on that. Pseudocode is *really* the pascal-
  2111.    like (mostly) explanation of an algorithm that is intended for
  2112.    human readers, not computers. But since somehow the term pseudocode
  2113.    stuck to the psaudo-machine-code created by VB the word is used
  2114.    here.
  2115.  
  2116. 17.Does VB support pointers to functions?
  2117.  
  2118.    No, it does not.
  2119.    [George Tatge (gat@csn.org)]
  2120.  
  2121. 18.How do I program the Novell NetWare API from VB?
  2122.  
  2123.    Tom Tregilgas (Tom.Tregilgas@InfoB.unisg.ch) had a lot of
  2124.    information on this one. Normally I leave it to the other FAQ parts
  2125.    to list books & how-to-get-info's, but since this topic is very
  2126.    specific and more NetWare than VB I include all the stuff here for
  2127.    your convenience:
  2128.  
  2129.    If you are interested in seeing how Visual Basic can be used for
  2130.    NetWare programming, obtain the following files from your friendly
  2131.    neighboorhood Novell FTP Mirror site.
  2132.  
  2133.    Mirror sites are (according to ftp.novell.com):
  2134.          Novell Germany              ftp.novell.de
  2135.          Netherlands                 ftp.rug.nl
  2136.          United Kingdom              ftp.salford.ac.uk
  2137.          Logan, Utah                 netlab2.usu.edu
  2138.          New Zealand                 tui.lincoln.ac.nz
  2139.          Tuscaloosa, Alabama         risc.ua.edu
  2140.          Ottowa, Ontario, CA         novell.nrc.ca
  2141.          Boston, Mass                bnug.proteon.com
  2142.  
  2143.    novlib\11\nivb.zip                Netware Interface for Visual Basic
  2144.    novlib\11\nwtest.zip              NetWare Test for Visual Basic
  2145.  
  2146.    There are also two Novell App Notes on the subject of using NetWare
  2147.    with Visual Basic (although this is _NOT_ supported by Novell...)
  2148.    which are:
  2149.  
  2150.    October 92      Interfacing Visual Basic for Windows and NetWare
  2151.    July 93         A NetWare Interface for Visual Basic
  2152.  
  2153.    The AppNotes can be obtained by contacting the Novell Research
  2154.    Order Desk, FAX: +1 303 294-0903, Voice 800 377-4136, +1 303 297-
  2155.    2725.  Address as follows:
  2156.  
  2157.    Novell Research Order Desk
  2158.    1601 Park Avenue West
  2159.    Denver, CO 80216-5199
  2160.  
  2161.    AppNotes are $95/year ($135 outside US)
  2162.  
  2163.    Here are a few books which might help you out to figure the calls
  2164.    out:
  2165.  
  2166.    Windows Development on NetWare Systems, Lori Gauthier and Sue
  2167.    Whitehead (c) 1994, Windcrest, Blue Ridge Summit, PA 17294-0850
  2168.    (McGraw-Hill) $34.95 Comes with disk This book also tells you how
  2169.    to "upgrade" to the currently supported SDK calls
  2170.  
  2171.    NetWare System Interface Technical Overview, Novell (c) 1990,1989
  2172.    (Addison-Wesley), $32.95 (describes Novell's C Network Compiler
  2173.    API's)
  2174.  
  2175.    Visual Basic Programmer's Guide to the Windows API, Daniel Appleman
  2176.    Ziff-Davis Press, 5903 Christie Ave, Emeryville, CA 94608, $34.95
  2177.    Comes with disk
  2178.  
  2179.    It should be mentioned that the APIs included with the NIVB are
  2180.    _not_ current, and for this purpose, you should get the Novell SDK
  2181.    kit. Also, Novell will not support NIVB, but you can sometimes get
  2182.    some helpfrom Compu$erve, or from others on the Infobahn <g>
  2183.  
  2184.    Good luck!
  2185.  
  2186.    p.s. It behooves you to become a member in the PDP (Professional
  2187.    Developer's Program) since you get the AppNotes (& Bullets!)
  2188.    for...free.
  2189.  
  2190.    p.p.s. Novell does NOT support the NIVB...
  2191.  
  2192.    p.p.p.s. Also, no docs come with it.  You'll probably need the
  2193.    Client C SDK kit to be able to really _use_ the code.
  2194.  
  2195.    p.p.p.p.s. To make things even better, the calls in NIVB are fairly
  2196.    old, and not of the Client C SDK kit variety.  However, there _are_
  2197.    books which could help you out, e.g. "NetWare System Interface
  2198.    Technical Overview", by Novell. ISBN:0-201-57027-0, published by
  2199.    Addison-Wesley Publishing co, $32.95 US, $42.95 in Canada.
  2200.  
  2201. 19.Some Visual Basic 4 rumours
  2202.  
  2203.    First, we have no special information. This is just rumours,
  2204.    guessing, gossip! But since there are many questions about this on
  2205.    the newsgroup, *and* Microsoft gives these controlled leakages
  2206.    through their beta testers, we bring on some of it (Please, don't
  2207.    start discussing NDA's on this group again!):
  2208.  
  2209.    a. Two versions: 32-bit and 16-bit
  2210.  
  2211.       Like Visual C++ 1.5, VB 4 will come with compilers for the 16-
  2212.       bit API from Windows 3.1 as well as a real 32-bit compiler (or
  2213.       pseudocompiler) for Windows 4 (Chicago) bundled together.
  2214.  
  2215.    b. New features will probably be inherited from VBA
  2216.  
  2217.       1)   Line continuation character " _" (space+underscore)
  2218.  
  2219.       2)   WITH statement, known from Pascal, to save typing and make
  2220.            code cleaner. An example:
  2221.  
  2222.              With Form1
  2223.                With Text1
  2224.                  Bold = true
  2225.                  FontName = "New Times Roman"
  2226.                End With
  2227.              End With
  2228.  
  2229.       3)   FOR EACH .. NEXT statement allows you to make changes to a
  2230.            group of objects at once better than FOR..NEXT. Object
  2231.            groups are also something you may have to work closer with
  2232.            in VB4.
  2233.  
  2234.       4)   An OPTIONAL statement allows you to leave some Variant
  2235.            parameteres undefined when calling a user-defined sub or
  2236.            function. Also in VBA is an ARRAY function that returns an
  2237.            array form a list supplied as parametres, and a special
  2238.            optional ParamArray optional parameter of Variants.
  2239.  
  2240.       5)   Boolean data type. Integer does the job, but this type can
  2241.            preserve space if Microsoft codes it right.
  2242.  
  2243.       6)   Byte data type? No, VBA does not support this. We can
  2244.            dream, however.
  2245.  
  2246.    c. VBX is dead. Long live OCX!
  2247.  
  2248.       You may not feel for celebrating this either, but the 32 bit VB
  2249.       4 will not support the old 16-bit VBX'es. The 16-bit version of
  2250.       VB 4 will support them for backwards compatibility, but be aware
  2251.       that OLE 2 and OCX is the way of the future, at least if
  2252.       Microsoft gets it as they want.
  2253.  
  2254.  
  2255. E. CALLING THE WINDOWS API AND DLLs IN GENERAL
  2256.  
  2257.  
  2258. 1. What is the Windows API?
  2259.  
  2260.    The Windows API (Application Program Interface) is a collection of
  2261.    Dynamic-Link Libraries (DLLs) that do most of the common things in
  2262.    Windows. Calls to the Windows API gives you access to routines that
  2263.    do things like drawing menu bars, manipulating bitmaps, playing
  2264.    sound files, and pretty much every other function of Windows.
  2265.  
  2266. 2. How do I call a DLL?
  2267.  
  2268.    Basically, you declare a DLL procedure which you can call in your
  2269.    VB program which in turn passes data to and/or retrieves data from
  2270.    the DLL. You should read the section of the VB manual that talks
  2271.    about calling DLLs ("Chapter 24  Calling Procedures in DLLs" in the
  2272.    VB 3.0 Programmer's Guide). This chapter covers the basics of using
  2273.    the Windows API DLLs and calling DLLs in general. Beyond that you
  2274.    may want to find a good book on this subject since it is too large
  2275.    to cover here (see the Book Listing in the Appendix of the General
  2276.    FAQ - Part 1). Don't be too intimidated!  Using DLLs (especially
  2277.    many of the Windows API functions) is quite easy, once you learn
  2278.    how to call them. In fact, many of the newer DLLs include VB-
  2279.    compatible modules!
  2280.  
  2281. 3. What about DLL calls that require callbacks?
  2282.  
  2283.    VB does not support callbacks, but various extensions can help.
  2284.  
  2285.    Dan Appleman's "Visual Basic Programmer's Guide to the Windows API"
  2286.    comes with a floppy disk which code samples and tools. It also
  2287.    includes a VBX which supports the callbacks which many API calls
  2288.    require. Dan is also founder and president of Desaware which sells
  2289.    more extensive tools, including SpyWorks, for VB developers.
  2290.    [Walter Hill (whill@netcom.com)]
  2291.  
  2292. 4. Tips for calling DLLs (such as the Windows API)
  2293.  
  2294.    a. Using the BYVAL keyword is critical. Using it when you're
  2295.       supposed to call by reference and (more common) not using it
  2296.       when you are to give a value to the external function are the
  2297.       single most common mistakes. Wrong calling convention can often
  2298.       result in a General Protection Fault (GPF) or, even worse,
  2299.       corruption of another applications' data.
  2300.  
  2301.    b. Check return and parameter types. For return types, a C function
  2302.       declared as "void" means you use a Sub not a Function.
  2303.  
  2304.    c. Initialize strings by padding it to the necessary length! If you
  2305.       pass a string that is too short to the API it will happily write
  2306.       past the end of the string and possibly corrupt data.
  2307.  
  2308.    d. Use Option Explicit. A typing error that results in a bug in the
  2309.       VB source will occasionally cause a GPF when you call external
  2310.       code.
  2311.  
  2312.    e. It's a jungle out there! Check parameter values as there is no
  2313.       type checking outside VB. If you make a mistake, you'll often
  2314.       get a GPF.
  2315.  
  2316.    f. Save before you run! You may even need to restart Windows after
  2317.       a GPF, since DLL's often aren't unloaded properly. As a second
  2318.       option you can check out WPS (Windows Process Status) which is
  2319.       distributed with VB/Pro and placed in the CDK directory. This
  2320.       utility allows you to kick out any module (EXE, DLL) from memory
  2321.       (shooting yourself in the foot if you want to. WPS is a nice way
  2322.       to find out what DLLs are actually used, but save your work
  2323.       first!).
  2324.  
  2325.  
  2326. F. VISUAL BASIC AND DATABASES
  2327.  
  2328.  
  2329. 1. Why can't I use an index with my VB accessed database?
  2330.  
  2331.    There is a mistake in the docs which says you can set the active
  2332.    index for a recordset. You can't. The data control uses the primary
  2333.    key for tables and physical order (I think) for dynasets.
  2334.    [Nic Gibson (nic@skin.demon.co.uk)]
  2335.  
  2336. 2. Why does my compiled VB database app generate an error when it ran
  2337.    just fine in the design environment?
  2338.  
  2339.    You can thank Microsoft for documenting this topic so poorly. When
  2340.    you compile your VB database application, you must also have an INI
  2341.    file for it which provides the correct pointers to the appropriate
  2342.    database drivers. Therefore, if your application is named
  2343.    "INVOICE.EXE", you will need to have a properly configured
  2344.    "INVOICE.INI" file in your Windows directory. The file,
  2345.    EXTERNAL.TXT, that came with VB should explain all about it.
  2346.  
  2347. 3. Is the Access Engine and Visual Basic Pro good enough for database
  2348.    work?
  2349.  
  2350.    That, of course, depends. Generally the answer is "yes", but you
  2351.    may need some third-party add-on products.
  2352.  
  2353.    These are the major weaknesses of VBPro's database functions:
  2354.  
  2355.    a. Limited data controls: No add, delete or search button; no bound
  2356.       list box or masked edit control and - the worst - no bound grid!
  2357.  
  2358.    b. No run-time query builder ("how good is your user in SQL?") or
  2359.       report builder.
  2360.  
  2361.    c. No direct advanced control of the Access 1.1 (or 2) Database
  2362.       Engine (ie. security, optimization, etc).
  2363.  
  2364.    The good news is that lots of companies are willing to sell you
  2365.    products which address one or more of the above weaknesses.
  2366.  
  2367.    Also, if you build a database application with advanced database
  2368.    relations, it can be a good idea to build the database itself with
  2369.    Access and the front-end with VB.
  2370.  
  2371. 4. How do you avoid the "Invalid use of null" error when reading null
  2372.    values from a database?
  2373.  
  2374.    If you try to retrieve a null value (empty field) from a database,
  2375.    you will get the error: "Invalid use of Null". Here is one way to
  2376.    get around this problem:
  2377.  
  2378.    I've worked around this problem with the following code:
  2379.  
  2380.      TextBox.Text = MyTest.Fields("TestFld") & ""
  2381.  
  2382.    This code converts the Null-Value into an empty string.
  2383.    [Ralf Metzing (rmm@dragon.stgt.sub.org)]
  2384.  
  2385. 5. What is "NULL"?
  2386.  
  2387.    Contrary to popular belief, Null is not nothing. It's even less
  2388.    than nothing.   8^)
  2389.  
  2390.    The VB documentation describes all the horrors of misunderstanding
  2391.    the infamous NULL. Since people don't read the documentation, we
  2392.    feel like informing that
  2393.  
  2394.      If ThisVarIsNull = NULL then DoSomething
  2395.  
  2396.    will *always* fail, and the DoSomething can't possibly be executed.
  2397.    You *must* use IsNull(ThisVarIsNull) which will return True if the
  2398.    var is Null (phew!).
  2399.  
  2400.    If you want to find out why someone came to think of this strange
  2401.    value, read some relational database theory.
  2402. 6. How can I access a record by record number?
  2403.  
  2404.    Use a counter or index field and access the record with this.
  2405.  
  2406.    It is *impossible* to ask a relational database system to give you
  2407.    ie. "field number 3 in record number 10" since by definition a
  2408.    relational database does not have row or column numbers. Databases
  2409.    allowing direct access like that is not even remotely relational.
  2410.  
  2411.    Access (and therefore, VB) is about as close to a real relational
  2412.    database system as you can get.
  2413.  
  2414. 7. How about Access 2.0 compatibility?
  2415.  
  2416.    You need the compatibility layer availability. The file COMLYR.EXE
  2417.    is in the MSBASIC library on Compuserve. This file provides all the
  2418.    items necessary for compatibility between VB 3.0 and Access 2.0.
  2419.    [Fred Griffin (72321.3230@compuserve.com)]
  2420.  
  2421.    The file COMLYR.EXE can be downloaded from ftp.microsoft.com. It is
  2422.    located in the directory /softlib/mslfiles.
  2423.  
  2424. 8. Tips for VB database programming:
  2425.  
  2426.    a. Use Access and QBE. Once it's "working" (even if the parameters
  2427.       are hardcoded), then open up View.SQL and copy the stuff from
  2428.       the SQL window into your VB code. If you need to insert VB
  2429.       variables, try testing this under Access by using parameters
  2430.       instead. They're then nice & easy to spot when it comes to
  2431.       converting into VB - I always call my parameters "PR_xxxx", so I
  2432.       can just search my VB code for this to find any instances that
  2433.       I've missed.
  2434.  
  2435.    b. It never works first time. So put an error handler into your VB
  2436.       code that copies the contents of SQLStr onto the clipboard,
  2437.       should the query fail. Now it's quick & easy to switch back to
  2438.       Access, find a scratch query and paste the erroneous SQL into
  2439.       that. It's *much* easier to debug a SQL query in Access, after
  2440.       the variables have been merged in, than it is to do it blind
  2441.       from VB.
  2442.  
  2443.    c. Use carriage returns to break up your SQL. One before each
  2444.       reserved word is sensible. They're not significant in SQL. I
  2445.       assume you're not stupid enough to put them in the middle of
  2446.       field names - unfortunately Debug.Print is!
  2447.  
  2448.    d. When merging in the contents of a variable (building a SQL query
  2449.       in a VB string), it should *always* be surrounded by an
  2450.       ampersand and 3 double quotes, or an ampersand and 2 mixed
  2451.       quotes, depending on your local conventions:
  2452.  
  2453.         SQLStr = SQLStr & "WHERE Username <= """ & Username$ """ "
  2454.  
  2455.         or
  2456.  
  2457.         SQLStr = SQLStr & "WHERE Username <= '" & Username$ "' "
  2458.  
  2459.    e. If you're using dates, then it will *always* be one quote, a
  2460.       hash and an ampersand:
  2461.  
  2462.         SQLStr = SQLStr & "WHERE Start_Date <= #" &
  2463.         |Format$(CutOffDate,"Long Date") & "# "
  2464.  
  2465.    f. Another tip with dates is to format them with the long date
  2466.       format, not the short date. This is then safe against the
  2467.       transatlantic reversal of month & day position.
  2468.  
  2469.    g. If you're merging in a field/table name, enclose it in square
  2470.       brackets. That way the SQL will still be valid if the variable
  2471.       contains spaces:
  2472.  
  2473.         SQLStr = "SELECT * FROM [" & TableName$ "] ;"
  2474.  
  2475.       When building SQL strings in VB, then you'll often do this on
  2476.       several lines, concatenating SQLStr with the new string. If you
  2477.       leave a space at the end of every string, then you can guarantee
  2478.       you won't have problems with the text from successive lines
  2479.       running into each other.
  2480.  
  2481.    h. If you're using Access 1, you'll keep running into the 1024
  2482.       character limit on the length of a SQL string. Keep the table &
  2483.       field names short, especially if many JOINs are concerned. Using
  2484.       underscores in names is shorter than spaces, as you don't need
  2485.       the extra 2 characters for the square brackets around them. If
  2486.       your SQL is slightly too long, then you'll probably see a
  2487.       "Missing semicolon" error, even though the semicolon is
  2488.       obviously there (To you, anyway!).
  2489.  
  2490.    i. Making a QueryDef is a complicated process that is often slower
  2491.       than executing the query ! Don't mess with the .SQL property, as
  2492.       that is equally slow (Access needs to do a lot of work to turn
  2493.       SQL into its internal query format). Two ways around this: Use
  2494.       ready-built queries, written with Access. If you need to merge
  2495.       in values from variables, then use a query with parameters.
  2496.       Setting parameter values is quick to execute.
  2497.  
  2498.    j. If you really need to build SQL on the fly -- you need to build
  2499.       an ad hoc query, or to supply table or field names (which can't
  2500.       be done with query parameters), then try using:
  2501.  
  2502.         database.Execute SQLStr
  2503.  
  2504.       As this doesn't build a QueryDef, then it's quick.
  2505.       [All tips a to j by Andy Dingley(dingbat@codesmth.demon.co.uk)]
  2506.  
  2507. 9. How come I get a "No Current Record" error when I use a a Data
  2508.    Control on an empty table?
  2509.  
  2510.    Well, this is a "feature" courtesy of Microsoft.  KB article
  2511.    Q106494 explains this in detail.  Basically, the workaround is to
  2512.    add an empty record to the table before the user can do anything
  2513.    (or before you try to do any Moves on the Table).
  2514.    [George Tatge (gat@csn.org)]
  2515.  
  2516. 10.How can I speed up my VB database application?
  2517.  
  2518.    KB article Q109830 gives some hints.  Things you should do include:
  2519.  
  2520.    - Use Snapshots when possible.
  2521.    - Use transactions whenever possible.
  2522.    - Use Dynasets when possible.
  2523.    - Use SQL action queries when possible.
  2524.    [George Tatge (gat@csn.org)]
  2525.  
  2526. 11.How do I get a pitmap picture in a field in an Access database?
  2527.  
  2528.    See p.466 of the Visual Basic (3.0) Programmer's Guide. It contains
  2529.    a section called "Using Bound Picture Box and Image Controls".
  2530.    Basically you have to bind the VB PictureBox to a field in the
  2531.    Access DB, set the .Picture property in the PictureBox, and then
  2532.    move to the next record or something. VB will then store your
  2533.    picture in Access in a form in which it can be retrieved by VB in
  2534.    the future.
  2535.  
  2536.    If you store the pictures in Access directly (using Access), VB
  2537.    won't be able to read them (using VB 3.0 and Access 1.1).
  2538.  
  2539.    You can also store the picture's filename as a text field in the
  2540.    database and use LoadPicture() to load that file into the VB
  2541.    PictureBox.
  2542.    [Tim Shea (shea@marcam.com)]
  2543.  
  2544.  
  2545. G. DISTRIBUTING VISUAL BASIC APPLICATIONS
  2546.  
  2547.  
  2548. 1. What are some tips for using Setup Wizard?
  2549.  
  2550.    There were loads of bugs in the setup utilities supplied with VB3.
  2551.    Be sure to get the newest version of SETUPKIT (usually called
  2552.    SETUPK.EXE or -.ZIP). It is available from the sources listed in
  2553.    the beginning of this document, and in the General FAQ.
  2554.  
  2555.    Alternatively, if you have the older versions, you may have to
  2556.    manually remove the line referring to OLE2UI.DLL in the file
  2557.    SETUPWIZ.INI. See later in this document for dates of newest files
  2558.    on ftp.microsoft.com.
  2559.    Follow the instructions in SETUPK.TXT exactly. The files actually
  2560.    belong in two separate directories. Not placing them correctly can
  2561.    create strange and unusual side effects -- none of them good(!)
  2562.  
  2563.    Set all involved EXE, DLL and VBX files to Read-Only so that the
  2564.    setup program doesn't modify them.
  2565.    [Charles F. Mulks (21667cfm@msu.edu)]
  2566.  
  2567.    A *very* good tip. Actually, make all executables on your system
  2568.    read-only. If not, you can get a sharing violation if you try to
  2569.    run the same DOS executable twice at the same time.
  2570.  
  2571.    Also, the source code for a SETUP program is *included* with VB3
  2572.    Pro. It is quite trivial to tailor it to your specific needs.
  2573.  
  2574.    The question remains: Is SetupWiz good? No! Good enough? Perhaps.
  2575.  
  2576. 2. Are there restrictions on what I can distribute with my VB program?
  2577.  
  2578.    The documentation tells what parts of the Visual Basic kit you can
  2579.    freely distribute: the VBX files, some DLL's and what the SetupKit
  2580.    includes on your distribution diskettes. Reading software license
  2581.    agreements may be more boring than asking the newsgroup, but is
  2582.    nevertheless a good idea. 8^)
  2583.  
  2584.    There have been some rumours on the newsgroup that you can't
  2585.    redistribute programs written with VB freely. This is nonsense. All
  2586.    applications created with VB can be redistributed freely without
  2587.    royalties (as long as you don't distribute proprietary external
  2588.    files).
  2589.  
  2590.    The rumours probably originated when Microsoft announced that they
  2591.    will not sell kits allowing third-party software to include the
  2592.    Visual Basic for Applications (VBA) system.
  2593.  
  2594. 3. What alternatives to setup wizard do I have?
  2595.  
  2596.    Perhaps the best one is to simply modify the setup app which is
  2597.    supplied with VB.  Look in your VB directory for the setupkit\
  2598.    setup1 directory.  There you will find everything you need to do a
  2599.    complete setup program.  This sample setup is coded to install a
  2600.    few sample app files and create a program group.  You can comment
  2601.    out those lines and change to your files and program mgr. group.
  2602.    There are also a few global variables you will want to change.  All
  2603.    of this is contained in the comments in the code.
  2604.  
  2605.    Using this, and the distribution information in the manual telling
  2606.    you about which files to distribute with your app will make things
  2607.    much easier than using the setup wizard (IMNSHO).
  2608.  
  2609.    There are also several third party setup products available.
  2610.    [George Tatge (gat@csn.org)]
  2611.  
  2612. 4. Do I need to worry about users who have Progman replacements such
  2613.    as Norton Desktop and PC Tools?
  2614.  
  2615.    Earlier versions of those products and some others do not respond
  2616.    properly to the DLL commands to create groups and items.  More
  2617.    recent versions do.  All you can do in this case is to include some
  2618.    information in your readme.txt file that instructs users of those
  2619.    products to shut them down and start up program manager before
  2620.    installing.
  2621.    [George Tatge (gat@csn.org)]
  2622.  
  2623. 5. Can I distribute my app without vbrunXXX.dll?
  2624.  
  2625.    If you are sure that your users have it or can get it, you can
  2626.    easily distribute your app without vbrunXXX.dll.  Simply remove the
  2627.    file from your distribution disk or zip file and and ALSO remove it
  2628.    from the setup.lst file.
  2629.    [George Tatge (gat@csn.org)]
  2630.  
  2631. 6. Why won't my setup program install commdlg.dll et. al.?
  2632.  
  2633.    There are a couple of DLLs that are almost always in use by
  2634.    windows.  Commdlg.dll is the most common example.  When faced with
  2635.    this problem, there is no easy way out.  The full explanation is
  2636.    several pages long and beyond the scope of this FAQ.  The general
  2637.    idea is as follows:
  2638.  
  2639.    Your setup program will need to create a .BAT file to expand and
  2640.    then copy these files.  Then, it will need to shutdown Windows
  2641.    (see ExitWindowsExec API call) and run the .BAT file.  Then it will
  2642.    need to restart windows and continue your setup program.  Your
  2643.    setup program should delete the temporary .BAT file that is no
  2644.    longer needed.
  2645.    [George Tatge (gat@csn.org)]
  2646.  
  2647. 7. Where do I install VBXs and DLLs?
  2648.  
  2649.    PLEASE- this is one place where everybody's life is much easier if
  2650.    you will follow Microsoft's recommendations.  All PUBLIC VBXs and
  2651.    DLLs should be installed in the windows/system directory!  A
  2652.    "PUBLIC" DLL or VBX is any which can be purchased on the open
  2653.    market.  In other words, if another VB programmer might possibly
  2654.    use the same VBX or DLL, install it in the
  2655.    system directory.
  2656.  
  2657.    If you have written private VBXs or DLLs that will never be used by
  2658.    any program but yours, you can install them in the same directory
  2659.    where you install your application files.
  2660.  
  2661.    There are lots of good reasons for doing this, but it makes a short
  2662.    novel to rehearse them all.
  2663.    [George Tatge (gat@csn.org)]
  2664.  
  2665.  
  2666. H. MISCELLANEOUS TIPS AND INFORMATION
  2667.  
  2668.  
  2669. 1. Multiple identifiers after the DIM statement can be confusing
  2670.  
  2671.    Some programmers with background from Pascal can try the following
  2672.  
  2673.      Dim iA, iB, iC as Integer
  2674.  
  2675.    and think that all these 3 variables end up as Integer. In fact,
  2676.    the first two end up as default data type, normally Variant.
  2677.  
  2678.    Instead you should do
  2679.  
  2680.      Dim iA as Integer
  2681.      Dim iB as Integer
  2682.      Dim iC as Integer
  2683.  
  2684.    which takes up more space, but gives you room to comment your
  2685.    variables (hint, hint); *or*
  2686.  
  2687.      Dim iA%, iB%, iC%
  2688.  
  2689.    which does the whole job.
  2690.  
  2691. 2. "Clean up" your project before final EXE compilation.
  2692.  
  2693.    When you are ready to compile your VB project into your 'finished'
  2694.    EXE, be sure to save the project files, exit VB, restart Windows,
  2695.    run VB, load your project and go straight to compiling. Otherwise,
  2696.    your EXE may be larger in file size than necessary due to 'garbage'
  2697.    getting included in the EXE. For some reason, VB does not fully
  2698.    clean up all of the previously used variables or objects that you
  2699.    may have been playing with while developing your program so these
  2700.    get included in your EXE even though they aren't used. Other VB
  2701.    users have even advocated saving all the project files as ASCII,
  2702.    then loading the ASCII files before compiling to further "clean up"
  2703.    the resulting EXE file.
  2704.  
  2705. 3. Multiple END statements can be dangerous; or, The program that
  2706.    refused to terminate.
  2707.  
  2708.    Suggestion: put the END statement used to exit your program *only*
  2709.    in the Form_Unload event of the main form. Whenever you want to end
  2710.    the program, just tell the main form to unload.
  2711.  
  2712.    Some have reported that after their program have (supposedly)
  2713.    terminated, it still appears in the task list. This can happen if
  2714.    you only hide secondary forms and forget to unload them when you
  2715.    end/unload the main form.
  2716.  
  2717.    Also note that the Stop-button on the button-bar of the integrated
  2718.    development environment doesn't really unload anything. It *nukes*
  2719.    the program, which generally is a good idea since it could be a bug
  2720.    in it that caused it to be stuck in an eternal loop or something.
  2721.  
  2722. 4. What are the latest versions of the various files used by VB?
  2723.  
  2724.  
  2725.    Date       File to download  Updates files    Description
  2726.    *********************************************************
  2727.  
  2728.    3/7/94     BTR110.EXE        BTRV110.DLL      Btrieve IISAM Driver
  2729.  
  2730.    3/7/94     DATAINDX.EXE      DATAINDX.DOC     "Data Access Guide"
  2731.                                                  Index
  2732.  
  2733.    3/7/94     GENERIC.EXE       \VB\CDK\GENERIC  Sample custom control
  2734.                                                  source
  2735.  
  2736.    3/7/94     VBGRID.EXE        GRID.VBX         Grid control
  2737.  
  2738.    3/7/94     VBHC505.EXE       HC.EXE, HCP.EXE  WinHelp compiler
  2739.  
  2740.    3/7/94     MSAJT.EXE         MSAJT110.DLL     Access Database Engine
  2741.  
  2742.    3/8/94     MSCOMM.EXE        MSCOMM.VBX       Serial
  2743.                                                  Communications\control
  2744.  
  2745.    3/7/94     ORA110.EXE        ORACLE.TXT       Updated ORACLE.TXT file
  2746.  
  2747.    6/27/94    SETUPK.EXE        SETUP.EXE        Setup Toolkit
  2748.  
  2749.    3/7/94     VBRUN300.EXE      VBRUN300.DLL     Visual Basic Runtime
  2750.                                                  Library
  2751.  
  2752.    3/7/94     XBS110.EXE        XBS110.DLL       XBase IISAM Driver
  2753.  
  2754.  
  2755.    There is an article in the Microsoft Knowledge Base that points to
  2756.    each of these files and provides more detailed information about
  2757.    the update. To find these articles, query the Microsoft Knowledge
  2758.    Base using the file name and the word "update3.00".
  2759.  
  2760.    Note the NEW SETUPKIT update!
  2761.    [Thanks to Marks Harrop <harrop@werple.apana.org.au>]
  2762.  
  2763.    Please inform the FAQ maintainer about newer versions.
  2764.  
  2765.  
  2766. I. VISUAL BASIC FOR APPLICATIONS (VBA)
  2767.  
  2768.  
  2769. 1. Any tips for VB/Win 3 programmers moving to VBA?
  2770.  
  2771.    You are in for some surprises. VBA is more unlike VB 3 than most
  2772.    people thought. Especially the development environment is very
  2773.    different, and the language puts more emphasis on objects. The
  2774.    latter is a trend you can get used to for VB also.
  2775.  
  2776.    For Excel 5 VBA, be aware that the environment is based on the
  2777.    "workbook" idea Microsoft stole from Borland. Your controls will be
  2778.    placed in one sheet, and the code will be in another.
  2779.    Doubleclicking on the control to open the code window doesn't help.
  2780.    You have to use the "Tools|Assign Macro" menu option.
  2781.  
  2782.    Also, be aware that the list of events is nowhere close to what VB3
  2783.    supports! No GotFocus, no MouseMove, no nothing. You'll be very
  2784.    confused if you try to look for "events" in the VBA docs!
  2785.  
  2786. 2. Does VBA support VBXs?
  2787.  
  2788.    No. If Microsoft have its way, VBX is a dead end. There will never
  2789.    be 32-bit VBXs, but OCXs using OLE 2. VBA is more a subset of VB 4
  2790.    than VB 3, but it does not fully support OCX yet. It will, though.
  2791.  
  2792. 3. How do I access properties on my dialog boxes in VBA?
  2793.  
  2794.    As noted above, VBA is a cultural chock for VB programmers. If you
  2795.    create a textbox in VBA, call it txName and try to
  2796.  
  2797.      cMyVar=txName.Text
  2798.  
  2799.    the impolite interpreter will give you a "variable not defined"
  2800.    error.
  2801.  
  2802.    The magic is objects. You have to
  2803.  
  2804.      Dim txName as Object
  2805.      Set txName = DialogSheets("NameDialog".EditBoxes("txName"))
  2806.  
  2807.    And then you can access your properties like you used to in good
  2808.    ol' VB 3. (Anyone volunteer to beat senseless the guy who thought
  2809.    out this?)
  2810.  
  2811. 4. How do I use database routines from Excel VBA?
  2812.  
  2813.    The documentation is somewhere between sparse and inexistant on
  2814.    this topic. Any info on VBA and SQL would be much appreciated.
  2815.  
  2816.    Here Microsoft breaks the tradition and you *can't* use database
  2817.    objects, at least not the way you do in VB. Also, forget dynasets.
  2818.  
  2819.    I know nothing about databases in VBA. I just bring on the
  2820.    following tips from various magazines:
  2821.  
  2822.    Both SQLOpen and QueryGetData require a 'connection string'. That's
  2823.    about what the doc's say about the parameter. What is it? The doc
  2824.    is also tragically void of useful examples. Someone dug up the
  2825.    following example:
  2826.  
  2827.      "DSN=My data file;DBQ=c:\access\data.mdb;FIL=RedISAM;"
  2828.  
  2829.    which is about as understandable as it looks. If you use an empty
  2830.    string, you get a dialog which also can give you the string into a
  2831.    spreadsheet cell.
  2832.  
  2833.    Also, search for SQLREQUEST in the *main* help file for Excel 5
  2834.    (not the VBA help!) for these examples of connection_string's:
  2835.  
  2836.    dBASE             DSN=NWind;PWD=test
  2837.    SQL Server        DSN=MyServer;UID=dbayer;PWE=123;Database=Pubs
  2838.    ORACLE            DNS=My Oracle Data Source;DBQ=MYSER VER;
  2839.                      |UID=JohnS;PWD=Sesame
  2840.  
  2841.    There's a KnowledgeBase on Excel 5 on ftp.microsoft.com. Last time
  2842.    I looked, it was void of database stuff. Still, it may be a good
  2843.    idea to download it as the situation may have changed now.
  2844.  
  2845.  
  2846.    *** END OF VB/WIN FAQ DOCUMENT ***
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852. From ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack Tue Aug 23 23:11:09 1994
  2853. Newsgroups: comp.lang.basic.visual,comp.answers,news.answers
  2854. Path: ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack
  2855. From: knosack@park.uvsc.edu (Kris Nosack)
  2856. Subject: FAQ: comp.lang.basic.visual VB/DOS Frequently Asked Questions
  2857. X-Content-Currency: This FAQ changes regularly.  When a saved or printed copy
  2858.                     is over 6 months old, please obtain a new one.
  2859. Expires: Wed, 7 Sep 1994 05:30:36 GMT
  2860. Reply-To: ac150@freenet.buffalo.edu (Peter G. Millard)
  2861. Organization: Visual Basic FAQ Maintainers
  2862. Date: Sun, 21 Aug 1994 05:30:38 GMT
  2863. Approved: news-answers-request@MIT.Edu
  2864. X-Posting-Frequency: Posted on the 5th and 20th of each month.
  2865. Message-ID: <visual-basic-faq-dos-1-777447036@freenet.buffalo.edu>
  2866. Followup-To: comp.lang.basic.visual
  2867. Summary: Frequently asked questions concerning Visual Basic for DOS.
  2868. Keywords: FAQ VISUAL BASIC DOS
  2869. Sender: knosack@park.uvsc.edu (Kris Nosack)
  2870. Supersedes: <visual-basic-faq-dos-1-776151059@freenet.buffalo.edu>
  2871. Lines: 260
  2872. Xref: ankh.iia.org comp.lang.basic.visual:14008 comp.answers:3270 news.answers:9763
  2873.  
  2874. Posted-By: auto-faq 3.1.1.2
  2875. Archive-name: visual-basic-faq/dos
  2876.  
  2877. Last-Modified: 06/10/94
  2878.  
  2879.                    VISUAL BASIC FOR DOS (VBDOS)
  2880.                 Commonly asked Questions & Answers
  2881.                          Section IX - B
  2882.                -----------------------------------
  2883.  
  2884. PREFACE:
  2885. This document is a compilation of frequently asked questions and their
  2886. answers about Visual Basic for DOS which have been gathered from the
  2887. comp.lang.basic.visual newsgroup.   Although some efforts have been
  2888. made to find obvious errors, there is no guarantee that the information in
  2889. this document is error-free.  The FAQ maintainer, or anyone else
  2890. associated with this document, assume NO liability for the content or use
  2891. of this document.  If you find any errors, please report them to the address
  2892. given below.
  2893.  
  2894. Most FAQs (including this one) are available at the anonymous ftp archive
  2895. site "rtfm.mit.edu".  All four parts of the VB FAQ may be found in the
  2896. directory "pub/usenet/news.answers/visual-basic-faq".
  2897.  
  2898. You can also have the VB FAQs e-mailed to you by sending a message
  2899. to "mail-server@rtfm.mit.edu" with ONLY the text "send
  2900. usenet/news.answers/visual-basic-faq/*" in the body of the message.
  2901.  
  2902. As the FAQ maintainer, I don't have time to explore all of the aspects of
  2903. Visual Basic.  I rely on your submissions to improve the quality and
  2904. inclusiveness of this document.  If you have found a VB hint, tip, trick,
  2905. work-around, etc., please write it up and send it to me!
  2906.   Peter Millardac150@freenet.buffalo.edu   - VBDOS FAQ maintainer
  2907.  
  2908. Table of Contents:
  2909. 1.   How do I use (create) global variables in VBDOS?
  2910. 2.   Does VBDOS make standalone .exe files?
  2911. 3.   What is the current version of the VBDOS compiler?
  2912. 4.   How do I not make a text box beep when I hit the enter key?
  2913. 5.   How does Visual Basic handle shelled tasks? How do I find out
  2914.      when they are finished.
  2915. 6.   How do I break lines of long text into multiple lines of text in
  2916.      the msgbox?
  2917. 7.   What's the difference between MODAL and MODELESS
  2918.      forms?
  2919. 8.   When/Why should I use Option Explicit?
  2920. 9.   Why doesn't PRINT or CLS from a frm module work?
  2921. 10.  How do I invoke FKey traps which won't be triggered by other
  2922.      keys which share the same KeyCode?
  2923. 11.  How do I boost memory available to VBDOS.EXE (the IDE)?
  2924. 12.  My program runs in the IDE, but won't run when compiled??
  2925. 13.  MISC. Programming TIPS:
  2926.  
  2927. -----------------------------------------------------------------------------
  2928.  
  2929. 1.   How do I use (create) global variables in VBDOS?
  2930.      1.1. VBDOS provides the user with two types of global variables.
  2931.           These are both used in declarations of variables.
  2932.  
  2933.           To share variables between all subs and functions in a specific
  2934.           module, use the SHARED keyword. This makes that specific
  2935.           variable global _in that module_. For example:
  2936.  
  2937.                   DIM SHARED CancelFlag AS INTEGER
  2938.  
  2939.           would make the variable CancelFlag a global variable in that
  2940.           module.
  2941.  
  2942.           To share global variables between separate modules, use the
  2943.           COMMON keyword. For example:
  2944.  
  2945.                  COMMON SHARED CancelFlag AS INTEGER
  2946.  
  2947.           would make the variable global between all modules that this
  2948.           common statement appears in, and since we are using the
  2949.           SHARED keyword also, this will also be shared in all the subs
  2950.           and functions in the modules which this declare statement
  2951.           appears. All COMMON statements must be matched between
  2952.           modules which the variables should be global in. For example,
  2953.           if you have one set of 10 COMMON statements in one module,
  2954.           and a different set of 10 COMMON statements in another
  2955.           module in the same project, you will get a 'Type Mismatch
  2956.           Error'. Make all COMMON blocks identical in all the modules
  2957.           in a specific project. (See Misc. Programming Tips Below).
  2958.  
  2959. 2.   Does VBDOS make standalone .exe files?
  2960.      2.1. VBDOS can compile programs in two different ways (user
  2961.           option). It can compile programs to use a RUNTIME file (like
  2962.           a DLL) or can be compiled as a standalone .exe file. 
  2963.  
  2964. 3.   What is the current version of the VBDOS compiler?
  2965.      3.1. VBDOS is currently at version 1.0
  2966.  
  2967. 4.   How do I not make a text box beep when I hit the enter key?
  2968.      4.1. Put "something else" in your _KeyPress event, depending on
  2969.           what you really want. This code example makes *nothing*
  2970.           happen, for an extended period of time:
  2971.  
  2972.           Sub Text1_KeyPress (KeyAscii As Integer)
  2973.               If KeyAscii = 13 Then   '13 is Key_Return
  2974.                    KeyAscii = 0  '0 (zero) is nothing
  2975.               End If
  2976.           End Sub
  2977.  
  2978.           This might not be a very nice thing to do, since your users
  2979.           usually have some intention when they press Enter. Usually
  2980.           they will want to jump to the next control, like the Tab key
  2981.           does. You will then change the line KeyAscii=0 to KeyAscii=9
  2982.           (Key_Tab) in the example above. 
  2983.  
  2984.           BTW, you'll also find this in the Microsoft VB
  2985.           KnowledgeBase. They add that you should set the MultiLine
  2986.           property to False. Of course.
  2987.  
  2988. 5.   How does Visual Basic handle shelled tasks? How do I find out
  2989.      when they are finished.
  2990.      5.1. In VBDOS, all shelled tasks are completed before control
  2991.           returns to the program. No tasks are done while the DOS
  2992.           command is being executed.
  2993.  
  2994. 6.   How do I break lines of long text into multiple lines of text in the
  2995.      msgbox?
  2996.      6.1. Use the append a chr$(13) to the end of the string to break
  2997.           lines into multiple lines. EG:
  2998.  
  2999.                msg$ = "This is line 1" + chr$(13)
  3000.                msg$ = msg$ + "This is line 2"
  3001.                MSGBOX msg$
  3002.  
  3003. 7.   What's the difference between MODAL and MODELESS forms?
  3004.      7.1. Modal forms are forms which require user input before any
  3005.           other actions can be taken place. In other words, a modal form
  3006.           has exclusive focus until it is dismissed. When showing a
  3007.           modal form, the program pauses at the SHOW command until
  3008.           the modal form is either hidden or unloaded. The internal
  3009.           MSGBOX and INPUTBOX$ forms are examples of modal
  3010.           forms. To show a form modally, use the syntax:
  3011.           MyForm.SHOW 1
  3012.  
  3013.      7.2. Modeless forms are those which are shown but do not require
  3014.           immediate user input. Most child forms (in a MDI application)
  3015.           are typically modeless. To show a form modeless, use the
  3016.           syntax: MyForm.SHOW
  3017.  
  3018. 8.   When/Why should I use Option Explicit?
  3019.      8.1. Opinions vary greatly on this subject. The main reason to use
  3020.           the OPTION EXPLICIT statement at the top of all modules is
  3021.           to minimize the amount of bugs introduced into your code by
  3022.           misspelling a variable name. Most variants of BASIC
  3023.           (including VB) have the capability to create variables 'on the
  3024.           fly' (without any declarations). This capability can be a double
  3025.           edged sword.
  3026.  
  3027.           At the minimum, it is suggested to use the DEFINT A-Z
  3028.           statement in leu of OPTION EXPLICIT. This statement will
  3029.           cause any variables which are created on the fly to be created
  3030.           as integers as opposed to single precisions. (Integers take up
  3031.           less memory). 
  3032.  
  3033.           The OPTION EXPLICIT statement causes VB to 'disable' it's
  3034.           ability to create variables on the fly. Thus, all variables must be
  3035.           declared using a DIM or REDIM statement. All variables not
  3036.           declared will cause an error when the OPTION EXPLICIT
  3037.           statement is used. This will eliminate any bugs when a variable
  3038.           is misspelled.
  3039.  
  3040. 9.   Why doesn't PRINT or CLS from a frm module work?
  3041.      9.1. To print information to the screen bypassing the desktop, the
  3042.           commands must be issued from a .BAS module. All
  3043.           PRINT/CLS output from a form module is directed to the nul:
  3044.           device.
  3045.  
  3046. 10.  How do I invoke FKey traps which won't be triggered by other keys
  3047.      which share the same KeyCode?
  3048.      10.1.     To trap the only FKeys in events you need to use a
  3049.                combination of the KeyDown, KeyPress, and KeyUp
  3050.                events. 
  3051.  
  3052.           The basic concept for this is that _all_ keys trap the UP &
  3053.           DOWN events, while only 'printable' characters trigger the
  3054.           KeyPress event. Thus, when a character key is pressed, it will
  3055.           trigger the KeyDown, the KeyPress, then the KeyUp events (in
  3056.           that order). While a FKey (or arrow, or tab, etc...) will trigger
  3057.           the KeyDown, then the KeyUp events (in that order). 
  3058.  
  3059.           The following code uses a textbox tag property to decide
  3060.           whether a printable character is pressed or not.
  3061.  
  3062.                SUB Text1_KeyDown()
  3063.                     Text1.tag = "key"
  3064.                END SUB
  3065.  
  3066.                SUB Text1_KeyPress()
  3067.                     Text1.tag = ""
  3068.                END SUB
  3069.  
  3070.                SUB Text1_KeyUp()
  3071.                   IF Text1.tag = "key" then
  3072.                     '--PUT F-KEY HANDLER HERE----
  3073.                   ELSE
  3074.                     '--PUT OTHER KEY HANDLERS HERE----
  3075.                   END IF
  3076.                END SUB
  3077.  
  3078. 11.  How do I boost memory available to VBDOS.EXE (the IDE)?
  3079.      11.1.     Try to have as much EMM available as possible.
  3080.                VBDOS.EXE allocates subroutines & functions which are
  3081.                < 16K into EMM.
  3082.      11.2.     To make more conventional mem availble, use the /S:n
  3083.                switch. This will make VBDOS.EXE use a specific
  3084.                amount of conventional memory. A good compromise
  3085.                between speed & memory is /S:340. The lower the n
  3086.                value, the slower the environment runs.
  3087.      11.3.     Running out of DGROUP usually causes most 'out of
  3088.                memory' errors. Possible causes are:
  3089.           11.3.1.Too many subs & functions exist. Each one takes up
  3090.                46 bytes of DGROUP.
  3091.           11.3.2.   Large static arrays. All static arrays are stored in
  3092.                     DGROUP. If a DIM statement is for a COMMON
  3093.                     SHARED statement, the array becomes static. Make
  3094.                     the COMMON SHARED statement appear before
  3095.                     the DIM statement to make the array Dynamic &
  3096.                     therefore will not be stored in DGROUP.
  3097.           11.3.3.   Variable Overhead. Each var has a 4 byte overhead
  3098.                     for _each_ module. For multiple modules projects
  3099.                     which use lots of Global (COMMON) statements,
  3100.                     this overhead is repeated for _each_ module.
  3101.      11.4.     Possible causes for running out conventional memory:
  3102.           11.4.1.   Not enough EMM.
  3103.           11.4.2.   Subs or functions which exceed 16K.
  3104.           11.4.3.   Large arrays. Non-variable length string arrays can
  3105.                     be stored in EMM using the /ea switch.
  3106.  
  3107. 12.  My program runs in the IDE, but won't run when compiled??
  3108.      12.1.     Arrays are dynamic by default in the IDE, but when they
  3109.                are compiled, they are static by default. Therefore, they
  3110.                are stored in DGROUP instead of the far heap. Use
  3111.                '$DYNAMIC to make all arrays dynamic or use REDIM
  3112.                instead of DIM.
  3113.      12.2.     Program generates a "program memory overflow" during
  3114.                compile. You need to break a single module into multiple
  3115.                ones.
  3116.  
  3117.      
  3118. 13.  MISC. Programming TIPS:
  3119.      13.1.     When useing the form designed, to continuously draw
  3120.                controls of a specific type, hold down the control key
  3121.                when clicking on the appropriate control from the tool-
  3122.                box.
  3123.      13.2.     Use the INCLUDE statement to manage large numbers of
  3124.                COMMON SHARED statements, user defined data types,
  3125.                or external function DECLARES. To use an include file,
  3126.                simply put all the VBDOS statements that will be shared
  3127.                into a single file. Save the file as something appropriate.
  3128.                (Typical naming convention is to use an extension of .BI
  3129.                for basic include files). Then simply insert the line:
  3130.                         'INCLUDE: 'foobar.bi'
  3131.                into either your .BAS module, or the module level code
  3132.                in a form. 
  3133.  
  3134.  
  3135. From ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack Tue Aug 23 23:11:14 1994
  3136. Newsgroups: comp.lang.basic.visual,comp.answers,news.answers
  3137. Path: ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack
  3138. From: knosack@park.uvsc.edu (Kris Nosack)
  3139. Subject: FAQ: comp.lang.basic.visual VB/Win Shareware VBX List
  3140. X-Content-Currency: This FAQ changes regularly.  When a saved or printed copy
  3141.                     is over 6 months old, please obtain a new one.
  3142. Expires: Wed, 7 Sep 1994 05:30:43 GMT
  3143. Reply-To: harris@cs.uchicago.edu (Adam Harris)
  3144. Organization: Visual Basic FAQ Maintainers
  3145. Date: Sun, 21 Aug 1994 05:30:45 GMT
  3146. Approved: news-answers-request@MIT.Edu
  3147. X-Posting-Frequency: Posted on the 5th and 20th of each month.
  3148. Message-ID: <visual-basic-faq-vbx-shareware-1-777447043@cs.uchicago.edu>
  3149. Followup-To: comp.lang.basic.visual
  3150. Summary: Listing of Shareware VBX's for Visual Basic for Windows.
  3151. Keywords: FAQ VISUAL BASIC VBX SHAREWARE
  3152. Sender: knosack@park.uvsc.edu (Kris Nosack)
  3153. Supersedes: <visual-basic-faq-vbx-shareware-1-776151067@cs.uchicago.edu>
  3154. Lines: 489
  3155. Xref: ankh.iia.org comp.lang.basic.visual:14009 comp.answers:3271 news.answers:9764
  3156.  
  3157. Posted-By: auto-faq 3.1.1.2
  3158. Archive-name: visual-basic-faq/shareware-vbx-list
  3159.  
  3160. NOTICE: A greatly updated version of the Shareware Custom Controls list
  3161.         will be available sometime.  It will be posted to comp.lang.basic.visual
  3162.         as soon as it is done.  In the mean time this older list will have
  3163.         to do.
  3164.  
  3165.  
  3166.                          Shareware Custom Controls
  3167.  
  3168.                                20-Feb-94
  3169.     Inaccuricies and editorializing are the sole responsibility of 
  3170.     Adam Harris (harris@cs.uchicago.edu), who would appreciate any 
  3171.     corrections or dissenting opinions.  Archive names are from 
  3172.     major ftp sites.  Names at your favorite site may vary.  All 
  3173.     prices are in US$ and do not include S&H charges (usually $2-$3).
  3174.  
  3175.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3176.  
  3177.                                   Alarm
  3178.  
  3179. Control: alarm1.vbx                    Archive: alarm11.zip
  3180.  Author: Mabry Software                  Price: $10.00
  3181.     Ver: 1.1
  3182.  Keywds: schedule
  3183.  
  3184. Triggers events, like the timer, but using specific times rather than 
  3185. intervals.  Wildcard matching elegantly allows you to trigger events at 
  3186. regular intervals (i.e., every 10 minutes).
  3187.  
  3188.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3189.  
  3190.                                  BarCode
  3191.  
  3192.          
  3193. Control: barcod1.vbx                     Archive: barcod11.zip
  3194.  Author: Mabry Software                    Price: $15.00
  3195.     Ver: 1.1                               
  3196.  Keywds: data
  3197.  
  3198. Generates bar codes, in 4 different styles.  Can be bound to a data 
  3199. field.
  3200.  
  3201.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3202.  
  3203.                                   BmpLst
  3204.  
  3205. Control: bmplst1.vbx                   Archive: bmplst16.zip
  3206.  Author: Mabry Software                  Price: $20.00
  3207.     Ver: 1.6
  3208.  Keywds: list, graphic
  3209.  
  3210. List box with pictures, vertically aligned over a caption.
  3211.  
  3212.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3213.  
  3214.                                  Calendar
  3215.  
  3216. Control: calendar.vbx                  Archive: vbcal.zip
  3217.  Author: Rijnhaave Office Automation     Price: $0.00
  3218.     Ver:
  3219.  Keywds: calendar
  3220.  
  3221. Wierd and buggy date entry box with pop-up calendar.  No customization, 
  3222. no documentation.
  3223.  
  3224.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3225.  
  3226.                                  CTLWhWnd
  3227.  
  3228. Control: ctlwhwnd.dll                  Archive: vbhwnd.zip
  3229.  Author: Jonathan Zuck                   Price: $0.00
  3230.     Ver:
  3231.  Keywds: api
  3232.  
  3233. One function, ControlhWnd, which returns the hWnd for a given control.
  3234.  
  3235.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3236.  
  3237.                                  EndTask
  3238.  
  3239. Control: entask.dll                    Archive: entask.zip
  3240.  Author: Jeff Simms                      Price: $0.00
  3241.     Ver:
  3242.  Keywds: task
  3243.  
  3244. Intercepts "End Task" from the Task Manager.
  3245.  
  3246.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3247.  
  3248.                          File and Disk Space Info
  3249.  
  3250. Control: dfinfo1.vbx                   Archive: dfinfo14.zip
  3251.  Author: Mabry Software                  Price: $15.00
  3252.     Ver: 1.4
  3253.  Keywds: disk, file
  3254.  
  3255. Two controls provide technical statistics of a drive and extended file 
  3256. information, respectively.
  3257.  
  3258.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3259.  
  3260.                         File Manager Drag and Drop
  3261.  
  3262. Control: fmdrop1.vbx                   Archive: fmdrop10.zip
  3263.  Author: Mabry Software                  Price: $15.00
  3264.     Ver: 1.0
  3265.  Keywds: file, drag-drop
  3266.  
  3267. Enables drag and drop of single or multiple files from the File Manager 
  3268. or what have you.
  3269.  
  3270.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3271.  
  3272.                               Four Controls
  3273.  
  3274. Control: <see below>                   Archive: vb4ctrls.zip
  3275.  Author: Jeng Long Jiang                 Price: $0.00
  3276.     Ver:
  3277.  Keywds: graphic, status
  3278.  
  3279. Four graphic controls:  vmeter.vbx and hmeter.vbx are "flooding" status 
  3280. gauge controls; spin.vbx (!) is a spin tool.  The best of the lot seems 
  3281. to be 3dlabel.vbx, which is actually a button which holds states like a 
  3282. toolbar button.  No documentation.
  3283.  
  3284.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3285.  
  3286.                                FXTools Demo
  3287.  
  3288. Control: fximage.vbx                   Archive: fxtool.zip
  3289.  Author: ImageFX                         Price:
  3290.     Ver: 1.0
  3291.  Keywds: demo, graphic
  3292.  
  3293. Demo of the FXTools suite of VB controls (fxlabel.vbx and fximage.vbx).  
  3294. An impressive collection of wipes, fades, block text, drop shadows, etc.
  3295.  
  3296.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3297.  
  3298.                             Grinning Jack Deck
  3299.  
  3300. Control: vbcards.dll                   Archive: vbcards.zip
  3301.  Author: Richard R. Sands                Price: $0.00
  3302.     Ver: 1.01p
  3303.  Keywds: game
  3304.  
  3305. Provides a bitmap collection of cards, including a joker, and basic card 
  3306. API.
  3307.  
  3308.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3309.  
  3310.                                  GT Icon
  3311.  
  3312. Control: gticon.dll                    Archive: gticon.zip
  3313.  Author: George R. Torralba              Price: $0.00
  3314.     Ver:
  3315.  Keywds: icon, drag-drop
  3316.  
  3317. Assigns and retrieves the DragIcon property of controls.
  3318.  
  3319.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3320.  
  3321.                                GT List Box
  3322.  
  3323. Control: gtlist.vbx                    Archive: tlstvbx2.zip
  3324.  Author: George R. Torralba              Price: $15.00
  3325.     Ver: 2.0
  3326.  Keywds: list, graphic
  3327.  
  3328. List box with some extra properties to let you set tab positions, 
  3329. control the existance of scroll bars, color items in the list, or 
  3330. associate bitmaps with items.  [Free for non-commercial use.]
  3331.  
  3332.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3333.  
  3334.                               GT Toolbar Kit
  3335.  
  3336. Control: gttbar.vbx                    Archive: gttbar01.zip
  3337.  Author: George R. Torralba              Price: $15.00
  3338.     Ver: 1.0
  3339.  Keywds: toolbar, graphic, status
  3340.  
  3341. GT Toolbar provides a toolbar button, represented by a cell of a toolbar 
  3342. bitmap.  Registered users can use the picture property to define their 
  3343. own toolbar graphics.  (You can't force the button to stay in down 
  3344. state, unfortunately.)  GT Panel is a stripped down 3d panel useful for 
  3345. as a container for toolbars or status boxes.
  3346.  
  3347.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3348.  
  3349.                              Ini File Manager
  3350.  
  3351. Control: inicon2.vbx                   Archive: inicon26.zip
  3352.  Author: Mabry Software                  Price: $5.00
  3353.     Ver: 2.6
  3354.  Keywds: ini
  3355.  
  3356. Provides an interface to reading and writing ini files, including 
  3357. win.ini, or application specific ini files.
  3358.  
  3359.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3360.  
  3361.                                   InpOut
  3362.  
  3363. Control: inpout.dll                    Archive: inpout.zip
  3364.  Author: Jay Munro                       Price: $0.00
  3365.     Ver:
  3366.  Keywds: io
  3367.  
  3368. An INP and OUT replacement, written in assembler and used like the 
  3369. QuickBasic routines.  Includes source.  (For some reason Mr. Munro saw 
  3370. fit to include Software Assist's SCFILE package -- the dll is actually 
  3371. very small.)
  3372.  
  3373.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3374.  
  3375.                                   JoyStk
  3376.  
  3377. Control: joystk1.vbx?                  Archive: joystk10.zip
  3378.  Author: Mabry Software                  Price: $15.00
  3379.     Ver: 1.0
  3380.  Keywds: io
  3381.  
  3382. Provides an interface to up to two joysticks.
  3383.  
  3384.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3385.  
  3386.                                  MailSlot
  3387.  
  3388. Control: mslot1.vbx                    Archive: mslot10.zip
  3389.  Author: Mabry Software                  Price: $30.00
  3390.     Ver: 1.0
  3391.  Keywds: mail
  3392.  
  3393. Mail slot interface.
  3394.  
  3395.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3396.  
  3397.                                 Menu Event
  3398.  
  3399. Control: menuev2.vbx                   Archive: menuev21.zip
  3400.  Author: Mabry Software                  Price: $10.00
  3401.     Ver: 2.1
  3402.  Keywds: menu, status
  3403.  
  3404. Emits menu events while the highlight travels over entries in the menu 
  3405. bar, before the _click event is called.  Good in combination with 
  3406. dynamic status boxes.
  3407.  
  3408.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3409.  
  3410.                              Message Blaster
  3411.  
  3412. Control: msgblast.vbx                  Archive: tbox100.zip
  3413.  Author: Ed Staffin                      Price: $0.00
  3414.     Ver: 1.1
  3415.  Keywds: toolbar, graphic
  3416.  
  3417. Provides a floating palette, complete with tiny title bar, which you can 
  3418. use in conjunction with an MDI form.  Message notification is rather 
  3419. crude and hacky.
  3420.  
  3421.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3422.  
  3423.                                MhFormScroll
  3424.  
  3425. Control: mhfs200.vbx                   Archive: mhfs200.zip
  3426.  Author: MicroHelp                       Price: $0.00
  3427.     Ver: 2.0
  3428.  Keywds: scroll
  3429.  
  3430. Add scroll bars to a form or a container.  Crashed my computer, so I 
  3431. don't know if it works.
  3432.  
  3433.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3434.  
  3435.                                  MListBox
  3436.  
  3437. Control: mlistbox.vbx                  Archive: mlist110.zip
  3438.  Author: Mike Warning                    Price:
  3439.     Ver: 1.1
  3440.  Keywds: list
  3441.  
  3442. Multiple selection list box with ability to find strings, associate 
  3443. numeric data with list items, and set tabs with some precision.  
  3444. Variable pricing scheme.
  3445.  
  3446.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3447.  
  3448.                                 MouseWatch
  3449.  
  3450. Control: mwatch.dll                    Archive: mwatch.zip
  3451.  Author: User Friendly, Inc.             Price: $0.00
  3452.     Ver:
  3453.  Keywds: mouse, status
  3454.  
  3455. Dynamically tracks mouse position, emitting _KeyDown events to the 
  3456. form.  Good for dynamic hinting, a la Word Perfect.
  3457.  
  3458.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3459.  
  3460.                                  OpenDlg
  3461.  
  3462. Control: opendlg.vbx                   Archive: opendl.zip
  3463.  Author: Zane Thomas                     Price: $0.00
  3464.     Ver:
  3465.  Keywds: graphic
  3466.  
  3467. Does the same thing as cmdialog.vbx.
  3468.  
  3469.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3470.  
  3471.                          PBClone Windows Library
  3472.  
  3473. Control: pcbwin.dll                    Archive: pcbwin.zip
  3474.  Author: Thomas Hanlin III               Price: $19.95
  3475.     Ver: 1.0
  3476.  Keywds: math, utility
  3477.  
  3478. A suite of utility routines:  number of floppy or comm ports, checksums, 
  3479. bit operations, etc.
  3480.  
  3481.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3482.  
  3483.                               Percentage Bar
  3484.  
  3485. Control: percnt2.vbx                   Archive: percnt23.zip
  3486.  Author: Mabry Software                  Price: $10.00
  3487.     Ver: 2.3
  3488.  Keywds: graphic, status
  3489.  
  3490. Very nice 3D style percentage bar, effectively replacing threed's 
  3491. flooding SSPanel.  Doesn't have wierd flood types like SSPanel 
  3492. (circular, right to left), but does include text color reversal over the 
  3493. flood, bevelled floods, and no flashing at all.  A much more standard 
  3494. look.
  3495.  
  3496.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3497.  
  3498.                                   Prompt
  3499.  
  3500. Control: prompt.vbx                    Archive: prompt11.zip
  3501.  Author: Andrew S. Dean                  Price: $15.00
  3502.     Ver: 1.1
  3503.  Keywds: cli
  3504.  
  3505. Textbox variant for command-line-style input.  Includes argument parsing 
  3506. into words and a history capacity.
  3507.  
  3508.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3509.  
  3510.                                   QCards
  3511.  
  3512. Control: qcard.dll                     Archive: qcard.zip
  3513.  Author: Stephen Murphy                  Price: $0.00
  3514.     Ver:
  3515.  Keywds: game
  3516.  
  3517. Deck of cards with card support functions.  Can work with 2 decks at a 
  3518. time, no jokers.
  3519.  
  3520.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3521.  
  3522.                                   RoText
  3523.  
  3524. Control: rotext1.vbx?                  Archive: vbrotfnt.vbx
  3525.  Author: Mabry Software                  Price: $15.00
  3526.     Ver:
  3527.  Keywds: label, font, graphic
  3528.  
  3529. Provides rotatable labels, TrueType only.
  3530.  
  3531.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3532.  
  3533.                                   SoundX
  3534.  
  3535. Control: soundx1.vbx                   Archive: soundx12.zip
  3536.  Author: Mabry Software                  Price: $10.00
  3537.     Ver: 1.2
  3538.  Keywds: matching
  3539.  
  3540. Metaphone and Soundex text matching algorithms let you search by phonic 
  3541. affinity.
  3542.  
  3543.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3544.  
  3545.                                  spSound
  3546.  
  3547. Control: winsound.dll                  Archive: spsoun.zip
  3548.  Author: Alfred J. Giordano              Price: $0.00
  3549.     Ver:
  3550.  Keywds: sound
  3551.  
  3552. Provides low-level port-based sound routines.
  3553.  
  3554.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3555.  
  3556.                                 ToolButton
  3557.  
  3558. Control: toolbutn.vbx                  Archive: vbtool20.zip
  3559.  Author: Brett Foster                    Price: $0.00
  3560.     Ver: 2.0b
  3561.  Keywds: toolbar, help, graphic
  3562.  
  3563. Full-feature toolbar buttons, with up to 6 states (for attributes).  Use 
  3564. your own image and break it into cells of graphic buttons, or use the 
  3565. suite of standard buttons.  Also includes ContextHelp control (same vbx) 
  3566. to assist with help management.
  3567.  
  3568.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3569.  
  3570.                                  VBCTL3D
  3571.  
  3572. Control: vbctl3d.vbx                   Archive: vb3d.zip (?)
  3573.  Author: Bernd Beeks & Jeff Sims         Price: $29.00
  3574.     Ver: 1.32
  3575.  Keywds: graphic
  3576.  
  3577. When added to a form, transforms standard controls into embedded, 3d 
  3578. controls.  Covers labels, message boxes, check boxes, even menus and 
  3579. user-specified controls (by class name).  Does not allow you to specify 
  3580. bevel width or depth.
  3581.  
  3582.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3583.  
  3584.                                  VBPoint
  3585.  
  3586. Control: vbpoint.dll                   Archive: vbptr.zip
  3587.  Author: Jonathan Zuck                   Price: $0.00
  3588.     Ver:
  3589.  Keywds: api
  3590.  
  3591. Two routines: convert long pointers (LP) to VB strings, and copy strings 
  3592. to another address (another LP).
  3593.  
  3594.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3595.  
  3596.                      VideoSoft Custom Control Library
  3597.  
  3598. Control: vsvbx.vbx                     Archive: 3dctrls or v
  3599.  Author: VideoSoft                       Price: $45.00
  3600.     Ver: 2.2a
  3601.  Keywds: matching, graphic
  3602.  
  3603. Three controls:  3D Elastic, a smart container which resizes it's 
  3604. contents automatically, embeds contained controls in true 3d style, and 
  3605. can be nested to provide code-free window splitter bars; Awksome, a text 
  3606. parser based on the AWK language; and IndexTab, which groups controls 
  3607. with a hypercard looking tabbed notepad.
  3608.  
  3609.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3610.  
  3611.                                  VTSocket
  3612.  
  3613. Control: vtsocket.vbx                  Archive: vtsocket.zip
  3614.  Author: Visual Technology Products      Price: $50.00
  3615.     Ver: 1.0b
  3616.  Keywds: comm
  3617.  
  3618. Windows sockets support.  Does not support UDP sockets, out of band, or 
  3619. broadcasting.
  3620.  
  3621.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3622.  
  3623.                                  WinSock
  3624.  
  3625. Control: vbwsk.vbx                     Archive: vbwsk01a.zip
  3626.  Author: Brian Syme                      Price: $0.00
  3627.     Ver: 0.1a
  3628.  Keywds: comm
  3629.  
  3630. Provides access to Windows Sockets API.
  3631.  
  3632.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3633.  
  3634.                                   ZipInf
  3635.  
  3636. Control: zipinf1.vbx                   Archive: zipinf10.zip
  3637.  Author: Mabry Software                  Price: $10.00
  3638.     Ver: 1.0
  3639.  Keywds: compress
  3640.  
  3641. Provides thorough information about the files in a zip archive.  Does 
  3642. not uncompress files or deal with other sorts of archives.
  3643.  
  3644.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3645.  
  3646.  
  3647. From ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack Tue Aug 23 23:11:20 1994
  3648. Newsgroups: comp.lang.basic.visual,comp.answers,news.answers
  3649. Path: ankh.iia.org!uunet!MathWorks.Com!yeshua.marcam.com!charnel.ecst.csuchico.edu!xmission!u.cc.utah.edu!park.uvsc.edu!knosack
  3650. From: knosack@park.uvsc.edu (Kris Nosack)
  3651. Subject: FAQ: comp.lang.basic.visual VB/Win Commercial VBX List
  3652. X-Content-Currency: This FAQ changes regularly.  When a saved or printed copy
  3653.                     is over 6 months old, please obtain a new one.
  3654. Expires: Wed, 7 Sep 1994 05:30:52 GMT
  3655. Reply-To: blpwang@acs.ucalgary.ca (Alvin Wang)
  3656. Organization: Visual Basic FAQ Maintainers
  3657. Date: Sun, 21 Aug 1994 05:30:58 GMT
  3658. Approved: news-answers-request@MIT.Edu
  3659. X-Posting-Frequency: Posted on the 5th and 20th of each month.
  3660. Message-ID: <visual-basic-faq-vbx-commercial-1-777447052@acs.ucalgary.ca>
  3661. Followup-To: comp.lang.basic.visual
  3662. Summary: Listing of Commercial VBX's for Visual Basic for Windows.
  3663. Keywords: FAQ VISUAL BASIC VBX COMMERCIAL
  3664. Sender: knosack@park.uvsc.edu (Kris Nosack)
  3665. Supersedes: <visual-basic-faq-vbx-commercial-1-776151077@acs.ucalgary.ca>
  3666. Lines: 1399
  3667. Xref: ankh.iia.org comp.lang.basic.visual:14010 comp.answers:3272 news.answers:9765
  3668.  
  3669. Posted-By: auto-faq 3.1.1.2
  3670. Archive-name: visual-basic-faq/commercial-vbx-list
  3671.  
  3672.     Last-modified: 07/04/94
  3673.     Author: Alvin Wang
  3674.     All rights reserved.  Permission given for non-profit 
  3675.     redistribution as long as copyright retained.
  3676.  
  3677.               Commercial Visual Basic for Windows Products
  3678.     The next release will be produced from an Access database that will be
  3679.     available from CICA.  I will also be releasing a viewer program with some
  3680.     Query by Example capabilities.  This has been delayed by work schedules.
  3681.     I added some more information.
  3682.  
  3683.     Inaccuracies and editorializing are the sole responsibility of 
  3684.     Alvin Wang (blpwang@acs.ucalgary.ca), who would appreciate any 
  3685.     corrections or dissenting opinions.  
  3686.  
  3687.     All prices are in US funds unless otherwise stated.
  3688.  
  3689.  Contacting the Editor
  3690.  3553 31 Street NW, Suite 100
  3691.  Calgary, AB, T2L 2K7
  3692.  
  3693.  New Reviews of Products
  3694.  SpyWorks/VB
  3695.  Version Stamper- VB
  3696.  HelpBreeze
  3697.  Formula One
  3698.  
  3699.  
  3700.  AREAS Covered 
  3701.  Accounting Source
  3702.  Charting Libraries
  3703.  Communications Libraries
  3704.  Database Access Libraries
  3705.  Debuggers
  3706.  Drawing Libraries
  3707.  Email Libraries
  3708.  File Viewers
  3709.  General Libraries
  3710.  GIS Libraries
  3711.  Grid Libraries
  3712.  Help File Creation Tools
  3713.  Hypertext Libraries
  3714.  Imaging Libraries
  3715.  Mainframe Access Libraries
  3716.  Midi Libraries
  3717.  Misc Libraries
  3718.  Multimedia Libraries
  3719.  Network Libraries
  3720.  Pen Libraries
  3721.  Print Tools
  3722.  Programming Tools
  3723.  Project Management Tools
  3724.  Report Writers
  3725.  Scientific/Statistical Libraries
  3726.  Special Effects Libraries
  3727.  Speech Libraries
  3728.  Spelling Libraries
  3729.  Spreadsheet Libraries
  3730.  Telephone Management Libraries
  3731.  Test Tools
  3732.  Text Libraries
  3733.  Word Processing Libraries
  3734.  User Interface Libraries
  3735.  
  3736.  Appendix A - Addresses of companies
  3737.  
  3738.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3739.         Category - ACCOUNTING SOURCE
  3740.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3741.  
  3742.                 Accounting System Developer's Kit
  3743.  Author: Bayou City Systems                     Price: $
  3744.     Ver:                                    Royalties: Depends
  3745.     Keywds: ACCT SOURCE AP GL AY PAY
  3746.  
  3747.  
  3748.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3749.         Category - CHARTING LIBRARIES
  3750.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3751.  
  3752.                 ChartPro
  3753.  Author: Sub Systems Inc.                       Price: $399.00
  3754.     Ver:                                    Royalties: None
  3755.     Keywds: DLL Chart CSOURCE
  3756.  
  3757.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3758.  
  3759.                 Graphics Server SDK
  3760.  Author: Pinnacle Publishing Inc                Price: $249.00
  3761.     Ver: 2.0                                Royalties: ??
  3762.     Keywds: DLL
  3763.  
  3764.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3765.         Category - COMMUNICATIONS LIBRARIES
  3766.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3767.  
  3768.                 Crystal Comm
  3769.  Author: Crystal Software                       Price: $179
  3770.     Ver:                                    Royalties: None
  3771.     Keywds: DLL COMM
  3772.  
  3773.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3774.  
  3775.                 PDQComm for Windows
  3776.  Author: Crescent Software                      Price: $149.00
  3777.     Ver:                                    Royalties: None
  3778.     Keywds: VBX COMM
  3779.  
  3780.  I have found this product to be very well written.  I am waiting for
  3781.  the latest version.  The technical support group was very helpful
  3782.  with my problems with previous versions.
  3783.  
  3784.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3785.  
  3786.              Microhelp Communications
  3787.  
  3788.  Author: MicroHelp Inc.                         Price: $149
  3789.     Ver:                                    Royalties: None
  3790.     Keywds: DLL COMM
  3791.  
  3792.      
  3793.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3794.         Category - DATABASE ACCESS
  3795.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3796.              
  3797.                 Aware/VBX
  3798.  Author: FarPoint Technologies                  Price: $69.95
  3799.     Ver: 1.0                                Royalties: None
  3800.  Keywds: Data-Access VBX
  3801.  
  3802.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3803.                 Bridgit
  3804.  Author: Unelko Corp                            Price: $69.95
  3805.     Ver: 3.0                                Royalties: None
  3806.  Keywds: Data-Access DLL DBASE
  3807.  
  3808.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3809.                 CodeBasic
  3810.  Author: Sequiter Software                      Price: $249.95
  3811.     Ver:                                    Royalties: None
  3812.  Keywds: Data-Access VBX DBASE
  3813.  
  3814.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3815.                
  3816.                 Controls for Btrieve
  3817.  Author: Smithware Inc                          Price: $249.95
  3818.     Ver:                                    Royalties: None
  3819.  Keywds: Data-Access VBX Btrieve
  3820.  
  3821.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3822.  
  3823.                 Multilink/VB2               
  3824.  Author: Q+E                                    Price: $399
  3825.     Ver: 2.0                                Royalties: None
  3826.  Keywds: Data-Access VBX
  3827.  
  3828.  This is the only control that I am aware of that offers Query by 
  3829.  Example.  It is a very impressive and stable tool.  The error handling
  3830.  is more robust than the JET engine.  It over 30 databases but I only
  3831.  tested a few.  They all worked fine.  I really like the ease of use but
  3832.  there are more tools available for the JET engine.
  3833.        
  3834.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3835.  
  3836.                 Paradox Engine
  3837.  Author: Borland International                  Price: $495
  3838.     Ver: ??                                 Royalties: ??
  3839.  Keywds: DLL PARADOX
  3840.  
  3841.  I used this with C and found it to be very reliable and reasonably
  3842.  quick.
  3843.  
  3844.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3845.  
  3846.                 Visual Basic Pro
  3847.  Author: Microsoft                              Price: $495
  3848.     Ver: 3.0                                Royalties: None
  3849.  Keywds: Data-Access VBX
  3850.  Commnt: The JET engine is the standard.
  3851.  
  3852.  This is the standard.  You need the data access control for many of 
  3853.  the third party tools.  It is the engine supplied with Access 1.0.
  3854.  The biggest problem that I have is the lack of support for Access
  3855.  security.  The phone support is impossible but I like the Fax Back 
  3856.  support.
  3857.  
  3858.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3859.  
  3860.                 Visual/db Database Manager
  3861.  Author: AJS Publishing                         Price: $149 Network $299
  3862.     Ver: ??                                 Royalties: ??
  3863.  Keywds: Data-Access VBX DBASE
  3864.  
  3865.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3866.  
  3867.                 Watcom SQL for Windows
  3868.  Author: Watcom                                 Price: $395
  3869.     Ver: ??                                 Royalties: ??
  3870.  Keywds: DB SQL
  3871.  
  3872.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3873.         Category - DEBUGGING TOOLS
  3874.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3875.  
  3876.                PinPoint
  3877.  Author: Avanti Software Inc.                   Price: $199
  3878.     Ver: ??                                 Royalties: NA
  3879.  Keywds: DEBUG
  3880.    
  3881.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3882.         Category - DRAWING/GRAPHICS LIBRARIES
  3883.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3884.                 3D Tools for VB
  3885.  
  3886.  Author: Micro System Options                   Price: $149
  3887.     Ver:                                    Royalties: ??
  3888.     Keywds: DLL 3D RENDER
  3889.  
  3890.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3891.                 VBX Artist
  3892.  
  3893.  Author: Bennet-Tec Information Systems         Price: $250/$275
  3894.     Ver:                                    Royalties: None
  3895.     Keywds: VBX DRAWING
  3896.  
  3897.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3898.                 Visio
  3899.  
  3900.  Author: ShapeWare Corporation                  Price: $199
  3901.     Ver: 2.0                                Royalties: None
  3902.     Keywds: OLE DRAWING
  3903.  
  3904.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3905.         Category - EMAIL LIBRARIES
  3906.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3907.   
  3908.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3909.         Category - FILE VIEWERS
  3910.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3911.               VBVIEWER
  3912.  
  3913.  Author: Microhelp Inc.                         Price: $99
  3914.     Ver:                                    Royalties: None
  3915.     Keywds: VBX VIEW
  3916.  
  3917.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3918.         Category - GENERAL LIBRARIES
  3919.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3920.                 QuickPak Professional for Windows
  3921.  
  3922.  Author: Crescent Software                      Price: $199.00
  3923.     Ver:                                    Royalties: None
  3924.     Keywds: VBX CALENDAR METER FORM PICTURE HYPERTEXT ETC
  3925.  
  3926.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3927.                 VB/Muscle
  3928.  
  3929.  Author: MicroHelp Imc.                         Price: $199.00
  3930.     Ver: 2.1
  3931.  Keywds: DLL
  3932.  
  3933.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3934.         Category - GIS LIBRARIES
  3935.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3936.  
  3937.                 Map Server 2
  3938.  Author: Geosoft Ltd                            Price: 299 Pounds
  3939.     Ver:                                    Royalties: None
  3940.  Keywds: DLL MAPPING
  3941.  
  3942.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3943.         Category - GRID LIBRARIES
  3944.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3945.  
  3946.                 Data Widgets 
  3947.  Author: Sheridan Software Systems              Price: $129
  3948.     Ver:
  3949.  Keywds: Grid Data-Aware VBX
  3950.  
  3951.  This grid has a different way of implementing pull downs, which 
  3952.  takes a bit of fiddling to get working but it is worth it.  There 
  3953.  is a great deal of speed improvement since it only reads in as much
  3954.  as required.
  3955.  
  3956.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3957.  
  3958.                 Grid/VBX
  3959.  Author: FarPoint Technologies                  Price: $??
  3960.     Ver: 1.0                                Royalties: None
  3961.  Keywds: Grid Data-Aware VBX
  3962.  
  3963.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3964.                 
  3965.                 TrueGrid Pro 
  3966.  
  3967.  Author: APEX Software Corporation              Price: $99.95
  3968.     Ver: 2.1c
  3969.  KeyWds: Grid Data-Aware VBX
  3970.  
  3971.  A very easy to use grid.  The nicest feature is that memo fields can be 
  3972.  pulled down for in place editting.
  3973.  
  3974.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3975.         Category - HELP FILE CREATION TOOLS
  3976.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3977.                         ForeHelp
  3978.  Author: ForeFront                              Price: $ 395
  3979.     Ver: 1.0                                    Royalties: None
  3980.  KeyWds: HELP 
  3981.  
  3982.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3983.  
  3984.                         HelpBreeze
  3985.  Author: Solutionsoft                           Price: $ 349
  3986.     Ver: 1.6                                    Royalties: None
  3987.  Demo File: HLPBRZ.ZIP on CICA
  3988.  KeyWds: HELP WINWORD
  3989.  
  3990.  This program creates help files and needs Word for Windows 2.x or 6.x.
  3991.  There are benefits to using a program that needs Winword since you can
  3992.  import your manual and turn it into your help file.  The program runs on
  3993.  top of Word by adding a toolbar and more selections to your pulldown menus.
  3994.  The jumps are simulated quite well.  The icons on the new toolbar are
  3995.  just the first letter of the command so its good that it has popup help 
  3996.  balloons.  
  3997.  
  3998.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3999.  
  4000.                         Windows Help Magician
  4001.  
  4002.  Author: Software Interphase Inc.               Price: $
  4003.     Ver: ???                         Royalties: None
  4004.  KeyWds: HELP
  4005.  
  4006.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4007.         Category - HYPERTEXT LIBRARIES
  4008.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4009.  
  4010.                         Hypertext Manager
  4011.  
  4012.  Author: Braintree Ltd.                         Price: $89
  4013.     Ver: ???                         Royalties: None
  4014.  KeyWds: HYPERTEXT
  4015.  
  4016.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4017.         Category - IMAGING LIBRARIES
  4018.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4019.                         Accusoft Image Format Library
  4020.  
  4021.  Author: Accusoft Corporation                   Price: $295.00
  4022.     Ver: 4.0                         Royalties: None
  4023.  KeyWds: VBX JPEG IMAGE 
  4024.  
  4025.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4026.                       ImageKnife/VBX PRO
  4027.  
  4028.  Author: Media Architects                       Price: $299.00
  4029.     Ver: ??                                 Royalties: None
  4030.  KeyWds: VBX JPEG IMAGE DATA-AWARE TWAIN
  4031.  
  4032.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4033.                         ImageMan/VB
  4034.  
  4035.  Author: Data Techniques Inc.                   Price: $299
  4036.     Ver: 3.0                         Royalties: None
  4037.  KeyWds: VBX JPEG IMAGE 
  4038.  
  4039.  Their support is pitiful.  I have been waiting for my free upgrade for 
  4040.  six months and the response is always that it is in the mail.  I could have
  4041.  bought an upgrade for the cost of long distance calls but I wouldn't
  4042.  be sure that I would get it.
  4043.  
  4044.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4045.                         Imagestream/VB
  4046.  
  4047.  Author: Visual Tools                           Price: $295.00
  4048.     Ver: ??                          Royalties: None
  4049.  KeyWds: VBX JPEG IMAGE 
  4050.  
  4051.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4052.                         Lead Tools/VB
  4053.  
  4054.  Author: LEAD Technologies                      Price: $295.00
  4055.     Ver:                                      Royalty: None
  4056.  KeyWds: VBX JPEG IMAGE 
  4057.  
  4058.  A very reliable VBX.  It's forte is its proprietary CMP compression but
  4059.  it reads and writes most others.  That is most but not all.  Some of the
  4060.  newer programs promise more but I can't compare.  The tech support is
  4061.  very responsive.
  4062.  
  4063.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4064.                         Metaview Imaging Control for VB
  4065.  
  4066.  Author: Metafile Information Systems           Price: $995.00
  4067.     Ver: 2.1                                  Royalty: None
  4068.  KeyWds: VBX TIF IMAGE ANNOTATE
  4069.  
  4070.  This VBX enables you to add hotspots and stickies to TIFF images.  The demo
  4071.  needs more work to demonstrate the features better.  It read the Winfax TIFF
  4072.  but not the Coreldraw or Microsoft Chart TIFF.  Unfortunately, the manual was
  4073.  only 56 pages and didn't explain what kind of TIFF was required.  It just
  4074.  implied that it could read all TIFFs.
  4075.  
  4076.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4077.                         Picture++
  4078.  
  4079.  Author: Rainbow Imaging                        Price: $425.00
  4080.     Ver:                                  Royalty: ??
  4081.  KeyWds: IMAGE 
  4082.  
  4083.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4084.  
  4085.                         Vision Tools
  4086.  
  4087.  Author: Evergreen Technologies                 Price: $495.00
  4088.     Ver:                                  Royalty: $195-$95
  4089.  KeyWds: VBX IMAGE MEDICAL
  4090.  
  4091.  The only control that I have found that accesses medical images but
  4092.  you should contact them to see if yours if covered.
  4093.  
  4094.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4095.         Category - MAIL ACCESS LIBRARIES
  4096.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4097.  
  4098.                 VB/NotesLink
  4099.  
  4100.  Author: Brainsorm Technologies                Price: $795
  4101.     Ver: ??                                Royalties: ??
  4102.  Keywds: VBX NOTES
  4103.  
  4104.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4105.                 Open Mail System
  4106.  
  4107.  Author: Raindrop Software                     Price: $??
  4108.     Ver: 1.0                               Royalties: ??
  4109.  Keywds: DLL MAIL
  4110.  
  4111.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4112.         Category - MAINFRAME ACCESS LIBRARIES
  4113.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4114.                 QuickApp
  4115.  
  4116.  Author: DCA                                   Price: $??
  4117.     Ver: ??                                Royalties: None
  4118.  Keywds: VBX MAINFRAME
  4119.  
  4120.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4121.                 Rumba SDK
  4122.  
  4123.  Author: WallData                              Price: $7500
  4124.     Ver: ??                                Royalties: None
  4125.  Keywds: VBX MAINFRAME
  4126.  
  4127.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4128.                 TransPortal Pro
  4129.  
  4130.  Author: Frustrum Group                        Price: $??
  4131.     Ver: ??                                Royalties: None
  4132.  Keywds: DLL MAINFRAME 3270 5250 VT100
  4133.  
  4134.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4135.         Category - MIDI LIBRARIES
  4136.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4137.  
  4138.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4139.         Category - MISC LIBRARIES
  4140.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4141.                         AutoData SDK II
  4142.  
  4143.  Author: AutoData Systems             Price: $295.00
  4144.     Ver:                          Royalties: None
  4145.  KeyWds: DLL OCR BARCODE DATA ENTRY FORM
  4146.  
  4147.  
  4148.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4149.         Category - MULTIMEDIA LIBRARIES
  4150.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4151.                 Media Shop
  4152.  
  4153.  Author: Motion Works                 Price: $299.00
  4154.     Ver:                          Royalties: ??
  4155.  KeyWds: VBX ANIMATE
  4156.  
  4157.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4158.                 MediaKnife/VBX
  4159.  
  4160.  Author: Media Architects             Price: $299.00
  4161.     Ver:                          Royalties: ??
  4162.  KeyWds: VBX ANIMATE
  4163.  
  4164.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4165.         NETWORK LIBRARIES         
  4166.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4167.                 IPX Toolkit
  4168.  
  4169.  Author: Intelec Systems              Price: $295.00
  4170.     Ver:                          Royalties: None
  4171.  KeyWds: VBX Network
  4172.  
  4173.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4174.  
  4175.                 NetPak Pro For Windows
  4176.  
  4177.  Author: Crescent Software            Price: $179.00
  4178.     Ver:                          Royalties: None
  4179.  KeyWds: VBX Network
  4180.  
  4181.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4182.                   MicroHelp Network Library
  4183.  
  4184.  Author: MicroHelp                    Price: $99.00
  4185.     Ver:                          Royalties: None
  4186.  KeyWds: VBX Network
  4187.  
  4188.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4189.         Category - PEN LIBRARIES
  4190.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4191.  
  4192.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4193.         Category - PRINT TOOLS
  4194.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4195.  
  4196.                   Code Print Pro
  4197.  
  4198.  Author: Pinnacle Publishing Inc      Price: $99.00
  4199.     Ver:                          Royalties: NA
  4200.  KeyWds: PRINT TOOL CODE
  4201.  
  4202.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4203.                   Pretty Printer
  4204.  
  4205.  Author: Aardvark Software            Price: $79.99
  4206.     Ver:                          Royalties: NA
  4207.  KeyWds: PRINT TOOL CODE
  4208.  
  4209.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4210.         Category - PROGRAMMING TOOLS
  4211.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4212.  
  4213.             Installit/VBX
  4214.  Author: HPI                                   Price: $??
  4215.     Ver: ??
  4216.  Keywds: INSTALL
  4217.  
  4218.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4219.             PCVS for VB
  4220.  Author: Intersolv                             Price: $??
  4221.     Ver: ??
  4222.  Keywds: PROJECT
  4223.  
  4224.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4225.             VB Assist
  4226.  Author: Sheridan Software Systems             Price: $179
  4227.     Ver: ??
  4228.  Keywds: PROG TOOL ASSIST
  4229.  
  4230.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4231.             VB Compress
  4232.  Author: Whippleware                           Price: $99.95
  4233.     Ver: ??
  4234.  Keywds: COMPRESS
  4235.  
  4236.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4237.             VB Project Works
  4238.  Author: Young Software Works                  Price: $??
  4239.     Ver: ??
  4240.  Keywds: PROJECT
  4241.  
  4242.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4243.             Version Stamper-VB
  4244.  Author: DesaWare                              Price: $??
  4245.     Ver: 1.0
  4246.  Keywds: VERSION
  4247.  
  4248.  If you distribute software based on VB, you probably have a problem
  4249.  insuring that your clients have the correct version of all the VBXs and
  4250.  DLLs required.  I often have a problem with users deleting files and 
  4251.  restoring incorrect versions.  This program is distributed with your 
  4252.  application and solves that problem.  It passed all the simple tests
  4253.  that I tried.
  4254.  
  4255.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4256.         Category - PROJECT MANAGEMENT TOOLS
  4257.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4258.                 Microsoft Project
  4259.  
  4260.  Author: Microsoft                             Price: $695
  4261.     Ver: 4.0                               Royalties: $695
  4262.  Keywds: OLE PROJECT
  4263.  
  4264.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4265.         Category - REPORT WRITERS
  4266.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4267.                 Crystal Reports Pro
  4268.  
  4269.  Author: Crystal Services                      Price: $129.00
  4270.     Ver: 3.0                               Royalties: None
  4271.  Keywds: VBX REPORT
  4272.  
  4273.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4274.  
  4275.                 MicroHelp Report Generator
  4276.  
  4277.  Author: MicroHelp Inc.                        Price: $189.00
  4278.     Ver: ??                                Royalties: None
  4279.  Keywds: VBX REPORT
  4280.  
  4281.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4282.  
  4283.  
  4284.                 R&R Report Writer
  4285.  
  4286.  Author: Concentric Data Systems Inc.          Price: $249-395
  4287.     Ver: ??                                Royalties: None
  4288.  Keywds: REPORT
  4289.  This report writer had the most painful method of passing parameters
  4290.  that I have ever seen.  You have to use a common file to pass parameters.
  4291.  The only nice feature that I found was the compatibility with a DOS version.
  4292.  
  4293.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4294.  
  4295.                 ReportSmith
  4296.  
  4297.  Author: Borland International                 Price: $299
  4298.     Ver: ??                                Royalties: ??
  4299.  Keywds: OLE REPORT
  4300.  
  4301.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4302.         Category - SCIENTIFIC/STATISTICAL LIBRARIES
  4303.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4304.  
  4305.                 QuickPak Scientific
  4306.  
  4307.  Author: Crescent Software                     Price: $149.00
  4308.     Ver: ??                                Royalties: ??
  4309.  Keywds: DLL MATH
  4310.  
  4311.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4312.  
  4313.                 SPSS Developer's Kit
  4314.  
  4315.  Author: SPSS                                  Price: $495
  4316.     Ver: ??                                Royalties: ??
  4317.  Keywds: STAT OLE
  4318.  
  4319.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4320.         Category - SPECIAL EFFECTS LIBRARIES
  4321.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4322.  
  4323.                 FXTools/VB
  4324.  
  4325.  Author: ImageFX                               Price: $129.00
  4326.     Ver: ??                                Royalties: None
  4327.  Keywds: VBX FX
  4328.  
  4329.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4330.         Category - SPEECH LIBRARIES
  4331.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4332.             Phonetic Engine 400
  4333.  Author: Speech Systems Inc.                    Price: $1195+
  4334.     Ver: ??                                 Royalties: $995+
  4335.  Keywds: VBX SPEECH
  4336.  
  4337.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4338.         Category - SPELLING LIBRARIES
  4339.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4340.                   Sentry Spelling-Checker Engine
  4341.  Author: Wintertree Software Inc.                Price: $299
  4342.     Ver: 2.3                                 Royalties: None
  4343.  Keywds: SPELL DLL
  4344.  
  4345.       =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4346.  
  4347.                Microhelp SpellPro
  4348.  
  4349.  Author: MicroHelp Inc.                        Price: $129.00
  4350.     Ver: ??
  4351.  Keywds: VBX SPELL
  4352.  
  4353.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4354.  
  4355.                 Spell Time
  4356.  Author: Sub Systems                            Price: $389
  4357.     Ver: ??                                 Royalties: None
  4358.  Keywds: SPELL DLL CSOURCE
  4359.  
  4360.       =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4361.  
  4362.                SpelTool VB
  4363.  
  4364.  Author: Turbo Toolware                        Price: $??
  4365.     Ver: ??
  4366.  Keywds: VBX SPELL
  4367.  
  4368.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4369.  
  4370.                 VT-Speller
  4371.  Author: Visual Tools                           Price: $149
  4372.     Ver: ??                                 Royalties: None
  4373.  Keywds: VBX SPELL OLE
  4374.  
  4375.         =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4376.         Category - SPREADSHEET LIBRARIES
  4377.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4378.                 Excel
  4379.  Author: Microsoft                              Price: $$
  4380.     Ver: 5.0                                Royalties: $$
  4381.  Keywds: OLE Spreadsheet
  4382.  
  4383.  The documentation is sparse on OLE Automation but it is well worth the 
  4384.  effort.  The problem is the cost in dollars and resources of using this
  4385.  solution.
  4386.  
  4387.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4388.  
  4389.                 Formula One
  4390.  Author: Visual Tools                           Price: $295
  4391.     Ver: 1.0                                Royalties: None
  4392.  Keywds: VBX Spreadsheet OLE
  4393.  
  4394.  The only VBX that I know is Excel compatible.  I like Excel because I 
  4395.  used to teach it so I found this very easy to use and much cheaper than
  4396.  Excel.
  4397.  
  4398.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4399.  
  4400.                 Spread/VBX
  4401.  Author: Farpoint                               Price: $245
  4402.     Ver: 2.0                                Royalties: None
  4403.  Keywds: VBX Spreadsheet
  4404.  
  4405.  It is not as easy to use as Excel.  The demo application was very 
  4406.  helpful.
  4407.  
  4408.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4409.         Category - TEST TOOLS
  4410.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4411.  
  4412.                 SQA Team Test
  4413.  
  4414.  Author: SQA Inc.                               Price: $
  4415.     Ver: ??                                 Royalties: NA
  4416.     Keywds: TEST
  4417.  
  4418.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4419.         Category - TEXT LIBRARIES
  4420.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4421.                 ZyIndex Developer's Toolkit
  4422.  
  4423.  Author: ZyLAB                                  Price: $
  4424.     Ver: ??                                 Royalties: ??
  4425.     Keywds: VBX TEXT SEARCH
  4426.  
  4427.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4428.         Category - Thesaurus LIBRARIES
  4429.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4430.  
  4431.                 ThesDB Thesaurus Database
  4432.  Author: Wintertree Software Inc.               Price: $299
  4433.     Ver: 2.1                                 Royalties: None
  4434.  Keywds: THESAURUS DLL
  4435.  
  4436.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4437.         Category - VIRTUAL REALITY
  4438.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4439.                 WorldToolKit
  4440.  
  4441.  Author: SENSE8                                 Price: $795
  4442.     Ver: 2.0                                Royalties: ??
  4443.     Keywds: VBX VR
  4444.  
  4445.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4446.         Category - WORD PROCESSING LIBRARIES
  4447.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4448.                 ALLText
  4449.  
  4450.  Author: Bennet-Tec Information Systems         Price: $125/$150
  4451.     Ver: 3.0                                Royalties: None
  4452.     Keywds: VBX TEXT
  4453.  
  4454.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4455.                 ALLText HT/Pro
  4456.  
  4457.  Author: Bennet-Tec Information Systems         Price: $350/$375
  4458.     Ver: 3.0                                Royalties: None
  4459.     Keywds: VBX TEXT HYPERTEXT DATA-AWARE
  4460.  
  4461.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4462.                 Word
  4463.  
  4464.  Author: Microsoft                              Price: $495
  4465.     Ver: 6.0                                Royalties: $495
  4466.     Keywds: OLE WP TEXT SPELL
  4467.  
  4468.  OLE Automation requires WordBasic and the documentation is hard to find.
  4469.  It performs much faster than DDE once you get past loading word.  
  4470.  Another massive product from Microsoft.
  4471.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4472.         USER INTERFACE LIBRARIES
  4473.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4474.  
  4475.             3D Gizmos
  4476.  Author: MicroHelp                    Price: $9.00
  4477.     Ver: ??                          Royalties: None
  4478.  KeyWds: VBX UI DATA-AWARE
  4479.  
  4480.  The look is very nice but the lookups cause a lot of overhead in loading
  4481.  a screen.  It preloads all the lookup data so a few good sized lookups
  4482.  and your user will fall asleep waiting for the screen.
  4483.  
  4484.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4485.             3D Widgets
  4486.  Author: Sheridan Software Systems    Price: $109.00
  4487.     Ver: ??                          Royalties: None
  4488.  KeyWds: VBX UI DATA-AWARE
  4489.  
  4490.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4491.  
  4492.             Custom Control Factory
  4493.  Author: DesaWare                     Price: $??
  4494.     Ver: 2.0                         Royalties: None
  4495.  KeyWds: UI
  4496.  
  4497.  
  4498.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4499.  
  4500.             Kollibri
  4501.  Author: European Software Connection Price: $249.00
  4502.     Ver: ??                          Royalties: None
  4503.  KeyWds: VBX UI
  4504.  
  4505.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4506.  
  4507.                 NICE ( Natural Interface for Computing Environments )
  4508.  Author: NCR                          Price: $
  4509.     Ver:                          Royalties: None
  4510.  KeyWds: VBX UI
  4511.  
  4512.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4513.  
  4514.                 VB/Magic Controls
  4515.  
  4516.  Author: AJS publishing Inc.          Price: $149.00
  4517.     Ver:                          Royalties: None
  4518.  KeyWds: VBX UI
  4519.  
  4520.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4521.  
  4522.                 SpyWorks/VB
  4523.  
  4524.  Author: DesaWare                     Price: $149.00
  4525.     Ver:                          Royalties: None
  4526.  KeyWds: VBX UI
  4527.  
  4528.  If you like msgblast.vbx, you'll love this tool.  It allows you to
  4529.  do some amazing things with VB that you thought would require C++.
  4530.  The examples are quite impressive.  The other capabilities like 
  4531.  checking to see how much resources are being consumed are very useful.
  4532.  Basically, this allows you to do anything that can be done in Windows
  4533.  using VB.  This is at the expense of making it much easier to crash
  4534.  Windows.
  4535.  
  4536.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4537.  
  4538.             ToolsKan VB
  4539.  
  4540.  Author: Kansmen Corp                 Price: $99.00
  4541.     Ver: 1.0                      Royalties: None
  4542.  KeyWds: VBX UI
  4543.  
  4544.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4545.  
  4546.             VSVBX
  4547.  
  4548.  Author: AJS publishing Inc.          Price: $49.00
  4549.     Ver:                          Royalties: None
  4550.  KeyWds: VBX UI TAB AWK ELASTIC
  4551.  
  4552.  
  4553.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4554.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4555.         Appendix A - Addresses of Companies
  4556.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4557.        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4558.  
  4559.  Aarvark Software
  4560.  800-482-2742
  4561.  201-833-4355
  4562.  201-833-1216        Fax
  4563.  Compuserve 70544,1372
  4564.  972 Sheffield Road
  4565.  Teaneck, NJ, USA    07666
  4566.  Products: Pretty Printer
  4567.  
  4568.  Accusoft Corporation
  4569.  800-525-3577
  4570.  508-898-2770
  4571.  508-898-29662        Fax
  4572.  112 Turnpike Road
  4573.  PO Box 1261
  4574.  Westborough, MA, USA    01581
  4575.  Products: Accusoft Image Format Library
  4576.  
  4577.  AJS Publishing 
  4578.  800-992-3383
  4579.  310-215-9135           Fax
  4580.  PO Box 83220
  4581.  Los Angeles, CA, USA   90083
  4582.  VB/MAgic Controls
  4583.  
  4584.  APEX Software Corporation
  4585.  412-681-4343
  4586.  412-681-4384            Fax
  4587.  Internet information:    truegrid@apexsc.com
  4588.  Internet orders:    tgorders@apexsc.com
  4589.  CompuServe:        71053,1062
  4590.  Anonymous FTP:        ftp.apexsc.com (demos and patches)
  4591.  Mailing list:        tglist-request@apexsc.com (announcments, patch notices)
  4592.  4516 Henry Street
  4593.  Pittsburgh, PA, USA    15213
  4594.  Products: Truegrid, Agility
  4595.  
  4596.  Avanti Software Inc.
  4597.  800-758-7011
  4598.  415-329-8999
  4599.  415-329-8722
  4600.  Compuserve: 76260,266
  4601.  385 Sherman Avenue, Unit 6
  4602.  Palo Alto, CA, USA    94306
  4603.  Products: PinPoint
  4604.  
  4605.  AutoData Systems
  4606.  800-662-2192
  4607.  612-941-8180
  4608.  612-941-7312            Fax
  4609.  10365 West 70th Street
  4610.  Eden Prairie, MN USA        55344-3446
  4611.  
  4612.  Bayou City Systems
  4613.  713-777-3736
  4614.  713-777-3746            Fax
  4615.  8535 Triple Crown Drive
  4616.  Houston, TX, USA        77071
  4617.  Products: Accounting Systems Developer Kit
  4618.  
  4619.  Bennet-Tec Information Systems
  4620.  516-433-6283
  4621.  516-822-2679            Fax
  4622.  71201.1075@compuserve.com
  4623.  10 Steuben Drive
  4624.  Jericho, NY, USA        11753
  4625.  Products: AllText, Alltext Pro, VBX Artist, Picscroll, FileIcon&DragDrop
  4626.  ScatterPlot3D, Tlist
  4627.  Comment: The second price is the cost for non-US customers.  The only company
  4628.  with a differential pricing policy.
  4629.  
  4630.  Borland
  4631.  800-366-6464 ext 8034  USA
  4632.  800-461-3327           Canada
  4633.  408-461-9000
  4634.  408-461-8088            Fax
  4635.  1800 Green Hills Road
  4636.  Scotts Valley, CA        95067-0001
  4637.  Products: Visual Solutions, Paradox Engine
  4638.  
  4639.  Brainstorm Technologies
  4640.  617-492-3399
  4641.  24 Thorndike Street
  4642.  Cambridge, MA USA 02141
  4643.  Products: VB/NotesLink
  4644.  
  4645.  Braintree
  4646.  800-745-4645
  4647.  718-224-4728            Fax
  4648.  42-42 204th Street
  4649.  Bayside, NY, USA        11361
  4650.  Products: Hypertext Manager. Ad Hoc Data Viewer, Security Toolkit
  4651.  
  4652.  Concentric Data Systems Inc.
  4653.  508-366-1122
  4654.  508-366-2954            Fax
  4655.  110 Turnpike Road
  4656.  Westboro, MA, USA        01581
  4657.  Products: R&R Report Writer
  4658.  
  4659.  Crescent Software
  4660.  800-352-2742           Toll Free Sales
  4661.  203-438-5300           Tech Support
  4662.  203-431-4626           Fax
  4663.  11 Bailey Avenue
  4664.  Ridgefield, CT USA     06877-4505
  4665.  Products: QuickPak Pro, PDQComm, QuickPak Scientific, NetPak PRk, XREF
  4666.  
  4667.  Crystal Services
  4668.  1050 West Pender Street, Suite 2200
  4669.  Vancouver, BC, Canada   V6E 3S7
  4670.  Products: Crystal Reports, Crystal Reports Pro, Crystal Reports Server
  4671.  
  4672.  Crystal Software
  4673.  906-822-7992
  4674.  906-822-7994            Fax
  4675.  329 Fire Lake Road
  4676.  Crystal Falls, MI, USA    49903
  4677.  Products: CrystalCOMM
  4678.  
  4679.  Data Techniques Inc.
  4680.  800-868-8003
  4681.  704-682-4111
  4682.  704-682-0025             Fax
  4683.  704-682-4356            BBS
  4684.  Products: ImageMan/VB
  4685.  
  4686.  DCA
  4687.  800-348-3221 ext 59BB
  4688.  Products: QuickApp
  4689.  
  4690.  Desaware
  4691.  408-377-4770
  4692.  408-371-3530             Fax
  4693.  5 Town & Country Village #790
  4694.  San Jose, CA 95128
  4695.  Products: Custom Control Factory, Spyworks VB, Version Stamper/VB
  4696.  
  4697.  Distinct 
  4698.  408-781-0781
  4699.  408-366-2101        Fastfacts
  4700.  408-741-0795        email
  4701.  mktg@distinct.com
  4702.  Products: Distinct TCP/IP
  4703.  
  4704.  EllTech Development
  4705.  800-553-1327
  4706.  404-928-8960
  4707.  404-924-2807            Fax
  4708.  4374 Shallowford Industrial Parkway
  4709.  Marietta, GA, USA         30066
  4710.  Products: Compression Plus, Fax Plus
  4711.  
  4712.  European Software Connection
  4713.  913-832-2070
  4714.  913-832-8787            Fax
  4715.  PO Box 1982
  4716.  Lawrence, KS, USA    66044-1982
  4717.  Products: Kollibri
  4718.  
  4719.  Evergreen Technologies
  4720.  207-326-8300
  4721.  207-326-8333            Fax
  4722.  Main Street, PO Box 795
  4723.  Castine, Maine, USA        04421
  4724.  Products: Vision Tools
  4725.  
  4726.  Farpoint Technologies
  4727.  804-378-0432
  4728.  804-378-1015            Fax
  4729.  569 Southlake Blvd
  4730.  Richmond, VA, USA    23236
  4731.  Products: Aware/VBX, Grid/VBX, Spread/VBX
  4732.  
  4733.  ForeFront
  4734.  303-499-9181
  4735.  5171 Eldorado Springs Drive
  4736.  Boulder, CO, USA     80303
  4737.  Products: ForeHelp
  4738.  
  4739.  Frustrum Group Inc.
  4740.  800-548-5660
  4741.  212-338-0721
  4742.  212-984-0690            Fax
  4743.  90 Park Avenue, Suite 1600
  4744.  New York, NY, USA    10016
  4745.  Products: TransPortal Pro
  4746.  
  4747.  Geosoft Ltd
  4748.  44-532-344000
  4749.  44-532-465071            Fax
  4750.  Unit 3M Springfield House
  4751.  Hyde Terrace
  4752.  Leeds LS2 9LN, UK
  4753.  Products: Map Server 2
  4754.  
  4755.  HPI
  4756.  800-448-4154
  4757.  205-880-8705            Fax
  4758.  205-880-8785            BBS
  4759.  sales@instalit.com
  4760.  917C Willowbrook Drive
  4761.  Huntsville, AL, USA    35802
  4762.  Prpducts: Installit/VBX
  4763.  
  4764.  ImageFX
  4765.  716-272-8030
  4766.  2021 Brighton-Henrietta TL Rd.
  4767.  Rochestor, NY, USA        14623
  4768.  Products: FXTools
  4769.  
  4770.  Imagesoft Incorporated
  4771.  516-767-2233
  4772.  516-767-9067           Fax
  4773.  516-767-9074           BBS
  4774.  UUCP Address: mcdhup!image!info
  4775.  2 Haven Avenue
  4776.  Port Washington, NY, USA 11050
  4777.  Products: ObjectTrieve for VB
  4778.  
  4779.  Intelec Systems
  4780.  501-221-3600
  4781.  501-221-7412        Fax
  4782.  10201 West Markham, Suite 101
  4783.  Little Rock, AR, USA        72205
  4784.  Products: IPX Toolkit
  4785.  
  4786.  Intersolv
  4787.  800-547-7827
  4788.  44-727-812812
  4789.  1700 NW 167th Place
  4790.  Beaverton, OR, USA    97006
  4791.  Products: PCVS for VB
  4792.  
  4793.  Kansmen Corp
  4794.  408-263-9881
  4795.  Products: ToolsKan VB
  4796.  
  4797.  LEAD Technologies
  4798.  800-637-4699
  4799.  704-549-5532
  4800.  704-548-8161            Fax
  4801.  8701 Mallard Creek Rd.
  4802.  Charlotte, NC, USA        28262
  4803.  Products: LEADTOOLS/VB
  4804.  
  4805.  Media Architects
  4806.  503-297-5010
  4807.  503-297-6744            Fax
  4808.  1075 NW Murray RD, Suite 230
  4809.  Portland, OR, USA        97229-5501
  4810.  Products: ImageKnife/VBX Pro, MediaKnife VBX
  4811.  
  4812.  Metafile Information Systems Inc.
  4813.  507-286-9232
  4814.  507-286-9065            Fax
  4815.  421 First Avenue SW
  4816.  Rochester, MN,USA        55902
  4817.  Products: Metaview Imaging Control
  4818.  
  4819.  MicroHelp Inc.
  4820.  404-516-0898
  4821.  4359 Shallowford Industrial Parkway
  4822.  Marietta, GE, USA      30066
  4823.  Products: HighEdit
  4824.  
  4825.  Microsoft
  4826.  One Micosoft Way
  4827.  Redmond, WA, USA    98052-6399
  4828.  800-950-3535            USA
  4829.  800-563-9048            Canada
  4830.  206-936-8661            Other
  4831.  Products: VB, VB Pro, Excel, Word, Project, 
  4832.  
  4833.  Micro System Options
  4834.  206-868-5418
  4835.  PO Box 95167
  4836.  Seattle, WA, USA    98145-2167
  4837.  Products: 3D Graphic Tools for VB
  4838.  
  4839.  MotionWorks
  4840.  800-800-8476
  4841.  415-541-9333
  4842.  415-541-0555    Fax
  4843.  524 Second Street
  4844.  San Francisco, CA, USA    94107
  4845.  Products: Motion Works MediaShop
  4846.  
  4847.  NCR Corporation
  4848.  Imformation Products
  4849.  2651 Satellite Blvd.
  4850.  Duluth, GA, USA        30136-9711
  4851.  Products: NICE
  4852.  
  4853.  Pinnacle Publishing Inc.
  4854.  800-231-1293
  4855.  206-251-5057        Fax
  4856.  PO Box 888
  4857.  Kent, WA, USA        98035-0888
  4858.  Products: Graphics Server SDK, Code Print Pro
  4859.  
  4860.  Q+E Software
  4861.  800-876-3103   Dept M010
  4862.  919-859-2220
  4863.  919-859-9334           Fax
  4864.  5540 Centerview Drive, Suite 324
  4865.  Raleigh, NC, USA       27606
  4866.  Products: Q+E Multilink VB/2
  4867.  
  4868.  Rainbow Imaging Inc.
  4869.  212-794-2717
  4870.  212-861-8145        Fax
  4871.  460 East 79Street
  4872.  New York, NY, USA        10021-1425
  4873.  Products: Picture++
  4874.  
  4875.  Raindrop Software
  4876.  214-234-2611
  4877.  833 Arapaho, Suite 104
  4878.  Richardson, TX, USA        75081
  4879.  Products: Open Mail System
  4880.  
  4881.  ReportSmith Inc.
  4882.  800-446-3446
  4883.  415-312-8673            Fax
  4884.  2755 Campus Drive, Suite 205
  4885.  San Mateo, CA, USA        94403
  4886.  Products: ReportSmith
  4887.  
  4888.  Sense8 Corporation
  4889.  415-331-6318
  4890.  415-331-9148        Fax
  4891.  1001 Bridgeway, #477
  4892.  Sausalito, CA, USA 94965
  4893.  Products: WorldToolKit
  4894.  
  4895.  Sequiter Software Inc.
  4896.  403-437-2410
  4897.  403-436-2999        Fax
  4898.  Products: CodeBasic, CodeReporter
  4899.  
  4900.  ShapeWare Corporation
  4901.  800-446-3335 Ext 48Y
  4902.  520 Pike Street, #1800
  4903.  Seattle, WA, USA    98101
  4904.  Products: Visio
  4905.  
  4906.  Sheridan Software Systems
  4907.  800-VBDirect
  4908.  516-753-0985
  4909.  516-753-3661           Fax
  4910.  516-753-5452           BBS
  4911.  71222.3522@compuserve.com
  4912.  35 Pinelawn Road
  4913.  Melville, NY USA       11747
  4914.  Products: Data Widgets, VB Assist,
  4915.  
  4916.  Smithware, Inc
  4917.  800-828-7438
  4918.  615-860-3500
  4919.  615-868-5397           Fax
  4920.  75470,546              Compuserve
  4921.  590-5654               MCI
  4922.  1052 Madison Square
  4923.  Madison, TN, USA       37115
  4924.  Products: Controls for Btrieve
  4925.  
  4926.  Software Interphase Inc.
  4927.  401-397-2340
  4928.  401-397-6814        Fax
  4929.  401-397-4601        BBS
  4930.  82 Cucumber Hill Rd.
  4931.  Foster, RI, USA            02825
  4932.  
  4933.  SolutionSoft
  4934.  408-736-1431
  4935.  408-736-4013        Fax
  4936.  75210.2214@compuserve.com
  4937.  999 Evelyn Terrace West, Suite 86
  4938.  Sunnyvale, CA 94086
  4939.  Products: HelpBreeze, ViewerBreeze available soon
  4940.  
  4941.  Speech Systems Inc.
  4942.  303-938-1110
  4943.  303-938-1874            Fax
  4944.  2945 Center Green Court South
  4945.  Boulder, CO, USA        80301-2275
  4946.  Products: Phonetic Engine 400
  4947.  
  4948.  SPSS Inc.
  4949.  800-525-4971
  4950.  444 North Michigan Avenue
  4951.  Chicago, IL             60611
  4952.  Products: SPSS Developer Kit
  4953.  
  4954.  SQA Inc.
  4955.  800-228-9922
  4956.  617-932-3280            Fax
  4957.  10 State Street
  4958.  Woburn, MA, USA            01801
  4959.  Products: SQA TeamTest
  4960.  
  4961.  Stylus Innovation
  4962.  617-621-9545
  4963.  617-621-7862            Fax
  4964.  One Kendall Square
  4965.  Building 1500
  4966.  Cambridge, MA, USA        02139
  4967.  Products: Visual Voice
  4968.  
  4969.  Sub Systems Inc.
  4970.  800-447-6819
  4971.  617-438-8901
  4972.  617-438-0311            Fax
  4973.  159 Main Street, #8C
  4974.  Southam, MA, USA        02180
  4975.  Products: TE Developer's Kit, ReportEase, Spell Time, ChartPro
  4976.  
  4977.  SuccessWare
  4978.  909-699-9657
  4979.  909-695-5679            Fax
  4980.  27349 Jefferson Avenue
  4981.  Temecula, CA, USA        92590
  4982.  Products: SIxBase/VB
  4983.  
  4984.  TeraTech
  4985.  800-447-9120          
  4986.  301-977-2224
  4987.  301-963-0436           Fax
  4988.  301-963-7478           BBS     9600-N-8-1
  4989.  3 Choke Cherry Rd, Suite 360
  4990.  Rockville, MD, USA     20850
  4991.  Products Dazzle/VB, 
  4992.  
  4993.  Turbo Toolware
  4994.  602-497-4780
  4995.  745 N. Gilbert Road
  4996.  Ste. 124-125
  4997.  Gilbert, AZ, USA 85234
  4998.  Products Speltool VB
  4999.  
  5000.  Unelko Corp.
  5001.  602-991-7272
  5002.  602-483-7674    Fax
  5003.  7428 E Karen Drive
  5004.  Scottsdale, AZ, USA    85260
  5005.  Products: Bridgit
  5006.  
  5007.  Visual Tools
  5008.  800-884-8665
  5009.  913-599-6500
  5010.  913-599-6597           Fax
  5011.  Compuserve: 72204, 3521
  5012.  15721 College Blvd
  5013.  Lenexa, KS, USA        66219
  5014.  Products: Formula One, VT-Speller
  5015.  
  5016.  WallData Inc.
  5017.  208-883-4777
  5018.  206-885-9250        Fax
  5019.  17769 NE 78th Place
  5020.  Redmond, WA, USA    98052-4992
  5021.  Products: Rumba SDK
  5022.  
  5023.  Wang Labs
  5024.  800-639-9264
  5025.  508-967-1125        Fax
  5026.  1 Industrial Avenue
  5027.  Lowell, MA, USA        01851
  5028.  Products: OPEN/Image
  5029.  
  5030.  Watcom
  5031.  800-265-4555
  5032.  519-886-3700
  5033.  519-747-4971        Fax
  5034.  415 Phillip Street
  5035.  Waterloo, ON, Canada N2L 3X2
  5036.  Products: Watcom SQL
  5037.  
  5038.  WhippleWare
  5039.  800-241-8727
  5040.  617-242-8727
  5041.  617-241-8496            Fax
  5042.  20 Cedar Street 
  5043.  Charleston, MA, USA        02129
  5044.  Products:VB Compress
  5045.  
  5046.  Wintertree Software Inc.
  5047.  613-825-6271
  5048.  CompuServe: 72060,3056
  5049.  43 Rueter St.
  5050.  Nepean, Ontario
  5051.  Canada K2J 3Z9
  5052.  
  5053.  Young Software Works
  5054.  212-982-4127
  5055.  212-673-1715            Fax
  5056.  Compuserve 76703, 4343
  5057.  PO Box 185, Cooper Station
  5058.  New York City, NY, USA        10276-0185
  5059.  Products: VB ProjectWorks
  5060.  
  5061.  ZyLAB
  5062.  800-544-6339
  5063.  708-459-8000
  5064.  100 Lexington Drive
  5065.  Buffalo Grove, IL    60089
  5066.  Products: ZyIndex
  5067.  
  5068.  
  5069.