Object-Oriented Question, and "Methods", and Installable modules.

To: Object-Oriented Wizards:

RE: module ->  loadable/intallable module(s)

I have a question relating to Object-Oriented programming.  I am versed in "C", but not in  Object-Oriented programming.  In surfing the web, I have noticed that you can installed modules into "C..." or in "VB" environments and so forth for ease of work.  These modules contain many callable routines that the user can call upon instead of using a DLL file.  Using these modules, you get away of declaring each DLL routine(s) you use.   I was told by a Computer consultant that these "loadable/installable" modules are the way to go, and that they are written in an Object-Oriented language, I suspect/could be written in "C"....

I would like to ask/request some workable examples(hopefully) in "C" that would show me how this is done.  Examples meaning:     .
          1)  how is this module is setup, to do the following:
              a) construct and syntax and etc.    
              b) is there an initialization section.
              c) how can I use existing "C" routines.
              d) I am trying to get away from using  DLL(s).
              e) I would like to load/install this module into my VB6 environment for ease of  
          2) what programming environment is needed.
          3) de-install this module.
          4) and etc...
 So with all of this and other things and thing that I do not know that required, I would ask for working examples of a working module with examples of simple examples of routines being called from, say from a VB app.   I know I am asking a lot, but how many points do you request to complete this task?   I would like to learn so that I could learn from and build my own module.   I have plenty of points to work with, thanks in advance.
Are these modules that I speak of, are they OCX's???  If not what?


    November 26, 2003
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.


firstly, i'm not sure but i think this should be in the Visual Basic section

secondly, in VB you can create a module by clicking on File > New... > Module
every function, sub and variable you declare inside the module will be visible in any program which contains it. so to use it again just add it to your project.

you can, of course, create ActiveX DLLs which are pretty much the same but you need to reference it in the project references.
but you don't want to use dlls, so never mind that.

if i'm on the wrong tracks then please clarify the question
midnightexpressAuthor Commented:
To: monkesdb

You are on the right track somewhat.  I would like to create this installable/loadable module in "C".  Because "C" is a general platform.  From what I have researched, is that it is a ActiveX DLL.  This ActiveX DLL has public functions within and then becomes "Class modules" and I guess these are called "Methods".  But have then have a graphic pull down menu with a list of routines to choose from. And then after you type 'anobjectorientedname.';  and so after you type that period - that is where this graphic pull down menu pops down and you can choose which function you want.  Then after choose the function; the parameter(with characterisitcs) help kicks in for the user to fill( syntax help) in the right variable data type.   Also, have within it, a function that sees' if it has the correct passvalue which in turns lets the functions be used - if not prompt for it and have it registered in the registry.   Can you build it genericly where it will fit any MS platform environment.   A lot of these ideas that I have mentioned, comes from MSVB and MSVC - they have these installable/loadable modules in them. I have used these modules in MSVB.    How can this module be loaded in MS programming environments, genericly.   I learned how to build a generic MS DLL File, and call it from MSVB.   I would like to have this project built, but I don't want to sound rude or demanding.

 Does this make any more sense??  I think it might.    But also have this installable/loadable module have the option of deinstalling itself.    Please refer to my initial question for details.
As for points, if you feel that this project is work more points - please let me know much more.  I use these points for learning and have learned some new ideas and tools.

What VB call Modules, C++ calls ActiveX/COM DLLs.
In VB, using this modules is as easy as using Win32 APIs in in VC++  BUT (alas!) in VC, using COM modules is a right pain in the behind.  Judging from your question, you will have a steep learning curve.

The VC++ AppWizard and ClassWizard simplify the task somewhat.  See this for the world's shortest tutorial on creating an ActiveX and calling it from JavaScript.  Calling it from C++ is much more complicated, but the journey of a thousand miles starts with a a single step (onto an airplane:)


-- Dan
Become a CompTIA Certified Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

midnightexpressAuthor Commented:
Thanks,  DanRollins:

 Okay,  I have a bunch of routines written in std ansi "C".  I know I can write a OCX/ACTIVEX in MSVB, BUT...,  How can I marry/merge the routines that I have written in "C" with VB and make a VB ACTIVEX/OCX and it will work! and be functional with all other windows programming environments???  Because I do not want to re-write the "C" routines in VB.  Because VB does not have some nice features the "C" does.   I look forward in hearing from you.  Thanks(TIA).

I think you can make a .LIB file of the C functions and then use the VB "Declare" function to access them from VB.

    Public Declare Function MyFn Lib "Mylib" ( Long n ) As Long

I've done this with a DLL, but not with a .OBJ file or a code in a .LIB file.   Someone in the VB section will know for certain.

Anyway, most people who ask this do so because they think there will be some tremendous s-speedup by using C code.  That turns out to not be the case most of the time.  VB is slow in some things, but those things are the same ones that C is slow in doing.  The next most common reason is that the asker thinks that C will be able to do things such as low-level disk access or calling BIOS functions.  But those kinds of operations are prevented by the Operating System -- not the langiuage itself.

So, what are you trying to accomplish?  What kinds of functions are in the C library that you want to access from VB?

-- Dan
midnightexpressAuthor Commented:
Declare: an ACTIVEX/OCX module as ACTIVEX

 I have some "C" already written, and are with a (non MFC) DLL File (which works).  Currently
     I have a VB program that drives the all of the functions contained within the DLL file that I
     have made.  The DLL "C" routines are simple "C" functions.

 I am trying to build a ACTIVEX, in which - within this ACTIVEX module,   ?Methods?
   1) it is registered within the registry
   2) there is no need to declare any functions used.
   3) you type in the function and then type in the left parenthesis, you get parameter
          information help, meaning parameter syntaxial help- for each parameter till finished.
   4) a registration feature, which the user must enter a keycode for the activex module to
        also put in a back door feature for debugging and testing.
   5) check the above messages for additional items.
   6) make activex module useable in all MS programming environments.
   7) Put in an about box and help areas call via a menu - if possible?.

  If I can make a VB activex module/file, and use my "C" DLL routines;  how do I do it?
    If so, what is the function call module(that the user calls) set up and within that module,
       show me how I can call one of the DLL functions contained there in.

  Thanks for the fast reply, I hope to hear from you soon.  Thanks for your help and hope you
      can help me out.   Thanks(TIA).

   If you need more points to do the project, please let me know how much more.

midnightexpressAuthor Commented:
The last message from Midnightexpress is for DanRollins.  Thanks.
VC++ does provide a way -- using the AppWizard and ClassWizard -- to generate an ActiveX module that does what you desire, including self-registration... as I described here:    http:#9879408

However, doing *all* of that, including the ability for the VB IDE to "intellisense" (fill-in parameters, etc.) is probably difficult... and there would be other parts of the system that are just much harder to program in C/C++.

The best technique would be to make your ActiveX object in VB... use the VB IDE to create the complete do-nothing 'stub' of all functions that you want other programmers to be able to access -- but none (or only some) of the real funtionality.

Then you can edit the VB procs and make direct calls into your C code, using the

        Declare Function MyFn Lib "Mylib" ( Long n ) As Long

style declarations.  This is akin to what a VB programmer needs to do when calling Win32 API functions.  Only in this case, you are calling the function in your own C module.

-- Dan

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
No comment has been added lately, so it's time to clean up this TA.
I will leave the following recommendation for this question in the Cleanup topic area:

Accept: DanRollins {http:#9900991}

Please leave any comments here within the next seven days.

EE Cleanup Volunteer
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.