Computers & Technology Library

Guide to Visual Basic 6

By Jonathan Valentin

Introduction:

What are you going to learn out of this guide?

You are going to learn how to code correctly in Visual Basic. And maybe pickup a thing or two you did not know before. I am assuming that you are able to pick a control from the toolbox and placing it on the form and setting its properties. I broke up the guide into four parts.

Part1 - The Basics involving writing good code and formats.
Part2 - The Code basic visual basic commands.
Part3 - Advanced Visual Basic - Dealing with Api's and a lot of cool things.
Part4 - Extra Goodies

Part 1A: The Basics

An important of being a good Visual Basic programmer is using good names for your files and your controls. It may seem like extra work but in the long run, it will enable you to code faster and allow yourself and others to understand your own code better.

A rule I use for prefixes is to keep the prefix in lowercase then uppercase the first letter of the name of the control or file.

Prefixes for files:

prj = Project
frm = Form
mod = Module
cls = class
usr = user control

Prefixes to Common Controls
lbl = Label control
cmd = Command button
img = Image control
pic = Picture box
tmr = Timer
shp = Shape
chk = Checkbox
lst = Listbox
txt = Textbox
opt = Option button (Radio button)
hs = Horizontal scrollbar
vs = Vertical scrollbar
cbo = Combo box
mnu = Menu
sck = Winsock

Bad Names do not use!
Form1
Command1
Timer1
Picture1

Good Names
frmMain
cmdClose
TmrLoop
picView

Prefixes can also be very useful to you when you are writing out code.

str = String
lng = Long
int = Integer
sng = Single
bln = Boolean
var = Variant

Bad Example: dim stuff as string

stuff=inputbox("Please enter your name")

Good example:

dim strName as String

strName = inputbox("Please enter your name")

Part 1B. Making your code readable part 2.

You have already learned how prefixes can help making coding faster and easier. Now lets move on to comments and indenting!

One of the worst things around is finding code that is not indented and or no white space.

Bad Example

sub ProcessNumber(ByRef intNumber as integer)
if intnumber= 3 then
else
if intNumber = 4 then
end if
end if
End Sub

Good Example:

sub ProcessNumber(ByRef intNumber as integer)

If intnumber= 3 then

Else

If intNumber = 4 then

End If

End If End Sub

When do you indent?

You also tab once when you begin to code in an event or subroutine. Then for each if statement, loop, you also indent.

Comments:

Visual Basic comments begin with ' and can go anywhere that you want They are useful in explaining your code to yourself and others. I really wish VB had multi line comments like in C++ but it is not too bad.

White Space:

Leaving white space makes your code easier to read and makes it look cleaner

Part 2: The Code

The fun stuff begins now.

The very first line in all your forms and modules should be Option Explicit

What does Option Explicit do? Well it forces you to declare all your variables with otherwise would make them all the variant type.

Example so you can not do:

for i=0 to 100 next i

You have to first have i declared Dim i as byte for i=0 to 100 next i

Variables

What are Variables? They hold data that may change when you run your program

Byte = holds numbers from 0 to 255 String = holds characters or letters such as "Hello World! and numbers too 123456789" Integer= numbers no decimals from -32,768 to 32,767 Long = numbers no decimals from -2,147,483,647 to 2,147,483,647 Single = Can hold decimal numbers 32bit Boolean = holds either True or False

Constants

What are constants? They hold data that does not change. An example of a constant would be private const Pi = 3.14

Private/Public/Global

What does Private mean?

Private means it can only be accessed in the current form, module, or class.

What does Public and Global mean?

Public means it can be accessed from any form, module, or class

Static

If you make a variable static it will save its value the next time the sub is run.

IF Then statements

One line if then statement

If condition=True then blnSomething=true

Multi Line if then statement If condition=true Then 'Your code goes here

End If

Complex IF then else statements

If condition=True Then

Else

'Condition=false

End If

If condition=true Then

ElseIf contition2 = True Then

End If

Select Case Statment:

Like the switch statement in c++ What is it good for? It is good for instances when you have one variable and do not want to have a million if then statements.

Example

Dim intNumber as integer

select case intNumber

case 1:

case 2:

case else:

end select

Loops:

For Next Loop Syntax for

For i = 0 to 100 step 100

next

Do While

Do Until

Subs and Functions overview of ByVal and ByRef By default all visual basic parameters are passed by reference which means you are passing the memory address and not the value. sub Test()

dim strReturnValue as string

call Test2(strReturnValue)

msgbox strReturnValue

end sub sub Test2(strRef as String)

strRef="Hello World"

end sub

What is a Function? A function is a special kind of procedure that returns a value for instance sub Main

msgbox AddNumbers(3,4)

end sub private function AddNumbers(ByVal intNumber1 as integer, ByVal intNumber2 as integer) as integer

AddNumbers = (intNumber1 + intNumber2) end function

In the example above it shows a message box with the result of 7

You can specify how you want to pass a parameter either by reference (byRef) or by value (byVal) You want to use pass by value when you are not going to change the parameter.

sub Example(ByRef strRef as string, ByVal intNumber as integer)

end sub

Some Quick Reference:

All Visual Basic functions and commands are listed in the object browser. It looks like a box with things coming out of it in the toolbar.

Use App.path instead of hardcoded paths. App.path returns the path to your application

You can use app.previstance to detect if your application is already running.

Part 3: Advanced Visual Basic Information

Section A: Understanding API's Your guide for Visual Basic Api's is http://www.allapi.net Once you vist allapi.net Get Api Viewer 2004 lists tons of VB Api's Get Api Guide has many Api's and examples of how to use them.

Converting C++ Api's to Visual Basic Api's VB Integers = C++ Short VB Longs = C++ Integers

Section B: Pointers

There is a common myth going around that Visual Basic does not support pointers. This is untrue they are just hidden.

VarPtr ObjPtr StrPtr

AddressOf - Used for finding addresses of procedures

Section C: Understanding VB's binary data.

Visual Basic stores a string in the following format Length as integer Text as String

Bytes take up 1 byte of data.
Boolean takes up two bytes either 00 00 or FF FF
Integer's take up two bytes.
Long takes up four bytes.
Single takes up four bytes.
Double takes up eight bytes.

Section D: Reverse Engineering Visual Basic VB (5/6)

For the last couple of months this has been the area I have been working on. For Visual Basic 6 exe's there are two methods of compiling either Native or P-code. P-Code is pretty easy to understand since all the opcodes are known and it is just matter of figuring out which opcode does what and linking the imports of the exe. Native on the other hand is tricky it involves converting assembly to visual basic code. check out http://decompiler.theautomaters.com - Visual Basic Decompiler forum for more information.

Section E: Compiling real Dll's in Visual Basic like C++

By default Visual Basic does not make dll's with exports, they just make active x dll's. But you can make them in Visual Basic if you can intercept the compiling process. You can make your own c2.exe to intercept the parameters being passed to the real c2.exe then pass that information plus the def file to create a normal dll with real exports.

Section F: Debugging/Decompiling

Tips I like to use Debug.print or use a msgbox statement to see what’s going on in my code. SmartCheck - excellent tool for debugging a compiled exe.

Visual Basic Decompiler list:

Semi VB Decompiler - http://www.visualbasiczone.com
VB Parser 1.2
Race
VB Reformer
VBDE
VB Editor
VBREZQ
EXDEC

Section G: Choosing your compiling type.

Visual Basic Offers two ways to compile your application either Native or P-Code
Native-
Is faster
Harder to Decompile
Is larger
P-Code
Slower
Easier to Decompiler
Smaller exe's

Part 4: Extra Goodies

Section A: Links!

http://www.pscode.com - Best place to look for visual basic code.

http://www.vbgamer.com - dealing with Visual Basic Games

http://decompiler.theautomaters.com - Visual Basic Decompiler forum

http://www.visualbasiczone.com - my site for VB

http://www.vbcity.com - Excellent community of knowledgeable people

About the Author

Author has been programming in Visual Basic for over eight years. His site is http://www.visualbasiczone.com and offers a decompiler for vb6 called Semi VB Decompiler

Copyright © 2006, CompTechLib.com