... Continued


I've added the ability (through a free service called ChangeDetection.com) to be notified via Email when this site is changed.  When I make notifications to this page, you get an Email and you can see what changed.

I recently updated all modules of code to include a LEGAL DISCLAIMER.   Please take a moment to read it.  It applies to all code downloaded from this site and by using it, you agree to abide by it.

With love we remember our fellow Americans who lost their lives September 11 to faceless cowards.  Our hearts go out to those who lost loved ones that day. 

With reverence and respect we remember and honor those who gave their lives in service of their fellow man.  We thank you.



I've updated the "modOS_Info.bas" and the "modRegistry_Adv.bas" modules to fix a few small bugs I found in each of them.
I added a new standard VB module called "modSort.bas" which takes an array of any data type and sorts it ascending or descending.  It uses an efficient sort method called a "Shell Sort" to do this.  I've clocked it at sorting arrays of 100,000 elements from 2 to 10 seconds depending on how "out of order" the elements are.
I've updated the "modOS_Info.bas" standard module to bring it up to speed with the latest operating systems.  This module was created in early 2000, so it excluded WinME, WinXP, and WinServer2003.  I've added these and cleaned up the code a bit.  The module for the most part is compatible with the old version, but check the return values to make sure.
I updated the "modFreeImage.bas" file to correct a couple of documentation errors and modify a couple of functions.  I also updated the standard modules page to reflect the correct documentation.
I've created a new class module called "cToolbar.cls" that takes a standard PictureBox and turns it into a fully functional ToolBar (similar to the one included in the "Microsoft Windows Common Controls 6.0" [MSCOMCTL.OCX]).

I've updated the "modDownload.bas" standard module to allow you to easily cancel a download that has already begun.

I've updated the "modFreeImage.bas" module.  There have been a few new releases of the FreeImage.dll library and this module is now current up to version 2.6.1.  For more information, go to the official FreeImage web site: http://freeimage.sourceforge.net

I wanted to take a second to send out a big THANK YOU to everyone that has contributed to The VB Zone.  I really appreciate the support!   : )

I've finished the relocation of both www.TheVBZone.com and www.TheVBZone.net.  If you notice that there are any broken links or if anything is out of place or missing, please let me know via my NEW Email address: vbz@thevbzone.com

The VB Zone is moving to a new home, so pardon the mess during the transition. You may notice for a little while that certain links don't work and the dicussion board may or may not be up and available. I will do my best to get things up and running as soon as is possible.

Thank you for your patience and support. I appreciate it.

I've updated "VB Run Times" section of this web site.  Microsoft LOVES to move their web pages and their file download locations all over their web site, so I have to updated their link location on my site from time to time.
I've completely redesigned the "cHTMLHelp.cls" class module.   The reason I did this is the HTML Help system is a lot more stable than it was 2 years ago when I released the initial version of this class module.  The HTML Help system is also much more widely used among popular Windows operating systems.  One thing to note is that I completely redesigned the interface of the class to make it easier to use and more efficient... it is therefore NOT backwards compatible to the old version.
I've updated the "modProgressBar.bas" module to make it a little more efficient and stable.  It now will correctly trap invalid MIN / MAX / VALUE property settings and will compensate accordingly.
I've updated the "modXML.bas" standard VB module to fix a small problem where ADODB.Recordset objects were being returned back at the EOF, instead of BOF.   Thanks Chris Smith for pointing that out!

I've updated the "modCommon.bas" file to make the "FileExists" and "INI_Write" functions work better.

As I'm sure many of you have noticed, my WONDERFUL ISP (which was recently baught out twice by two different companies) has put new restrictions on FTP usage.  I love it when new management comes in and screws up perfectly good systems that were pre-existing just for the sake of changing them.  Anyways, the result of the change is that people can't download any ZIP files from my FTP server during decent hours because too many anonymous users are simotaniously logged onto the FTP server.  In order to fix this, I've mirrored all ZIP files on this web site and you shouldn't have trouble between the two sources.

I've added the "cBASE64.cls" class module to the "VB Class Modules" section.  This class module allows you to encode and decode in BASE64 (commonly used to convert binary information to ASCII characters... like Email content).

I've added the "modDownload.bas" module to the "VB Standard Modules" section.  This module wraps the MS INET control to give you an easy to use interface to download files from the internet via a variety of standard internet protocols.

I've added the "modShellCommand.bas" module to the "VB Standard Modules" section.  This module allows you to execute "MS-DOS" style commands that you'd normally execute at a command prompt (i.e. - IISRESET, PING, TRACERT, etc) and get back the result text that would normally be printed to the command console. This can be helpfull in checking the return status of "MS-DOS" style commands.

I've updated the "modCOMDLG32.bas" standard VB module to include all the values of the "BIF_*" constants (some where missing) used as flags for the "CD_ShowFolder" function.  The main purpose of this was to give access to the new browse folder dialog "look and feel".

I've updated the "modCommon.bas" standard VB module to update the efficiency of the "INI_Read" and "INI_Write" functions.

I really have to go through all the old modules and classes I've posted here and updated them.  As time goes on and you look back on old code, you think "MAN!  What was I thinking."   =)   Funny how that happens.

I've created a new web site dedicated to VB.net called "The VB Zone .net".  The URL is simple enough:


I plan on making it the same as this site, only oriented towards VB.net instead of VB 5.0 and VB 6.0 as this one is.  I'm even planning on porting over the majority (if not all) of the modules and classes that I've posted on this site to Visual Basic .net to make the same functionality available reguardless of which language you use.

CHECK IT OUT!   : )   I'd appreciate feedback on it.

I've updated the "modFreeImage.bas" module to include a full new set of functionality... MULTI-PAGE IMAGES!  That means that now you can easily open a TIFF image (or any other supported multi-frame image) and get all the frames (images) contained within it, add a frame to it, delete a frame from it, and move a frame from one location to another.  That functionality has always been there, but I've never been able to get it to work until Sergej Kuznetsov from Germany pointed out that it wasn't working because it expected a static String to be passed to it (Visual Basic creates a temporary string when calling API's).  So the solution was easy once that was realized and applied to this situation.  Thanks Sergej!

I've updated the "Advanced Bitmap Processing Module" (modBitmap_Adv.bas) with the following enhancements:
  • Enhanced most of the "BitmapEffects_*" functions so they will now execute 10%
    to 20% faster!  I accomplished this by optimizing how the functions work.
  • Added the "BitmapEffect_Grayscale" function
  • Added the "BitmapEffect_Monochrome" function
  • Added the ability to apply a "Left to Right" as well as a "Up to Down" motion with
    the "BitmapEffect_Motion" function
  • Fixed a bug in "BitmapEffect_Distort" so now it behaves as it is supposed to

If you previously purchased the "Advanced Bitmap Processing Module" from me, simply Email me at vbz@thevbzone.com and request the update.

I've added a VB standard module to this site based on requests I've been getting via Email and via Message Board postings to get a reference to a control based only on it's name.   I've finally come up with a 100% solution for this problem (instead of a work around).  It's called modControls.bas and it's pretty neat the way it works using a few lower-level Win32 API's!  Check it out.
I've added another HOWTO lesson about creating and using Resource Files (.RES) within and without your projects.  You can check it out by clicking on "Creating RES's" under the "HOWTO LESSONS" section of this site.

Also, while creating lesson 4, I noticed that all the graphics for lesson 3 are missing for some reason.   I must have unknowingly deleted them.  I'll fix that soon.

I updated the modFreeImage.bas standard module to add the ability to convert a DIB or BITMAP to grayscale.  This makes it easy to open a 24-bit image, convert it to grayscale, convert it to 8-bit color, then save it out as a JPEG (which people have been asking for).  I also added more error checking throughout the custom functions I've added which take advantage of the new "FreeImage_GetLastError" and "FreeImage_SetLastError" routines.
I've updated the FreeImage.dll under the "DLL Files" section with the latest version, 2.5.4.  This new version includes the latest updates to the internal libPNG and libMNG code.
I updated the modFreeImage.bas standard module to enable it to automatically retrieve error messages from the FreeImage.dll library when they occur.   I've added two new functions to make use of that information once retrieved: "FreeImage_GetLastError" and "FreeImage_SetLastError" (following the pattern set by Win32 API error handling).

I've updated the following modules:

cADO.cls - Modified the "ExecuteStoredProcEx" method so that even if an error occurs, all OUTPUT parameters will be correctly reported back.  That way your stored procedure can have error output that can be correctly reported back, etc.
cCrypt.cls - Mofied the "Decrypt_String" and "Encrypt_String" so the error checking is better and so they return the error number and description (if any) through return parameters.
modFreeImage.bas - Made use of a "work around" to deal with a bug with color depths when loading images.  Also added a function "FreeImage_LoadMultiPageEx" which returns an array of DIB's instead of an array of BITMAPS (as is done in the "FreeImage_LoadMultiPage" function).  Also added better documentation for the custom fucntions at the end of the module.
modHtmlSource.bas - Modified the "HTML_GetSource" function to use Microsoft's XML object to more efficiently get the source of the specified URL, and make use of better error handling.

I've added the following modules:

GetHtmlSource.asp - This is the same as "modHtmlSource.bas" but is in ASP so you can get the source of other web pages from your ASP page.
modErrorHandler.bas - This is a module to make tracking and reporting errors easier.

I've added a search feature to the "VB Discussion" page under "VB Resources" of this web site.  This allows you to search the latest 500 postings (that's a restriction of the "free version" of Atomz's search product... anyone wanna donate some dinero for the full search capability?  hehehe).

Thanks Atomz !!   Great product !

I've updated the DLL download page to tell you what versions of the DLL's are there, and updated the FreeImage.dll there to the most recent version (v2.5.3).
I've added a new ASP Class Module to this site called "cINI.asp".   It uses the Scripting.FileSystemObject located within the Microsoft Scripting Runtime library (SCRRUN.DLL).  It allows you to easily read from and write to .INI files from within an ASP page.  This lets you write dynamic ASP functionality based on .INI settings for ultimate flexibility.  This module can be found in the "ASP Class Modules" section of this web site.

I've added an ASP page called "PopulateSelect.asp" which is designed to be "popped up" from another ASP or HTML web page and take in pre-defined parameters to dynamically populate a HTML SELECT ListBox or ComboBox based on the ADODB.Recordset returned from the specified query string and database connection.   This allows you to populate an HTML ListBox or ComboBox "on the fly" on the client side (using JavaScript) based on information returned from a database on the server side.  This ASP page can be found in the "ASP Sample Code" section of this web site.


On Thurs. May 23 at 3:41pm, my wife gave birth to our second son.  He was born weighing 12 pounds 3 ounces and measuring 22 inches in length!  BIG BABY!  My wife and child are both recovering quickly from a very successful C-Section.

I've updated the "Advanced Bitmap Processing Module" that I sell via this web site for $10.00.

I've added the "BitmapEffect_Advanced" function which uses an API only available on NT-Based operating systems (WinNT 3.51, WinNT 4.0, Win2000, WinXP).   This function allows you to adjust the contrast, brightness, colorfulness, red/green/blue color balance, etc. all in an incredibly efficient way.  If you're not on an NT-Based OS (Win95, Win98, WinME) then you'll have to use the other "BitmapEffect_*" functions within the Advanced Bitmap Processing Module.  I didn't add  this function to the initial release of the ABP module because I like writing code that's compatible to all MS Win32 OS's.

I've also added the "BitmapEffect_ResizeEx" function, which acts identical to the original "BitmapEffect_Resize" function, only it uses some calculating to make the result of the resize smoother, cleaner, and more accurate.  This is especially evident when resizing an image to a size LARGER than the original size.

I've also added the "GetBitmapBitsEx" and "GetBitmapColorsEx" function which are just like the "GetBitmapBits" and "GetBitmapColors" functions, except they return a two-dimentional array (X,Y) instead of a one-dimentional array.  This makes picking out the color values returned from the array easier because it's based on the pixel coordinates.

In addition, I've corrected a couple of memory leaks I found, and a few documentation errors within the module.

If you've already purchased the older version of the Advanced Bitmap Processing Module, simply Email me at vbz@thevbzone.com from the same Email address you purchased the ABP module with originally and request the update.

I've added a link to "Extreme Visual Basic Forum" in the menu as "VB FORUM", as well as a few new sites under the "VB LINKS" section.

Just a note... the web site was down for this last weekend and part of this week due to my ISP relocating the server that this web site resides on.  Sorry for the downtime.

I finished the "cCDONTS.cls" VB Class Module, and "cCDONTS.asp" ASP Class Module.  I have uploaded them and put them under their respective places.

Both of these class modules do the same thing... allow you to easily send an Email from an IIS 4.0 (or higher) server, or Exchange 5.5 (or higher) server.  These class modules support multiple TO, CC, and BCC addresses, and even support a "Reply To" address.  These classes also support multiple attachment files.

I updated the file modFreeImage.bas to fix a small bug that a user reported.  Thank you for the heads up!
I finally got around to adding the "VB SECRETS" section.   Has a lot of neat information in it about VB, the Win32 API, and secrets on how to use and tweak them.  I imagine that this page would only suitable for those who are knowledgable about VB and programming because some of the concepts are fairly advanced.

Any feedback on it is appreciated!  Send me an Email at vbz@thevbzone.com.

I added the modPNG.bas standard VB module to the "VB Standard Modules" section under "SAMPLE CODE".  This module gives you full access to all the types, enumerations, constants, and functions exported by the LIBPNG_VB.DLL (which is the same as LIBPNG.DLL v1.0.12 but is compiled with "__stdcall" as the calling convention instead of "__cdecl" so that VB can use it).

I added the LIBPNG_VB.DLL (v1.0.12) library to the "DLL Files" section under "DOWNLOADS" along with ZLIB_VB.DLL (v1.1.3).

LIBPNG.DLL is the official library for the Portable Network Graphic (PNG) image file format... which is now supported by all major internet browsers and most standard Windows applications.

I updated the cADO.asp ASP Class Module to make it match the updates to cADO.cls.  In the process of doing so, I found several bugs with the cADO.asp file and a couple with the cADO.cls file... so I updated both.
I updated the modFreeImage.bas file to correct a small bug I found, and to add the ability to render bitmaps in an "inverted" or "negative" style via the "FreeImage_RenderBitmap" function.

I fixed a couple of bugs I found in the modCOMDLG32.bas standard module, and made sure the "multi-select" feature of the Open dialog works correctly.

I completely rewrote the cWinHelp.cls class module because after taking another look at it recently I realized how out of date and incorrect the code in it was.  The new version gives you FULL WinHelp functionality where the old module only gave you a fraction of WinHelp's functionality.

I updated the cADO.cls Visual Basic class module to add functionality to the "ConnectionString" property and add two new functions: "GenerateConnectionString" and "GetConnectionProperty".   The first function takes the specified simple parameters and creates a valid ADO connection string capable of connecting to SQL, Oracle, Access, FoxPro, Excel, dBase III, dBase IV, dBase V, MS Indexing Services, HTML, and TEXT.  The second function allows you to query the ADODB.Connection.Properties collection for specified information about the connection.  I modified the "ConnectionString" read-only property to allow you to retrieve either the exact connection string you gave it, or the actual connection string as is within the ADODB.Connection object.  I also added a parameter called "blnDeleteRsIfBlank" to all the "Execute*" functions.   Setting this to True (default) will return an ADODB.Recordset object that is set to "Nothing" if it contains no valid records.  You can set this to False if you wish to return a recordset resulting from a query even if it contains no valid records (EOF & BOF = True, or State = Closed).

The updated version of cADO.cls is completely backwards compatible to previous versions.  I will update cADO.asp (the ASP version) soon.

I updated the documentation contained within the modFreeImage.bas file.

I also realized that the "About Me" page was out-dated, so I updated it.    : )

I updated the modFreeImage.bas file to reflect a bug fix and several documentation updates I put into it today.
I added modFreeImage.bas to the SAMPLE CODE / VB Standard Modules section, and FreeImage.dll to the DOWNLOAD / DLL Files section of this web site.

This module wraps the functionality of an INCREDIBLE image DLL called "FreeImage".  This library gives you the ability to read and write the following image formats:  

   .BMP - [IN/OUT]  Windows or OS/2 Bitmap
   .PBM - [IN/OUT]  Portable Bitmap format
   .PGM - [IN/OUT]  Portable Greymap format
   .PPM - [IN/OUT]  Portable Pixelmap format
   .PBMRAW - [IN/OUT]  (see .PBM)
   .PGMRAW - [IN/OUT]  (see PGM)
   .PPMRAW - [IN/OUT]  (see PPM)
   .ICO - [IN       ]   Windows Icon
   .PSD - [IN/OUT]  JPEG - JFIF Compliant
   .JPEG - [IN/OUT]  Wireless Bitmap
   .JIF - [IN       ]   (see .JPEG)
   .JNG - [IN       ]   JPEG Network Graphics
   .PNG - [IN/OUT]  Portable Network Graphics
   .MNG - [IN       ]   Multiple Network Graphics
   .PCX - [IN       ]   Zsoft Paintbrush
   .TIFF - [IN/OUT]  Tagged Image File Format
   .TARGA - [IN       ]   Truevision Targa
   .KOALA - [IN       ]   Commodore 64 Koala Graphics
   .LBM - [IN       ]   Deluxe Paint LBM
   .IFF - [IN       ]   Interchanged File Image
   .PCD - [IN       ]   Kodak PhotoCD
   .RAS - [IN       ]   Sun Raster Image
   .CUT - [IN       ]   Dr. Halo File

Want to know the best part about FreeImage?  IT'S COMPATIBLE WITH VB, AND IT'S FREE!!  I really can't say enough about this DLL, so download it and give it a try!

I've added a section to the SAMPLE CODE portion of this web site.  This new section is called "ASP Sample Code" and I will put any ASP sample code there that isn't in the form of an ASP Class.

"But what does ASP have to do with Visual Basic... this is a VB Site, right?"

Yes, this is a VB site, but all of the code is done with VBScript and is written in a very VB way if you take a look at it.  I see ASP as a way to run VB code over the internet from the server side.    =)

I'm not a "Treky" or anything, but I have watched it in the past and I figured that anyone who's watched a bit of Star Trek and done any programming could appreciate this:

Top 12 Things likely to be overheard if you had a Klingon programmer:
12)  "Specifications are for the weak and timid!"
11)  "This machine is a piece of GAGH!  I need dual Pentium 4 processors if I am
        to do battle with this code!"
10)  "You cannot really appreciate Dilbert unless you've read it in the original Klingon."
9)  "Indentation?! - I will show you how to indent when I indent your skull!"
8)  "What is this talk of 'release'?  Klingons do not make software 'releases'. 
        Our software 'escapes' leaving a bloody trail of designers and quality
        assurance people in its wake."
7)  "Klingon function calls do not have 'parameters' - they have 'arguments' -
        and they ALWAYS WIN THEM!"
6)  "Debugging? Klingons do not debug. Our software does not coddle the weak."
5)  "I have challenged the entire quality assurance team to a Bat-Leth contest.
        They will not concern us again."
4)  "A true Klingon warrior does not comment his code."
3)  "By filing this PTR you have challenged the honor of my family. Prepare to die!"
2)  "You question the worthiness of my code? I should kill you where you stand!"
1)  "Our users will know fear and cower before our software. Ship it! Ship it and
        let them flee like the dogs they are!"

- Author Unknown

I just realized that PayPal, the company I used to accept payments for the few applications and utilities I sell via this web site (like the Graphical Menu Components, and Advanced Bitmap Processing module), now accepts Discover, Nova, and American Express.  I've updated the pages to reflect that.

So if you've been holding out because you don't have a VISA or MC... but you do have an AmEx or Discover card... NOW'S YOUR CHANCE!   hehehe...

I added the file ParamArray.zip to the 'Sample Projects' sub-section of the 'SAMPLE CODE' section of this web site. This is a sample project that shows how you can easily pass in an undefined number of parameters to a function, each of a different data type if you like (String, Number, Object, Array, NULL, etc). Can be very useful when you're calling multiple other functions or procedures that have varying parameter numbers and types.
I updated the modCommon.bas Standard VB Module to add the "KillDir" function which will recursively delete all files and folders under the specified directory.  After the directory is cleared of all contents, it will be deleted before the function returns.  I also updated the "FileDelete" function, but kept it's structure so it is backwards compatible.
I've added the file ImageFromDB.zip to the "Sample Projects" section of this web site.  This sample VB project demonstrates how you can easily read and write an image (.BMP, .JPG, .GIF, .ICO, .CUR, .RLE, .WMF, or .EMF) to and from a database table.
I've added a new module called modHtmlSource.bas to the VB Standard Modules section.  What this module does is make a standard HTTP request to the specified URL that you give it (just as any web browser like MSIE or Netscape would) and returns back either the HTML code that makes up the resulting web page (the server response), or the XML code that results if the return is XML.
I've updated the cMCI_Adv.cls class module to allow you to READ the mixer volume of the system, wave, midi, and CD mixer controls.  Before I had the code where it would only allow you to CHANGE the volume.  

I also corrected some incorrect code documentation. 

Also, I've added two functions.  The first function to allows you to easily change the caption of the window playing any video file that you specify to play.  The second function allows you to easily change the icon of the window playing any video file that you specify to play.  These two functions allow you to make the default window that comes up to play video look like it is part of your application. 


I apologize, I put out this big section about the cResource.cls class module and the modMemoryAVI.bas and modMemoryWAV.bas and then I go and forget to put them in the proper sections on this web site so people can download them!  heh... I am very forgetful some times.  Anyways, they have been added to the class module and standard module sections respectively.


Several people have been requesting information on how to pull icon, cursor, bitmap, string, and data file resources from both ActiveX and C resource DLLs.  Therefore, I have created a standard VB class module called cResource.cls to extract every kind of resource from both ActiveX and C resource DLLs, as well as resource (.RES) files that are included as part of your current project.

Also, people have asked how to play WAVE, MIDI, and AVI files from resources.  After searching and searching, I've come to the conclusion that MIDI files just can NOT be played directly from a resource by extracting the resource and playing the MIDI file from memory.  They must be extracted, saved, then played from the hard drive with either the cMCI.cls, cMCI_Adv.cls, cDirectMusic7.cls, or cDirectMusic8.cls class modules.  However, I have figured out how to play both WAVE and AVI files directly from a resource by extracting the resource and playing it from memory.  I've created two standard VB modules to do this... modMemoryAVI.bas, and modMemoryWAV.bas.  These module were intended to be used with the cResource.cls class module, but do not require it.

Example code on how to use all three of these new modules are included within the documentation contained within each respective module.

I enhanced the cADO.cls standard class module and the cADO.asp ASP class module to give you the ability to specify the Recordset.CacheSize via the "ExecuteSQL", "ExecuteStoredProc", and "ExecuteStoredProcEx" methods.  This will allow you to enhance performance in some cases.  This change is the addition of an optional parameter and will not affect existing code.
I finished the third lesson under the "HOWTO Lessons", "Creating .OCX's".  This lesson explains how to create and use ActiveX Controls (OCX's) as well as concepts behind each step.  Hope it helps those interested in this technology.  I'll finish the remaining 2 lessons when I can.  They take a very long time to finish and my time is limited.
12/25/01   MERRY CHRISTMAS !!     
I made a modification or two to the modREGSVR32.bas module to the "VB Standard Modules" section of this web site.  The modifications will make it run better and with less possibility for error.
Fixed a bug in the modCOMDLG32.bas VB Standard Module that disallowed you to make use of the "OFN_ALLOWMULTISELECT" flag with the "CD_ShowOpen_Save" function.  Also fixed a few minor bugs in the same function to make the function operate a little more smoothly.

I YET AGAIN modified the modListView5.bas and modListView6.bas VB Standard Modules to fix a couple more bugs that I found in them.

I've added the modREGSVR32.bas module to the "VB Standard Modules" section of this web site.  This module offers two ways of programmatically registering and unregistering COM objects such as ActiveX DLL's, ActiveX EXE's, and ActiveX Controls (OCX's).  Very useful if you're writing an installation/distribution or patching program.

I've updated the cADO.cls class module under the "VB Class Modules" section to fix a few small bugs I found.

I've updated the cADO.asp ASP class module under the "ASP Class Modules" section.  This is the NEW version of the cADO class and has all the new features and bug-fixes... including support for transactions, and custom Isolation Levels on the connection level.

Just wanted to post that I'll soon be adding a "VB Secrets" section to this web site which contains things like useful undocumented/hidden Visual Basic functions, undocumented/hidden Win32 API functions, etc.

Also, I've started doing the HOWTO Lesson 3 - OCX's.  I'm not finished, but will be soon.  These HOWTO lessons take a VERY long time, so I apologize if I haven't finished them all and if they are slow coming.  I do however, put them higher on my priority list if people express an interest in them.

I've updated the cADO.cls yet again.  This time I fixed the option to use TRANSACTIONS for queries, and added the ability to specify whether to disconnect the recordsets that are returned by the ExecuteSQL, ExecuteStoredProc, and ExecuteStoredProcEx methods.
Added the Advanced Bitmap Processing module to the "Apps/Utils" section of this site.  REALLY COOL STUFF!  Check it out.
I've modified the cMCI_Adv.cls class module to fix a couple of bugs that I found in it.

I've modified the modListView5.bas and modListView6.bas standard module to fix a couple of bugs that I found in them.

I've modified the cADO.cls class module to allow for executing queries using transactions.
I've modified the modBitmap.bas standard module and the cSprite_Bitmap.cls class module to avoid a potential redraw bug when resizing bitmaps.
I've modified the cScrollbar.cls class module so that it acts more like a standard Scrollbar control when you click and hold the left mouse button on a scroll arrow or scroll area.  This was done by using the "timeGetTime" Win32 API instead of the native VB method "Timer" to get the elapsed time.  The "Timer" method only returns SECONDS... the "timeGetTime" API returns MILLISECONDS.
I've removed the PopMenu_OCX.zip file from the "ActiveX Controls" section and have added the SampleComCtrl.zip file in it's stead.

The SampleComCtrl.zip file contains a complete project that demonstrates the correct creation and use of an ActiveX/COM control.  I previously posted this code on PlanetSourceCode.com and you can check out the page I created for it there by clicking HERE.

I've updated the modCommon.bas file to improve a couple of it's functions and have also added a few functions.  The new functions have mostly to do with file and I/O operations like "ConvertLong2Short", "FileExists", "FileInUse", and "RenameFile"

I'm busy working on yet another update to the modBitmap.bas file!  The changes I'm making are VERY exciting and offer some REALLY neat functionality all done directly through the Win32 API to ensure speed and accuracy.  I'll release this in a few days.

I've updated the cSysTray.cls module under the "VBClass Modules" section.  I've made it less error-prone and made it easier to use by not requiring you to explicitly call a method on the Form_MouseMove event.  None of the interfaces have changed so no code alteration will be required to upgrade to this new version.
I've added the project MCI_Player to the "Sample Projects" section of this site.  It demonstrates how to use the cMCI_Adv.cls class module to play just about ANY audio or video multimedia file WITHOUT ANY DEPENDENCIES!
I've added the cScrollBar.cls class module to the "VB Class Modules" section.  This module turns a standard VB PictureBox control into a fully functional ScrollBar. You have the ability to turn the PictureBox into a Horizontal or Vertical scrollbar by simply setting a class property. This module makes scrollbars that are much better than standard VB scrollbars because the Min, Max, Value, SmallChange, and LargeChange properties are DOUBLE instead if INTEGER. Because of this, you don't have to put up with a value limit of 32,000. It also provides advanced features like color options, flat and 3D looks, and the ability to set a picture as the background of the scrollbar.
Made an important change to the cADO.cls module.  If you use the new version of this module, that I updated on 10/16, you should update your module.  It corrects a problem with the "ExecuteStoredProc" and "ExecuteStoredProcEx" methods.
I've updated the cADO.cls class module.  It was not quite as robust as it should be and I've added more functionality to it.  This interfaces to this new version of the class module are a little different than the last version so you may have to slightly modify your code if you substitute this class module for the old one in existing code.

I would strongly recommend upgrading to this version of cADO.cls because it is programmed in a better way. 

I will update the ASP version of this as soon as I get a chance.

I've updated the links on the "GET VB FREE!" page to compensate for Microsoft's ever MUTATING web site!  I really hate how I have to re-learn their web site MONTHLY!!  Arg!
Our thoughts and prayers are with those who were adversely affected by the WTC disaster.  Our deep gratitude and thanks go out all the dedicated men and women who have done so much and dedicated so much of their time and efforts to helping, fixing, cleaning, and treating in NY and VA.

God Bless America... and may justice come swiftly and sharply to terrorists around the world.

I added the cADO.cls VB Class module to the VB Class Modules section, and converted it to an ASP class module (cADO.asp) and added it to the ASP Class Modules section.

This class module provides a simple, standard way use ADO (part of the Microsoft Data Access Components (MDAC)) to access any supported database... including MS SQL, MS Access, Oracle, FoxPro, etc.

This module is professional strength and includes full error checking, connection sharing, and object clean up to allow for the most efficient data access from within your project.

Pretty big news today!  I've added a section for ASP Class Modules!   The reason I did this is ASP class modules are just about like Visual Basic class modules, only you have to use ASP oriented objects instead of VB ones, and all variable types are VARIANT.  I figured there are probibly enough ASP programmers out there to make something like this worth while.  Besides, I'm really getting into ASP and I think it's addition compliments the site well.
I updated the modXML.bas file to make it correclty write out at least the basic processing instruction required in all XML documents for it to be used correctly.  The processing instruction is the following string at the very top of the page that tells the parsing application that the document is in XML format: <?xml version="1.0" ?>
I've added a new module named cMCI_Adv.cls to the Class Modules section.  This module gives you all of the functionality that the cMCI.cls module gives you, plus A LOT more!  This module opens up the API for you to do whatever you like with it directly.  This module comes with full documentation as it is now necessary.  cMCI.cls was pretty self-explanatory, but this module isn't as much.  So what's so big about this module?  Why use it instead of the cMCI.cls module?

Open, play, and manipulate just about any multimedia file type (including MP3, MPEG, MOV, QT, AIF, WMV, AVI, WAV, MIDI, CDA, and much more) WITHOUT DEPENDENCIES!

I also updated the cMCI.cls class module to fix a small memory leak that I didn't catch when I first built it.

I'll soon have a sample project uploaded to demonstrate how to take advantage of the cMCI_Adv.cls module.

I updated the modJPEG.bas file to make it more robust, and less error prone.  I made some changes that make this version of modJPEG.bas incompatible with previous versions... but the changes were for the best.
I've uploaded the standard modules modListView5.bas and modListView6.bas.   These modules make it easy to turn the ListView control that comes with the Windows Common Controls into a spread-sheet like control to emulate the look of Excel or Quatro Pro.  modListView5.bas works with the version of the Windows Common Controls that comes with VB 5.0.  modListView6.bas works with the version that comes with VB 6.0.
Thanks to the bug report of Paul Spierings, I've updated the modDUN.bas module to allow you to use the RAS_Dial function with a blank entry name and a manually specified phone number.  This should give you a little more flexibility.  Thanks Paul!
I completely re-did the cSysTray.cls class module to give it MUCH more control and functionality.  This new version allows you to place multiple icons in the system tray using just once instance of the class module, allows you to dynamically modify the system tray icon's image and ToolTipText at run-time, and track user interaction with the system tray icon more closely.  All these features were not offered in the previous version of this class module.

This new version of this class module IS NOT compatible with the older version.

XML - eXtensible Markup Language  That's right!  I finally got around to messing around with XML.  I created the modXML.bas module to demonstrate the correct use of the Microsoft XML object as well as provide some useful functionality like loading XML, saving XML, and converting back and forth from XML object to an ADODB.Recordset object. 
Microsoft Visual Basic 6.0 - Service Pack 5 has been released... make sure to go download it!  It gives you all kinds of neat new tools, like the ability to create DHTML right inside of VB's IDE!

Also, if you have Visual Basic 5.0, make sure that you've got Service Pack 3 installed.

I updated the modPING.bas and modWINSOCK.bas modules to fix some bugs that I overlooked when I first released them.
I updated the modSuperShell.bas module to make it more efficient and better documented.  This new version is NOT compatible with the old version.   See documentation inside the module for further details.
5/8/01 DirectX DirectX !!  I've taken DirectX even further by developing a class module that gives you quick and easy access to the DirectMusic sub-system of DirectX so you can use DirectX 7a or 8a to play multiple .WAV, .MID, .RMI, and .SGT files at the same time!  I've added cDirectMusic7.cls and cDirectMusic8.cls to the Class Modules section and have updated the cDirectSound7.cls and cDirectSound8.cls class modules to work with the DirectMusic class modules.
IT'S OFFICIAL!!  I've now got the domain "TheVBZone.com"!!   Can you tell I'm excited about this?!  =D

Update your bookmarks... but this one should be easy enough to remember without a bookmark (that's knida the point, ya see).   =]

Updated the cCrypt.cls class module to support outputting to TEXT, DECIMAL, and now HEXIDECIMAL.  The reason I did this is outputting to DEC or HEX is more "programmer friendly" because you can write out the DEC or HEX equivelant of the encrypted text a lot easier than you could the TEXT, because the TEXT encryption string can contain non-printable characters.  HEX has an advantage over DEC because it is 33% smaller.  DEC requires 3 characters per encrypted character, where HEX requires only 2.
I've added "Lesson 2 : Creating DLLs" to the "HOWTO Lessions" section.  It is very informative as to what DLLs are, what their purpose is to a programmer, how they are used, and how to create them within VB.  Lesson 2 assumes you've already read and understood Lesson 1.
4/25/01 DirectX DirectX !!  I've taken the same concept of utilizing the DirectSound sub-system of DirectX and applied it to DirectX 8a.   That way, if you'd prefer to use DirectX 8a (which as of today is the most recent version), you can.  The DirectX 7a version works better in my opinion (especially under WinNT4), but this is what's out there on Microsoft's site now.

I added the class module cDirectSound8.cls to the SAMPLE CODE - Class Modules section and have added a link to DX8VB.DLL under the DOWNLOAD - DLL File section

4/23/01 DirectX DirectX !!  That's right, I finally got around to messin' around with DirectX and I've created a class module that makes use of DirectSound via DirectX 7a (or better) easy and convenient from within VB 5 or 6! 

Need more control over the volume, frequency, & pan of sound play back than is offered by the cMCI.cls class module?  Need to be able to play multiple sounds AT THE SAME TIME?  Well then this is your solution.  Make sure that you have DirectX 7a or better installed on your computer, download one DLL, and you're ready to use the cDirectSound7.cls class module!  Check out the "Class Modules" page under the "Sample Code" section for more information.   You'll need to download and install DX7VB.DLL as well.

Added a quick poll to get some feedback on what people think of The VB Zone.
Cleaned up the modBitmap.bas module yet again.   Added missing documentation and renamed the "TilePicture" function to "TileBitmap" because that's really what it is.
IT IS FINALLY HERE!!!  The day we've all been waiting for... er... okay, the day I'VE been waiting for.  ; )   I finally found a REALLY good search engine that will search just my site.   The product is a remarkable search engine that was built from the ground up by a company called Atomz.  Atomz provides this search engine completely FREE of charge (though there is a professional version of the search engine that they charge a small fee for) and it is the best one I've seen yet... and trust me, I've seen quite a few of them in my search for one for this site.  =)

Go check em out if you need a good, reliable, powerful, and flexible search engine for your site:  http://www.atomz.com/

Added the "Icons / Cursors" section along with several icon and cursor libraries containing over 400 icons and cursors put together.
Added the Graphical Menu components and Application Tools to the "Apps/Utils" section of this site.
Updated the modBitmap.bas standard module and cSprite_Background.cls and cSprite_Bitmap.cls class modules to accommodate for the changes made in the modBitmap.bas module.

The new version of modBitmap.bas adds A LOT of additional functionality as well as fixes some problems I've found with the previous version.

WARNING : If you have created an application based on the old version of modBitmap.bas and upgrade to this one, you will have problems compiling without modifying your code because the function calls are different and incompatible.  You could always stick with the old version... nothing is THAT wrong with it... this one is just better.

Added the ability to get to this site via an easier, shorter URL : http://VBZ.CJB.net/
Removed the "AllAdvantage" banner from the site (not into that anymore) and replaced it with a nifty new banner for The VB Zone.   Feel free to use this banner on your site if you like.  Click here for more detailed info on how to easily add it to your site.
Updated the modHiLo.bas standard module to make it report values more accurately and less problematically.

Added GetMenus.zip to the "Sample Projects" section.  This sample demonstrates how to use a recursive function to get the information about all the menus of any application given the application's Window Handle using only a few API calls.

modPING.bas - Added this new standard module
modWINSOCK.bas - Added this new standard module

The modWINSOCK.bas file gives you FULL functionality to ALL the documented APIs in the Windows Sockets DLLs (WSOCK32.DLL / WS2_32.DLL).  The modPING.bas module uses the modWINSOCK.bas module to tap into the Winsock's ability to do such things as resolve IP addresses from host names, get the computer name (host name) of the current user, and send a PING to a remote server to test the speed of the connection between the client and the server.

- Added this new standard module
modWININET.bas - Added this new standard module

The modWININET.bas file gives you FULL functionality to ALL the documented APIs in the WININET.DLL.  The modFTP.bas module uses the modWININET.bas module to tap into the WININET.DLL's FTP functionality and give you full FTP capabilities... including utilization of passive or active FTP connectivity and ASCII (Type A) and Binary (Type I) transfer methods... plus full data rate tracking via FTP callbacks.

HAPPY VALENTINE'S DAY !    ( Guys... hope you got something for her =P   )
Added the "ActiveX Controls", "DLL Files", and "VB Run Times" sections to the "DOWNLOADS" section
Added a chat room for anyone interested in getting on and chatting about VB, programming, code, or whatever.  =]
- Added this new sample project
modBitmap.bas - Added this new standard module
cSprite_Bitmap.cls - Added this new class module
cSprite_Background.cls - Added this new class module

The combination of modBitmap.bas, cSprite_Bitmap.cls, and cSprite_Background.cls are the key elements for creating "sprite" animation easily and efficiently.  A "Sprite" is an image that is drawn repeated in different locations to give the appearance of movement.  This technique sometimes is used to create games.  To see it all in action, download the Sprites.zip sample project or read the documentation in the cSprite_* modules.

With the addition of the Sprites.zip project, the sample projects area is now up and running.  I'm going to be adding several more sample projects very soon.  Stay tuned.

modGetLastError1.bas - UPDATED this standard module
modSubCls.bas - Added this new standard module

This DLL makes sub-classing windows messages in Visual Basic safer by taking it over and handling it outside of VB.  This makes editing sub-classing code at run time within VB possible because it doesn't lock up the VB IDE.

I created the first of many HOWTO lessons "Creating .EXE's".  I actually finished this about a week or so ago, but never got around to posting an update stating that I finished it... so here it is!    =]   Check it out and shoot me an Email to let me know what you think of it.
modScreen.bas - Added this new standard module
cScreen.cls - Added this new class module

These modules together give you all the information available via the standard VB object "Screen" so you can use this information in VBA applications like AutoCAD and MS Word 97 where the Screen object is not available.  The information reported by the cScreen.cls class module is actually more accurate than the Screen object when it comes to properties like the TwipsPerPixelX and TwipsPerPixelY.

These modules also give you A LOT more functionality on top of the standard information available to you via the VB Screen object like the ability to dynamically resize the screen size and draw objects and pictures directly to the display area of the screen.

modCompress.bas - Added this new standard module

This class module was written to make it easy to compress and decompress files, text, or byte arrays.  The compression method used and the DLL used to do it with are completely FREE (like all the other code and libraries on this site).

Updated the cANI.cls class module to correct a redraw bug, eliminate frame flicker, make it easier to use, make the one defined event work properly, and add the ability to STRETCH the image as it's being displayed.  Frame display rate has been reduced from a maximum of around 1 frame every 5 to 10 milliseconds to around 1 frame every 80 milliseconds (on my computer) due to extra memory usage, but the performance hit is worth the quality and stability added.
cANI.cls - Added this new class module

This class module was written to make displaying animations and animated cursors easy and efficient.

Updated the modKeyboard.bas module to correct a bug I found in the "VirtualKey_Check" function.
I added the following powerful find file / file system modules:

modFindFile_API.bas - Added this new module
modFindFile_FSO.bas - Added this new module

These two modules are identical as far as the public functions that are exposed and their usage... and because of this, they could be swapped in a project seamlessly.  They differ only in that the modFindFile_FSO.bas file uses the "FileSystemObject" object to do the work (which requires the file "SCRRUN.DLL"), and the modFindFile_API.bas file uses just the Win32 API to do the work.  The FSO version might be faster on a one for one search, but the API version is faster on a wild card search.  The FSO version also has to create and destroy the FileSystemObject many times over during a standard search which takes up memory and speed that the API doesn't.

Updated the VB Bugs web page to reflect a but that has been "bugging" me for a while.
I got certified in Visual Basic 5 and 6 at Brainbench.com!!  YEAH!  I updated the "Author" & "About Me" web pages to reflect my certifications and memberships.
I've slacked off a bit and am now uploading the stuff I've recently been working on.  Enjoy!     =]

modCommon.bas - Updated to include ComboBox "AutoComplete" function
modDUN.bas - Added this new module
modGetLastError1.bas - Added this new module
modHiLo.bas - Added this new module
modKeyboard.bas - Fixed a bug in the VirualKey_Send function
modOpenAndClose.bas - Added this new module
modRegistry_Adv.bas - Added this new module
modSysFonts.bas - Added this new module
modTimeZones.bas - Added this new module
modTTF.bas - Added this new module

- Added a bug to the VB Bugs page
- Added a few links to the Links page

modCPU_Intel.bas - Added this new standard module

Removed the site search ability because it wasn't working.  I can't get it to work for anything!  I've tried it all.  I'm not sure if intra.whatUseek.com is just a piece of crap search service, or if they can't spider my web site, or if I'm not giving it the right info, or what.  One thing's for sure... their tech support on it SUCKS!  I can't find any way to contact anyone about help on correctly setting it up... so I took it down.   Anyone got a REAL search engine that I can stick on my site?

cFileInfo.cls - Added this new class module
cCOMDLG32.cls - Updated to include the standard Find/Replace dialog
modCOMDLG32.bas - Updated to include the standard Find/Replace dialog
modCPUInfo.bas - Added this new class module
Updated the "VB Bugs" section with a new bug, and a correction to a previous one.