Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

InfoPath stops responding when there is an ActiveX control with a ReadyState property


View products that this article applies to.

Symptoms

Microsoft Office InfoPath stops responding when there is an ActiveX control with a�ReadyState property. This problem occurs when you open or you preview an InfoPath form that includes an ActiveX control with the standard ReadyState property.

Note Additionally, you cannot add a future design to Form view. For example, you cannot add new controls to Form view and you cannot access the script editor. Also, you cannot easily delete controls from Form view.

↑ Back to the top


Cause

This problem occurs because InfoPath is waiting for the ReadyState property of an ActiveX control to be set to "4."

↑ Back to the top


Workaround

Do not use an ActiveX control with the ReadyState property.

↑ Back to the top


Status

Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.

↑ Back to the top


More information

The ReadyState property has the following enumeration:
  • READYSTATE_UNINITIALIZED = 0
  • READYSTATE_LOADING = 1
  • READYSTATE_LOADED = 2
  • READYSTATE_INTERACTIVE = 3
  • READYSTATE_COMPLETE = 4

Steps to reproduce the problem in InfoPath 2003

Build a control that is named ReadyStateControl. To do this, follow these steps:
  1. Start Microsoft Visual Studio. NET 2003.
  2. On the File menu, click New, and then click Project to create a new project.
  3. In the New Project dialog box, click Visual C++ Projects, click ATL Project, and then type ReadyStateControl in the Name box.
  4. Click OK, and then click Finish to accept all default settings for the ATL project.
  5. On the Project menu, click Add Class.
  6. In the Add Class dialog box, double-click ATL Control.
  7. In the ATL Control Wizard dialog box, type ReadyState in the Short name box.
  8. Click Stock Properties, click Ready State in the Not supported list, and then click > to add the Ready State property to the Support list.
  9. Click Finish.
  10. In the Readystate.h file, locate the following line.
    public CComControl<CReadyState>
    Put the following line under the previous line.
     public IObjectSafetyImpl<CReadyState, INTERFACESAFE_FOR_UNTRUSTED_DATA|INTERFACESAFE_FOR_UNTRUSTED_CALLER>
    Note You have to add a comma (,) to the existing line before you add the new line.
  11. On Build menu, click Build Solution to build the project.
Test the ReadyStateControl control. To do this, follow these steps:
  1. Start InfoPath.
  2. On the File menu, click Design a Form.
  3. In the Design a Form pane, click New Blank Form.
  4. Click Controls, and then click Add or Remove Custom Controls.
  5. In the Add or Remove Custom Controls dialog box, click Add.
  6. In the Add Custom Control Wizard, click CReadyState Object, and then click Next.
  7. Click Next to continue to accept the default options. Click Finish, and then click OK.
  8. Under Custom, click CReadState Object in the Controls pane.

    This adds the CReadState Object control to the form.
  9. Under Standard, click TextBox to add a TextBox control to the form.
  10. Click Preview Form.

    InfoPath 2003 Service Pack 1 does not respond. You cannot access the TextBox control.

↑ Back to the top


Keywords: KB888705, kbqfe, kbtshoot

↑ Back to the top

Article Info
Article ID : 888705
Revision : 3
Created on : 7/19/2010
Published on : 7/19/2010
Exists online : False
Views : 507