void CIOCPDlg::OnPath() 
{
OPENFILENAME ofn; TCHAR szPathName[128];
memset(szPathName,'\0',sizeof(szPathName));
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=m_hWnd;
ofn.lpstrFilter=TEXT("*.*\0");
lstrcpy(szPathName,TEXT("*.*"));

ofn.lpstrFile=szPathName;
ofn.nMaxFile=sizeof(szPathName)/sizeof(TCHAR);
ofn.lpstrTitle=TEXT("Select File To Copy");
ofn.Flags=OFN_EXPLORER|OFN_FILEMUSTEXIST;


BOOL fOk=GetOpenFileName(&ofn); 
}这段代码出现运行错误,步进调试到最后一句时候,弹出对话框说
Unhandled exception in IOCP.exe(KERNEL32.dll):0xC0000005:Acess Violation
是什么错误呢,遇到这种错误怎么办呢

解决方案 »

  1.   

    OPENFILENAME ofn = {0}; 就可以了。
      

  2.   

    ofn.lpstrFilter=TEXT("*.*\0"); =》ofn.lpstrFilter = "All\0*.*\0";不要使用TEXT宏,这个成员类型为 char * 不是 TCHAR *
      

  3.   

    void CIOCPDlg::OnPath() 

    OPENFILENAME ofn; 
    ZeroMemory(&ofn, sizeof(ofn));   //ok
    TCHAR szPathName[128]; 
    memset(szPathName,'\0',sizeof(szPathName)); 
    ofn.lStructSize=sizeof(OPENFILENAME); 
    ofn.hwndOwner=m_hWnd; 
    ofn.lpstrFilter=TEXT("*.*\0"); 
    lstrcpy(szPathName,TEXT("*.*")); ofn.lpstrFile=szPathName; 
    ofn.nMaxFile=sizeof(szPathName)/sizeof(TCHAR); 
    ofn.lpstrTitle=TEXT("Select File To Copy"); 
    ofn.Flags=OFN_EXPLORER|OFN_FILEMUSTEXIST; 
    BOOL fOk=GetOpenFileName(&ofn); }