Internet relly Chat IRC
     
Home Page

Whats New Page

Catalog Page

Custom Page

Custom2 Page

Custom3 Page

Custom4 Page

Favorite Links Page

Guest Book Page

 

See Source and dll file irc
Figure 1 YELLER.DLL


YELLER.DEF

; module-definition file for generic -- used by LINK.EXE

LIBRARY Yeller
DESCRIPTION 'Old Yeller 16-bit Sample DLL'
EXETYPE WINDOWS

CODE PRELOAD FIXED
DATA PRELOAD SINGLE

HEAPSIZE 2048

EXPORTS
WEP @1 RESIDENTNAME
GetString @5
GetStringA @10
Powers @15

YELLER.C

#include
#include
#include

//========================================================
// Takes an integer and creates "String number n" from it.

LPSTR _export WINAPI GetString(int i)
{
LPSTR rval;
rval = GlobalAllocPtr(GHND, 32);
wsprintf(rval, "String number %d", i);
return rval;
}

//========================================================
// Prints text into a passed-in string, and returns the
// total number of bytes used.

int _export WINAPI GetStringA(LPSTR strg, int i)
{
return wsprintf(strg, "StringA number %d", i);
}

//========================================================
// Takes two integers and returns the value of the first
// raised to the second.

double _export WINAPI Powers(int x, int y)
{
static double dbl;

dbl = pow(x, y);
return dbl;
}
Figure 2 VISTHUNK


VISTHUNK.BAS

Attribute VB_Name = "basVisThunk"
Declare Function OGetString Lib "yeller.dll" Alias "GetString" (ByVal x As _ Integer) As Long ' For LPSTR
Declare Function OGetStringA Lib "yeller.dll" Alias "GetStringA" (ByVal stg As _ String, ByVal x As Integer) As Integer
Declare Function OPowers Lib "yeller.dll" Alias "Powers" (ByVal x As Integer, _ ByVal n As Integer) As Double
Declare Function lstrcpy Lib "kernel" (ByVal lpString1 As String, ByVal _
lpString2 As Any) As Long

Sub Main()
End Sub

THUNK.CLS

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "Thunk"
Attribute VB_Creatable = True
Attribute VB_Exposed = True

Function GetString(i As Integer) As String
Dim l As Long
Dim y As String * 32

l = OGetString(i)
n = lstrcpy(y, l)

GetString = y
End Function


Function GetStringA(str As String, x As Integer) As Integer
Dim irc As Integer
irc = OGetStringA(str, x)
GetStringA = irc
End Function

Function Powers(x As Integer, n As Integer) As Double
Dim dbl As Double
dbl = OPowers(x, n)
Powers = dbl
End Function
Figure 3 Converting Strings


Dim stg As Long
Dim y As String * 32 ' Or some other value - demonstration purposes

' Call the DLL GetString function. It should return "String number 5"
stg = OGetString(5)

' stg is an LPSTR. Copy it into the pre-allocated VB string.
n = lstrcpy(y, stg)

' Use the pre-allocated string to set lblGetString's Caption.
lblGetString.Caption = y
If the string is in a parameter, and not a return value, you don't have to deal with this conversion at all.

FunctionGetStringA(strAsString,xAsInteger)AsInteger
Dim irc As Integer
irc = OGetStringA(str, x)
GetStringA = irc
End Function
Figure 4 Updating Code


Old

Sub btnGetString_Click ()
Dim stg As Long
Dim y As String * 32
stg = GetString(5)

n = lstrcpy(y, stg)
lblGetString.Caption = y
End Sub

New

Private Sub btnGetString_Click()
Dim y As String * 32
y = Obj.GetString(5)
lblGetString.Caption = y
End Sub

Old

Sub btnGetStringA_Click ()
Dim y As String * 32
i = GetStringA(y, 14)
lblGetStringA.Caption = y
End Sub

New

Private Sub btnGetStringA_Click()
Dim y As String * 32
i = Obj.GetStringA(y, 14)
lblGetStringA.Caption = y
End Sub

Old

Sub btnPowers_Click ()
Dim z As Double
z = Powers(2, 13)
lblPowers.Caption = z
End Sub

New

Private Sub btnPowers_Click()
Dim z As Double
z = Obj.Powers(2, 13)
lblPowers.Caption = z
End Sub
.



 

Lets Have Good Time




.