AfxOleInit()

CFileDialog类无故崩溃的解决及原因分析

在最简单的MFC对话框应用程序里使用CFileDialog对象打开文件对话框。第一次打开都正常,每当第二次调出打开对话框后,只要鼠标在文件上晃动下就会崩溃,调试器断在shell32.dll模块里。显示Unhandled exception in test.exe (SHELL32.DLL): 0xC0000005 Access Voilation. 但是换成虚拟机或其他机器又会好。经过进一步调试,发现是Adobe Acrobat的一个组件使用了Shell扩展编程导致的。解决方法很简单在应用程序类CWinApp的InitInstance函数中调用一下AfxOleInit()就好了.


   OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应用包括:   
  (1)Clipboard;   
  (2)Drag   and   drop;   
  (3)Object   linking   and   embedding(现在的OLE,已不再仅仅是Object   linking   and   embedding的概念);   
  (4)In-place   activation;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值