EnableVisualStyles strikes again...
My friend Jeff Berkowitz got nailed by the EnableVisualStyles bug in WinForms 1.1 that causes a weird SEHException when calling ShowDialog(). Jeff and his team really push WinForms to the limit and he finds some crazy stuff, including a scary Resource Naming problem in VS.NET 2003.
CLRSpy, Jeff Key, and Adam Nathan to the rescue though. Although Jeff had debugged the problem and figured it out himself, CLRSpy would see the as an error probe and break on it.
Adam suggests three possible workarounds:
- Disable the PInvoke Calling Convention Mismatch probe, or
- Uncheck "Break on Error Messages" in CLR SPY so you can ignore this message and not provoke the crash, or
- Use an XML manifest to enable XP themes, rather than using the EnableVisualStyles API.
Of course, using the manifest is the preferred method methinks.
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
'Turn on XP Theme support if it exists
If OSFeature.Feature.IsPresent(OSFeature.Themes) Then
Application.EnableVisualStyles()
Application.DoEvents()
End If
First, you check for the support. Then enable the visual styles... and IMMEDIATELY follow with a DoEvents. No problems yet!
Comments are closed.
Thank Goodness for you and your WebSite!
I have been pulling my hair out trying to fix a problem where the first ShowDialog() works fine, but the second causes SEHException.
I found and commented out EnableVisualStyles() and my problems went away.
Thanks! Please, keep up the good work!