Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 157
  • Last Modified:

ActiveX exe start up

In an ActiveX project you typically start it at the sub Main (), but if you leave that empty - where in the code would the program start.
0
tyy8
Asked:
tyy8
  • 5
  • 4
  • 2
  • +2
1 Solution
 
Erick37Commented:
Private Sub Class_Initialize()
0
 
sadcockCommented:
In whatever is specified in the program properties screen on the general tab.  Look for the startup object selection.


-Scott
0
 
wsh2Commented:
As with any project.. it is always best to start from a Sub Main module and then Navigate from there.. <smile>.

Sub Main, is a great place to define any/all Global variables, functions, and/or subroutines that you have all in one place. It is a great place to put once and done application open and close processing routines, disencumbering you from coding the same in various other Forms.. which can be a pain to locate if you ever have to go back to your code.

All in all, it is a matter of style.. but I prefer to ALWAYS use a Sub Main.. <smile>.
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
caraf_gCommented:
Remember though that this is an ActiveX .exe

You don't start an activeX .exe, a program that *uses* it does.

Having a Sub Main only makes sense if you are using a thread pool with a single thread. The reason is that Sub Main is only executed the very first time any objects from your activeX .exe are instantiated. Even if you set the threading model to Thread per Object.

If you're using a Sub Main to set your globals in the latter threading model, it will work fine the first time around, but not after.

In cases of ActiveX .exes I would actually advise very much against using a Sub Main.
0
 
tyy8Author Commented:
caraf -

But since it's an exe, it should have a new instantiation every time a user calls it (unlike a dll). So the sub main would get sparked for each user.
0
 
tyy8Author Commented:
Sadcock -

THe startup property is set to (none) in the dropdown box.
0
 
tyy8Author Commented:
Erick37 -

WHat if there is more then one class in the project, which class' initialize event would get fired?
0
 
caraf_gCommented:
tyy8

NO. Try it and see.
0
 
Erick37Commented:
Class_Initialize is fired for every class that you create an instance of.

Dim c as New Class1
'The Intitalize event for Class1 is
' fired prior to the .test call.
c.test
set c = Nothing
0
 
caraf_gCommented:
Exactly. If you specify a sub main, this sub is executed the first time ANY object in your ActiveX .exe is instantiated.

As long as the ActiveX .exe remains loaded, this sub won't happen again, no matter *how* many subsequent objects from the ActiveX .exe you load.
0
 
tyy8Author Commented:
Oops, yeah - your right. I guess I was thinking of the class being set to singleuse - and that make a new exe everytime.

Okay, I think I'm cleared up on this point. Who wants the points?
0
 
wsh2Commented:
caraf_g:
sub main.. <hat in hand>.. I stand corrected and defer to your wisdom.. <smile>
0
 
caraf_gCommented:
tyy8, just give the points by accepting whosever comment you deemed most appropriate to your question.
0
 
tyy8Author Commented:
Caraf_g:

Your comments were the most enlightening, thanks to everybody, so I'll send the points over to you.

Thanks
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 5
  • 4
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now