通用对话框会导致程序CRUSH?

通用对话框会导致程序CRUSH?

   近日的一个程序中使用了通用对话框CFileDialog来选择文件,奇怪的是我在本机上测试始终不会出現问题,但在其他机器上有时就会导致程序整个CRUSH掉,检查代码没有发现任何问题:
char  szFilters[] = " Hbu Files (*.hbu)|*.hbu|All Files (*.*)|*.*|| " ;

CFileDialog dlg( TRUE,NULL,m_szHbuPath,OFN_FILEMUSTEXIST 
|  OFN_EXTENSIONDIFFERENT  |  OFN_HIDEREADONLY  |  OFN_PATHMUSTEXIST, szFilters, this );
if (dlg.DoModal()  ==  IDOK)
{
        m_szHbuPath 
= dlg.GetPathName();
        UpdateData(FALSE);
}

   在发生CRUSH问题的机器上跟踪调试发现是在DoModal中调用GetFileNameA时出現的问题,经过简化代码最终可以确定是CFileDialog自身出的问题。
   后来在网上发现有人也遇到过相同的问题,解决方法是在应用程序初始化的时候加上OLE的初始化: AfxOleInit()。问题就解决了。
   PS:如果哪位高手知道该问题的发生机理和解决原理,请不吝告知!

你可能感兴趣的:(通用对话框会导致程序CRUSH?)