Microsoft KB Archive/329478

From BetaArchive Wiki

Article ID: 329478

Article Last Modified on 10/11/2005



APPLIES TO

  • Microsoft Visio 2002 Standard Edition
  • Microsoft Visio 2002 Professional Edition



This article was previously published under Q329478

IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry


SYMPTOMS

When you use certain third-party ActiveX controls in a Microsoft Visio drawing, you may find that the CPU usage on your computer increases significantly (up to 98 percent). As a result, you experience decreased performance in Visio. Visio may also stop responding (hang).

This problem does not occur when you use the same ActiveX control in a Microsoft Office XP program, such as Microsoft Word or Microsoft Excel.

CAUSE

This problem may occur if the ActiveX control calls the PropertyNotifySink::OnChanged method. When this occurs, Visio does not correctly handle the ActiveX control.

RESOLUTION

Service pack information

This problem is corrected in Microsoft Visio 2002 Service Pack 2.

To resolve this problem, obtain the latest service pack for Visio 2002. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

867749 How to obtain the latest Visio 2002 Service Pack


Hotfix information

A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next Microsoft Visio 2002 service pack that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the hotfix. For a complete list of Microsoft Product Support Services telephone numbers and information about support costs, visit the following Microsoft Web site:

Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

The global version of this hotfix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.

Date           Time      Version          Size         File name
-----------------------------------------------------------------
29-Oct-2002    21:17     10.0.3424.4        68,832      Visio.exe        
29-Oct-2002    21:17     10.0.3424.4     6,348,008      Vislib.dll       
04-Oct-2002    21:09     10.0.3404.4       646,320      Visres.dll    

This fix adds the following registry entry:

HKEY_CURRENT_USER\Software\Microsoft\Visio\Application\OnChangedSinkRefreshThrottle


In this fix, logic was added to the IPropertyNotifySink::OnChanged code in Visio to throttle the update calls to the shapesheet. This new behavior occurs if the following conditions are true:

  • The size or location of the ActiveX control does not change.


-and-

  • You enable the OnChangedSinkRefreshThrottle registry entry after you install the fix. To enable the registry entry, set HKEY_CURRENT_USER\Software\Microsoft\Visio\Application\OnChangedSinkRefreshThrottle to a value other than the default value of 0 (zero) seconds.

The OnChangedSinkRefreshThrottle value is used to determine if enough time has elapsed between the last OnChanged request for a specific dispatch identifier (DISPID) on an ActiveX control. It provides relief when you use real-time controls with bindable properties that refresh the properties and inform Visio by using the OnChanged calls, and when the interval between the calls to IPropertyNotifySink::OnChanged cannot be set in the control.

To enable the OnChangedSinkRefreshThrottle registry entry, follow these steps:

WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

  1. Start Visio.
  2. On the Tools menu, click Options.
  3. Click the Advanced tab.
  4. Under User settings, click to select the Put all settings in Windows registry check box, and then click OK.
  5. Quit Visio.
  6. Click Start, and then click Run.
  7. In the Open box, type regedit, and then click OK.
  8. Locate the following registry key:

    HKEY_CURRENT_USER\Software\Microsoft\Visio\Application

  9. In the right pane, double-click OnChangedSinkRefreshThrottle.

    Note that the default value that appears in the Value data box is 0 (zero).
  10. Change the value in the Value data box to use a value other than the default value of 0.

    Note: Any value that is greater than the default value of 0 enables the throttling feature. Use a value that is appropriate to the throttling level that you want. In certain situations, you may require a throttling level greater than 1. For example, type 2 in the Value data box, and then click OK.
  11. Quit Registry Editor.

Notes:

  • Use this method if you only have to enable the fix on a few computers. To deploy and enable this fix to a large number of computers, export the modified registry key to a .reg file and then deploy the fix in addition to the .reg file to the other computers . Note that because this is a per-user setting, the registry key must be configured for each user.
  • All Visio user settings registry keys (including the HKEY_CURRENT_USER\Software\Microsoft\Visio\Application\OnChangedSinkRefreshThrottle registry entry described in this article) are stored in the HKEY_CURRENT_USER hive in the registry. Because this hive maintains separate settings for individual users, the functionality must be enabled for each user.
  • To disable the OnChangedSinkRefreshThrottle registry entry, restore the value of the HKEY_CURRENT_USER\Software\Microsoft\Visio\Application\OnChangedSinkRefreshThrottle entry to the default value of 0 (zero) seconds.


STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
This problem was first corrected in Visio 2002 Service Pack 2.


Additional query words: visio2002 vso2002 hotfix qfe

Keywords: kbbug kbfix kbqfe kbhotfixserver KB329478