打开一个文件对话框CFileDialog,怎样限制不可选择含有中文的路径或文件名
3ks,可用即给分

解决方案 »

  1.   

    CFileDialog是MFC提供的公共类,它是不提供你所说的限制条件的,除非你把它重载自己加限制条件。
      

  2.   

    从CFileDialog继承,并重载OnFileNameChange();
    在响应中加入对中文的判断。
      

  3.   

    同 意 nuaazwg(潇湘浪客) 从CFileDialog继承OnFileNameChange();写 你 要 过 滤 的 内 容
      

  4.   

    将要查看字符串转成二进制,如果第一个字位是0,则是英文,如果是1则是中文。不好实现,还得自己写dialog。
      

  5.   

    void CTestsdiView::OnFileOpen() 
    {
    // TODO: Add your command handler code here
    CFileDialog dlgFileOpen(TRUE, NULL,NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"BMP Files(*.bmp)|*.bmp||", AfxGetMainWnd()); 
    int structsize=sizeof(OPENFILENAME); 
    dlgFileOpen.m_ofn.lStructSize=structsize; 
    TCHAR lpstrFilename[MAX_PATH] = ""; 
    dlgFileOpen.m_ofn.lpstrFile=lpstrFilename; 
    if(dlgFileOpen.DoModal()==IDCANCEL)
    return;
    if(IsChinese(dlgFileOpen.m_ofn.lpstrFile))
    return;
    AfxMessageBox(dlgFileOpen.m_ofn.lpstrFile);
    }BOOL CTestsdiView::IsChinese(char *str)
    {
    int len;
    int MaskBit=0x80;
    char *t=str;
    for(int i=0;i<strlen(str);i++)
    if((*t++)&MaskBit)
    {
    return TRUE;
    }
    return FALSE;
    }