调用之前 加HRESULT Hr = ::CoInitialize(NULL);
调用之后加::CoUninitialize();
注意CoInitialize 和 CoUninitialize 的调用时机问题
最好整个程序在初始化的时候CoInitialize,程序结束的时候CoUninitialize,过早CoUninitialize容易导致其他一些COM接口异常,网上查的CoInitialize 和 CoUninitialize可以自动一一对应,但是我在程序中这样用会出问题,比如对话框程序,点击一个按钮的事件中,
void xxx::OnButton1()
{
CoInitialize(NULL);
//新建一个窗口
CoUninitialize();
}
如上使用的话,整个程序莫名其妙的关闭,不显示了。
本文探讨了COM组件中CoInitialize和CoUninitialize的正确使用方法,强调了在整个程序生命周期内进行初始化和清理的重要性,并通过示例说明了不当使用可能导致的问题。
1047

被折叠的 条评论
为什么被折叠?



