DOCUMENT:Q192129 02-SEP-1998 [vbwin] TITLE :PRB: Run-Time Error '373' or '-2147417848(80010108)' PRODUCT :Microsoft Visual Basic for Windows PROD/VER:WINDOWS:5.0,6.0 OPER/SYS:WINDOWS KEYWORDS: ====================================================================== --------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, versions 5.0, 6.0 --------------------------------------------------------------------- SYMPTOMS ======== When passing a form to a public procedure of a compiled UserControl, you receive one of the following error messages: Run-time error '373': This interaction between compiled and design environment components is not supported. -or- Run-time error '-2147417848(80010108)': Method 'xxx' failed The first error is received if running a Visual Basic 6.0 project, the second applies to Visual Basic 5.0 projects. CAUSE ===== Forms and controls are private objects to the Visual Basic project that created them. Therefore, they should not be passed as parameters to procedures outside the project. Although you can work around this error message by adding the UserControl project and the test client project to the same project group, passing forms and controls outside the project that originally created them may have unpredictable side effects and is strongly discouraged. RESOLUTION ========== There are two possible resolutions to avoid this behavior: - Do not pass forms or controls outside a project. - Add the UserControl and the client projects to the same project group. STATUS ====== This behavior is by design. MORE INFORMATION ================ Steps to Reproduce Behavior --------------------------- Create the UserControl: 1. Create a new UserControl project in Visual Basic, and name it TestCtl. 2. Add a form to the project. 3. Add the following code to the UserControl's code module: Public Sub ShowForm(frm As Object) Form1.Show vbModal, frm End Sub 4. Compile the project and create TestCtl.ocx. Create the Test Client Project: 1. Create a Standard EXE project in Visual Basic. Form1 is created by default. 2. Add TestCtl.ocx to the ToolBox by selecting Components from the Tools menu and selecting the TestCtl control. 3. Add a TestCtl to Form1. 4. Add a CommandButton (Command1) to Form1. 5. Add the following code to Form1's code module: Private Sub Command1_Click() UserControl11.ShowForm Me End Sub 6. Press the F5 key to run the project. When you click Command1, one of the following messages is received: Run-time error '373': "This interaction between compiled and design environment components is not supported." for a VB6 project. -or- Run-time error '-2147417848(80010108)': "Method 'xxx' failed" for a VB5 project. Additional query words: kbdss kbDSupport kbVBp kbCtrlCreate kbVBp500 kbVBp600 ====================================================================== Version : WINDOWS:5.0,6.0 Platform : WINDOWS Issue type : kbprb ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 1998.