commonDialog引发AccessViolationException的一种原因

本文探讨了导致“创建窗口句柄”错误的各种原因,包括使用非托管代码、访问不存在的文件、权限问题、编译优化错误及控件数量过多等,并提供了一种解决方案,即移除manifest文件中关于通用控件样式的特定配置。

问题很简单,可是找到问题却不是那么容易。这只是我这个问题引起的原因,并不是通解。期间参考了大量国外的讨论。国外很多人遇到这个问题,原因有:

1.使用了非托管代码或模块;

2.试图访问的文件不存在;

3.没有权限(主要是windows vista以后版本);

4.编译优化造成的错误,关闭相关优化选项;

5.控件数量过多(主要是:Error creating window handle);

 

原来前几天改了一下manifest里面的属性,在里面添加了:

<dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
    </dependentAssembly>
  </dependency>

这段代码的意思是允许通用控件由系统改变样式(当然,这其实也是个权限问题)。把这段代码去掉就没有问题了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值