Help and Support
 

powered byLive Search

FIX: User Defined Type in Public Function of a User Control Fails to Run

Article ID:224185
Last Review:August 7, 2007
Revision:2.2
This article was previously published under Q224185
On This Page

SYMPTOMS

A User control has a Public User Defined Type (UDT). The User Control has a Public function that has the UDT in the function declaration as either an argument or the return type. When this User control is used in other Microsoft Visual Basic projects, it does not run on any machine other than the development machine. When deployed to other machines, the application just beeps and exits.

Back to the top

CAUSE

The CLISID of the OCA file is being used in the executable to reference the UDT. This is incorrect. The OCA file should only be used at design time.

Back to the top

RESOLUTION

Define all UDTs in a separate ActiveX DLL and reference this DLL in both the User control and the Standard EXE project. When the Standard EXE project is distributed, the ActiveX DLL is distributed as well.

Back to the top

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This bug was corrected in the next service pack for Visual Studio 6.0.

For additional information about Visual Studio service packs, click the following article numbers to view the articles in the Microsoft Knowledge Base:
194022 (http://support.microsoft.com/kb/194022/EN-US/) INFO: Visual Studio 6.0 Service Packs, What, Where, Why

194295 (http://support.microsoft.com/kb/194295/EN-US/) HOWTO: Tell That a Visual Studio Service Pack Is Installed
To download the latest Visual Studio service pack, visit the following Microsoft Web site:
http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx (http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx)

Back to the top

MORE INFORMATION

Steps to Reproduce Behavior

1.Create a new Visual Basic ActiveX Control project. UserControl1 is created by default.
2.Add the following code to the General Declarations section of UserControl1:
Public Type UdtType
  strHello As String
End Type

Public Function udtFunction() As UdtType
  udtFunction.strHello = "Hello World"
End Function
					
3.On the Project menu, select Project1 properties, and change the Project name to udtControl.
4.On the File menu, select Make Project1.ocx to compile the control, and then name it udtControl.OCX.
5.From the Project properties, select the Component tab, and set the Binary Compatibility to udtControl.OCX.
6.From the File menu, select Add Project, and create a new Visual Basic Standard EXE project. Form1 is created by default.
7.Make sure the UserControl design window is closed, and then site an instance of udtControl.OCX on Form1.
8.Add the following code to the General Declarations section of Form1:
Private Sub Form_Load()
  Dim myUdt As UdtType
  myUdt = UserControl11.udtFunction
  MsgBox myUdt.strHello
End Sub
					
9.From the File menu, select Make Project2.exe to compile the executable.
10.Run the Package and Deployment Wizard (PDW) to create a new Package. Install this Package onto another machine.
11.Run the EXE on the target machine and note that you hear a beep and the application terminates without displaying the form.

Back to the top

REFERENCES

For additional information, please click the article number below to view the article in the Microsoft Knowledge Base:
237922 (http://support.microsoft.com/kb/237922/EN-US/) BUG: User Defined Type Referenced by User Control Raises "Class Not Registered" Error Message

Back to the top


APPLIES TO
Microsoft Visual Basic 6.0 Learning Edition
Microsoft Visual Basic 6.0 Professional Edition
Microsoft Visual Basic 6.0 Enterprise Edition

Back to the top

Keywords: 
kbappsetup kbbug kbctrl kbdeployment kbfix kbvs600sp4fix kbvs600sp5fix kbwizard KB224185

Back to the top

Article Translations

 

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.