Solved

c declaration in vb - (structure)

Posted on 2001-06-13
10
196 Views
Last Modified: 2010-05-02
how to declare the following c structure in vb

typedef struct tagVBPARAM
{
    UINT nParam;
    ULONG nStatus;
}
VBPARAM;
0
Comment
Question by:azsoft
  • 3
  • 3
  • 2
  • +2
10 Comments
 
LVL 43

Expert Comment

by:TimCottee
Comment Utility
Type tagVBPARAM
  nParam As Integer
  nStatus As Long
End Type
0
 
LVL 38

Expert Comment

by:PaulHews
Comment Utility
Tim, I think UINT is 32 bit and ULONG is 64 bit.  I was thinking it would be:

Type tagVBPARAM
 nParam As Long
 nStatus As Double
End Type

But there are definitely problems reading the binary unsigned integer from a floating point var.
0
 

Author Comment

by:azsoft
Comment Utility
what happen to the VBPARAM on the last line.
0
 
LVL 3

Accepted Solution

by:
Joebob earned 50 total points
Comment Utility
typedef struct tagVBPARAM
{
   UINT nParam;
   ULONG nStatus;
}
VBPARAM;

UINT = Unsigned Integer - 16bits on 16bit machine, 32bits on 32bit machine
ULONG = Unsigned Long - Always 32 bits

Type VBPARAM
    nParam as Long
    sStatus as Long
End Type

VB doesn't support unsigned values so the variable ranges will no go from 0 to 4294967295, they will go from -2147483648 to 2147483647.

The C++ structure you show has 2 names, tagVBPARAM and VBPARAM.
0
 
LVL 38

Expert Comment

by:PaulHews
Comment Utility
>The C++ structure you show has 2 names, tagVBPARAM and VBPARAM.

More that there is a declared instance of the structure.  In VB:

Dim VBPARAM as tagVBPARAM
0
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 
LVL 16

Expert Comment

by:Richie_Simonetti
Comment Utility
I am with Paul.
Cheers
0
 
LVL 3

Expert Comment

by:Joebob
Comment Utility
The C++ structure has 2 different names.  The VBPARAM is not a variable of type tagVBPARAM, it is the type tagVBPARAM.

If you had the exact c declaration in VB, you would be able to do the following with exactly the same results.
   DIM t1 as tabVBPARAM
   DIM t2 as VBPARAM

VB doesn't support assigning multiple type names to the same data type and I have never found a place where doing it in C is benefitial.  To have the exact same thing in VB you would do the following, but my first post should be all you need.
----------------------------------------------
Type VBPARAM
   nParam as Long
   sStatus as Long
End Type

Type tagVBPARAM
   nParam as Long
   sStatus as Long
End Type
----------------------------------------------
Notice that the type is declared twice, once for each name that the C declaration used.
0
 
LVL 38

Expert Comment

by:PaulHews
Comment Utility
Ah you're right JoeBob.  I confused typedef with a simple struct definition.  Mebad.
0
 
LVL 3

Expert Comment

by:Joebob
Comment Utility
How is that a "B" answer?  I gave you exactly what you asked for plus a little extra info.  You can copy and paste my answer into your VB app and it will work.
0
 

Author Comment

by:azsoft
Comment Utility
Joebob, thank you very much. I wish i could change the score to A.
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now