黑马注定寂寞

////////////////////////////////////////////////////////////英汉字典的核心_职场///
///////////英语译汉语


void CDictionaryDlg::EntoCh()
{
    char name0[] = {"english0.txt"};
    FILE  *fp;
    if((fp=fopen(name0,"r"))==NULL)    //打开第一本词典
    {
       m_edit1.SetWindowText("对不起!文件不能打开!");
       return;
    }

    do
    {
        m_list.ResetContent();      //清空列表内容       
        fgets(buffer,1024,fp);       //从文件读入一行存放在BUFFER中
        int i,k;
        memset(acron,0,sizeof(acron));    //清空acron
        for(i=0;buffer[i]!=' ';i++)       //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));    //清空english  
        for(;buffer[i]!='#';i++)    //截取英文部分
            english[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));       //清空mid
        strncpy(mid,english,str.GetLength());    //将english中的从0开始的长度为str.GetLength()字符存入mid中
        if(strcmp(str,mid)==0)    //比较str和mid
        {
            m_list.AddString(english);   //列表输出
            i++;    k = i;
            memset(chinese,0,sizeof(chinese));    //清空chinese
            for(;buffer[i]!='\0';i++)     //截取汉语部分
                chinese[i-k] = buffer[i];
        }   
    }while(strcmp(str,mid)!=0&&!feof(fp));    //若不匹配且文件未结束
    int count0 = 0;
    while(strcmp(str,mid)==0&&!feof(fp)&&count0<100)
    {
        fgets(buffer,1024,fp);    //读入
        int i,k;
        memset(acron,0,sizeof(acron));   
        for(i=0;buffer[i]!=' ';i++)     //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));   
        for(;buffer[i]!='#';i++)       //截取英文部分
            english[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,english,str.GetLength());
        if(strcmp(str,mid)==0)   
        {
            m_list.AddString(english);  
            count0++;    //控制列表中的条数在101内
        }           
    }
    fclose(fp);

    char  name1[] = {"english1.txt"};
    if((fp=fopen(name1,"r"))==NULL)   //打开第二部词典
    {
       m_edit1.SetWindowText("对不起!文件不能打开!");
       return;
    }

    do
    {       
        fgets(buffer,1024,fp);       //从文件读入一行存放在BUFFER中
        int i,k;
        memset(acron,0,sizeof(acron));    //清空acron
        for(i=0;buffer[i]!=' ';i++)       //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));    //清空english  
        for(;buffer[i]!='#';i++)    //截取英文部分
            english[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));       //清空mid
        strncpy(mid,english,str.GetLength());    //将english中的从0开始的长度为str.GetLength()字符存入mid中
        if(strcmp(str,mid)==0)    //比较str和mid
        {
            m_list.AddString(english);   //列表输出
            i++;    k = i;
            memset(chinese,0,sizeof(chinese));    //清空chinese
            for(;buffer[i]!='\0';i++)     //截取汉语部分
                chinese[i-k] = buffer[i];
        }   
    }while(strcmp(str,mid)!=0&&!feof(fp));    //若不匹配且文件未结束
    int count1 = 0;
    while(strcmp(str,mid)==0&&!feof(fp)&&count1&lt;100)
    {
        fgets(buffer,1024,fp);    //读入
        int i,k;
        memset(acron,0,sizeof(acron));   
        for(i=0;buffer[i]!=' ';i++)     //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));   
        for(;buffer[i]!='#';i++)       //截取英文部分
            english[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,english,str.GetLength());
        if(strcmp(str,mid)==0)
        {
            m_list.AddString(english);  
            count1++;    //控制列表中的条数在101内
        }           
    }
    //如果列表中仅剩一行,则文本框中输出中文
    if(m_list.GetCount()==1)   m_edit1.SetWindowText(chinese);  
    else   m_edit1.SetWindowText(" ");
    fclose(fp);
}
/////////////////////////////////////////////////////////////
///////////汉语译英语
void CDictionaryDlg::ChtoEn()
{
    char name0[] = {"chinese0.txt"};
    FILE  *fp;
    if((fp=fopen(name0,"r"))==NULL)    //打开文件
    {
       m_edit1.SetWindowText("对不起!文件不能打开!");
       return;
    }

    do
    {
        m_list.ResetContent();      //清空列表内容
        fgets(buffer,1024,fp);    //读入
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)     //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)      //截取英文部分
            english[i-k] = buffer[i];
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)    //截取汉语部分
            chinese[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,chinese,str.GetLength());
        if(strcmp(str,mid)==0)    //比较:若相等则输出
        {
            m_list.AddString(chinese);
        }   
    }while(strcmp(str,mid)!=0&&!feof(fp));    //若不匹配且文件未结束
    int count0 = 0;
    while(strcmp(str,mid)==0&&!feof(fp)&&count0&lt;100)
    {
        fgets(buffer,1024,fp);
        int i=4,k;
        while(buffer[i]!='#')    i++;
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)    //截取汉语部分
            chinese[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,chinese,str.GetLength());
        if(strcmp(str,mid)==0)     //比较输出
        {
            m_list.AddString(chinese);
            count0++;    //控制列表输出条数不多余101
        }           
    }
    fclose(fp);

    char  name1[] = {"chinese1.txt"};
    if((fp=fopen(name1,"r"))==NULL)    //打开文件
    {
       m_edit1.SetWindowText("对不起!文件不能打开!");
       return;
    }

    do
    {       
        fgets(buffer,1024,fp);    //读入
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)     //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)      //截取英文部分
            english[i-k] = buffer[i];
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)    //截取汉语部分
            chinese[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,chinese,str.GetLength());
        if(strcmp(str,mid)==0)    //比较输出
        {
            m_list.AddString(chinese);
        }   
    }while(strcmp(str,mid)!=0&&!feof(fp));
    int count1 = 0;
    while(strcmp(str,mid)==0&&!feof(fp)&&count1&lt;100)
    {
        fgets(buffer,1024,fp);
        int i=4,k;
        while(buffer[i]!='#')    i++;
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)    //截取汉语部分
            chinese[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,chinese,str.GetLength());
        if(strcmp(str,mid)==0)     //比较输出
        {
            m_list.AddString(chinese);
            count1++;    //控制列表输出条数不多余101
        }           
    }
    //如果列表中仅剩一行,则文本框中输出中文
    if(m_list.GetCount()==1)   m_edit1.SetWindowText(english);
    else   m_edit1.SetWindowText(" ");
    fclose(fp);
}
/////////////////////////////////////////////////////////////////
/////////////英语列表
void CDictionaryDlg::englishList()
{
    char name0[] = {"english0.txt"};
    FILE *fp;
    if((fp=fopen(name0,"r"))==NULL)   //打开第一本词典
    {
        m_edit1.SetWindowText("对不起!文件不能打开!");
        return;
    }
    do
    {
        fgets(buffer,1024,fp);    //读入词条
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)
            acron[i] = buffer[i];    //截取缩略词
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)    //截取英文部分
            english[i-k] = buffer[i];
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)    //截取汉语部分
            chinese[i-k] = buffer[i];
    }while(strcmp(str1,english)!=0&&!feof(fp));
    fclose(fp);
    if(strcmp(str1,english)==0)     //若在第一本中查到,则名为此
    {
        str2 = "英汉海军装备技术缩略语词典:";
    }
    else
    {
        str2 = "英汉舰船科技与海军缩略语词典:";    //若在第一本中未查到,则名为此
        char name1[] = {"english1.txt"};
        if((fp=fopen(name1,"r"))==NULL)      //打开第二本词典
        {
            m_edit1.SetWindowText("对不起!文件不能打开!");
            return;
        }
        do
        {
            fgets(buffer,1024,fp);    //读入词条
             int i,k;
            memset(acron,0,sizeof(acron));
            for(i=0;buffer[i]!=' ';i++)
            acron[i] = buffer[i];    //截取缩略词
            while(buffer[i]==' ')    i++;
            k = i;
            memset(english,0,sizeof(english));
            for(;buffer[i]!='#';i++)    //截取英文部分
                english[i-k] = buffer[i];
            i++;    k = i;
            memset(chinese,0,sizeof(chinese));
            for(;buffer[i]!='\0';i++)    //截取汉语部分
                chinese[i-k] = buffer[i];
        }while(strcmp(str1,english)!=0&&!feof(fp));
        fclose(fp);
    }
    //控制在文本框中的显示格式
    strcpy(out,str2);  
    strcat(out,"\r\n");
    strcat(out,"ACRONYM: ");
    strcat(out,acron);
    strcat(out,"\r\n");
    strcat(out,"ENGLISH: ");
    strcat(out,str1);
    strcat(out,"\r\n");
    strcat(out,"CHINESE: ");
    strcat(out,chinese);
    m_edit1.SetWindowText(out);
}
///////////////////////////////////////////////////////////
/////////汉语列表
void CDictionaryDlg::chineseList()
{
    char name0[] = {"chinese0.txt"};
    FILE *fp;
    if((fp=fopen(name0,"r"))==NULL)    //打开第一本词典
    {
        m_edit1.SetWindowText("对不起!文件不能打开!");
        return;
    }
    do
    {
        fgets(buffer,1024,fp);    //读入文件中的一行
        int i,k;           
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)    //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)    //截取英文部分
            english[i-k] = buffer[i];
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)    //截取汉语部分
            chinese[i-k] = buffer[i];
    }while(strcmp(str1,chinese)!=0&&!feof(fp)) ;
    fclose(fp);
    if(strcmp(str1,chinese)==0)
    {
        str2 = "英汉海军装备技术缩略语词典:";   //如果在第一本词典中查到,则名为此
    }
    else
    {
        str2 = "英汉舰船科技与海军缩略语词典:";  //若在第一本词典中未查到,则名为此
        char name1[] = {"chinese1.txt"};
        if((fp=fopen(name1,"r"))==NULL)       //打开第二本词典进行查找
        {
            m_edit1.SetWindowText("对不起!文件不能打开!");
            return;
        }
        do
        {
            fgets(buffer,1024,fp);    //读入文件中的一行
            int i,k;           
            memset(acron,0,sizeof(acron));
            for(i=0;buffer[i]!=' ';i++)    //截取缩略词
                acron[i] = buffer[i];
            while(buffer[i]==' ')    i++;
            k = i;
            memset(english,0,sizeof(english));
            for(;buffer[i]!='#';i++)    //截取英文部分
                english[i-k] = buffer[i];
            i++;    k = i;
            memset(chinese,0,sizeof(chinese));
            for(;buffer[i]!='\0';i++)    //截取汉语部分
                chinese[i-k] = buffer[i];
        }while(strcmp(str1,chinese)!=0&&!feof(fp)) ;    //若不匹配且文件未结束
        fclose(fp);
    }
    //控制文本框中的输出格式
    strcpy(out,str2);
    strcat(out,"\r\n");
    strcat(out,"ACRONYM: ");
    strcat(out,acron);
    strcat(out,"\r\n");
    strcat(out,"ENGLISH: ");
    strcat(out,english);
    strcat(out,"\r\n");
    strcat(out,"CHINESE: ");
    strcat(out,chinese);
    m_edit1.SetWindowText(out);
}
//*************************************************************
//*******************英文检索**********************************
void CDictionaryDlg::indexEnglish()   
{
    char name0[] = {"english0.txt"};
    FILE  *fp;
    if((fp=fopen(name0,"r"))==NULL)   //打开第一本词典
    {
       m_edit1.SetWindowText("对不起!文件不能打开!");
       return;
    }

    do
    {
        m_list.ResetContent();      //清空列表内容       
        fgets(buffer,1024,fp);    //读入文件中的一行
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)
            acron[i] = buffer[i];    //截取缩略词
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)
            english[i-k] = buffer[i];    //截取英文部分
        memset(mid,0,sizeof(mid));
        strncpy(mid,english,str.GetLength());
        if(strcmp(str,mid)==0)   //如果两串相等,则将英文输出到列表中并截取汉语部分,
        {
            m_list.AddString(english);
            i++;    k = i;
            memset(chinese,0,sizeof(chinese));
            for(;buffer[i]!='\0';i++)    //截取汉语部分
                chinese[i-k] = buffer[i];
        }   
    }while(strcmp(str,mid)!=0&&!feof(fp));    //若不匹配且文件未结束
    int count0 = 0;
    char ch = str.GetAt(0);
    while(ch==mid[0]&&!feof(fp)&&count0&lt;100)
    {
        fgets(buffer,1024,fp);
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)
            acron[i] = buffer[i];    //截取缩略词
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)    //截取英文部分
            english[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,english,1);
        if(ch == mid[0])
        {
            m_list.AddString(english);
            count0++;    //控制列表中的输出条数不多余101
        }       
    }
    fclose(fp);

    char name1[] = {"english1.txt"};
    if((fp=fopen(name1,"r"))==NULL)  //打开第二本词典
    {
       m_edit1.SetWindowText("对不起!文件不能打开!");
       return;
    }

    do
    {
        fgets(buffer,1024,fp);    //读入文件中的一行
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)
            acron[i] = buffer[i];    //截取缩略词
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)
            english[i-k] = buffer[i];    //截取英文部分
        memset(mid,0,sizeof(mid));
        strncpy(mid,english,str.GetLength());
        if(strcmp(str,mid)==0)   //如果两串相等,则将英文输出到列表中并截取汉语部分,
        {
            m_list.AddString(english);
            i++;    k = i;
            memset(chinese,0,sizeof(chinese));
            for(;buffer[i]!='\0';i++)    //截取汉语部分
                chinese[i-k] = buffer[i];
        }   
    }while(strcmp(str,mid)!=0&&!feof(fp));    //若不匹配且文件未结束
    int count1 = 0;
    while(ch==mid[0]&&!feof(fp)&&count1&lt;100)
    {
        fgets(buffer,1024,fp);
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)
            acron[i] = buffer[i];    //截取缩略词
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)    //截取英文部分
            english[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,english,1);
        if(ch == mid[0])
        {
            m_list.AddString(english);
            count1++;    //控制列表中的输出条数不多余101
        }       
    }
    //若列表中仅有一条,则将汉语输出到文本框
    if(m_list.GetCount()==1)   m_edit1.SetWindowText(chinese);
    else   m_edit1.SetWindowText(" ");
    fclose(fp);
}
//********************************************************
//******************汉语检索******************************
void CDictionaryDlg::indexChinese()
{
    char name0[] = {"chinese0.txt"};
    FILE  *fp;
    if((fp=fopen(name0,"r"))==NULL)
    {
       m_edit1.SetWindowText("对不起!文件不能打开!");
       return;
    }

    do
    {
        m_list.ResetContent();      //清空列表内容
        fgets(buffer,1024,fp);    //读入文件中的一行
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)    //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)       //截取英文部分
            english[i-k] = buffer[i];
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)
            chinese[i-k] = buffer[i];    //截取汉语部分
        memset(mid,0,sizeof(mid));
        strncpy(mid,chinese,str.GetLength());
        if(strcmp(str,mid)==0)      //比较输出
            m_list.AddString(chinese);          
    }while(strcmp(str,mid)!=0&&!feof(fp));    //若不匹配且文件未结束
    int count0 = 0;
    char ch = str.GetAt(0);
    while(ch==mid[0]&&!feof(fp)&&count0&lt;100)
    {
        fgets(buffer,1024,fp);
        int i=4,k;    //因为至少有一个缩略字符、两个空格,和一个英文字母,所以从四开始
        while(buffer[i]!='#')  i++;
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)    //截取汉语部分
            chinese[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));    //清空mid
        strncpy(mid,chinese,1);
        if(ch==mid[0])
        {
            m_list.AddString(chinese);
            count0++;    //控制输出条数不多余101
        }       
    }
    fclose(fp);
    char name1[] = {"chinese1.txt"};
    if((fp=fopen(name1,"r"))==NULL)
    {
       m_edit1.SetWindowText("对不起!文件不能打开!");
       return;
    }

    do
    {       
        fgets(buffer,1024,fp);    //读入文件中的一行
        int i,k;
        memset(acron,0,sizeof(acron));
        for(i=0;buffer[i]!=' ';i++)    //截取缩略词
            acron[i] = buffer[i];
        while(buffer[i]==' ')    i++;
        k = i;
        memset(english,0,sizeof(english));
        for(;buffer[i]!='#';i++)       //截取英文部分
            english[i-k] = buffer[i];
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)
            chinese[i-k] = buffer[i];    //截取汉语部分
        memset(mid,0,sizeof(mid));
        strncpy(mid,chinese,str.GetLength());
        if(strcmp(str,mid)==0)      //比较输出
            m_list.AddString(chinese);   
    }while(strcmp(str,mid)!=0&&!feof(fp));    //若不匹配且文件未结束
    int count1 = 0;
    while(ch==mid[0]&&!feof(fp)&&count1&lt;100)
    {
        fgets(buffer,1024,fp);
        int i=4,k;    //从四开始
        while(buffer[i]!='#')  i++;
        i++;    k = i;
        memset(chinese,0,sizeof(chinese));
        for(;buffer[i]!='\0';i++)    //截取汉语部分
            chinese[i-k] = buffer[i];
        memset(mid,0,sizeof(mid));
        strncpy(mid,chinese,1);
        if(ch==mid[0])
        {
            m_list.AddString(chinese);
            count1++;    //控制输出条数不多余101
        }       
    }
    fclose(fp);
    //若列表中只有一条,则将英文输出到文本框
    if(m_list.GetCount()==1)   m_edit1.SetWindowText(english); 
    else   m_edit1.SetWindowText(" ");
}
//*****************************************************************
//*********************模糊查询************************************
bool CDictionaryDlg::LikeSelecting(CString likeStr,CString ObjStr)
{
    int wenhao    = likeStr.Find("?",0);
    int xinghao = likeStr.Find("*",0);

    CString strHead;
    CString strTail;

    int indexStr = 0;    //设置两个指针,indexStr指输入的串中字符的位置,indexObj指目标串
    int indexObj = 0;

    if(wenhao==-1&&xinghao==-1)    //没有'?'和'*'
    {
        if(likeStr==ObjStr)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else if(likeStr=="*")       //如果只有'*',直接返回true
        return true;
    if(wenhao>=0&&xinghao==-1)    //只有'?',将'*'位置置在1000
        xinghao = MAX;
    if(wenhao==-1&&xinghao&gt;=0)     //只有'*',将'*'位置置在1000
        wenhao = MAX;

    if(wenhao<xinghao)    //'?'在'*'前
    {
        strHead = likeStr.Left(wenhao);    //取'?'前的子串
        strTail = likeStr.Right(likeStr.GetLength()-wenhao-1);    //取'?'后的子串
        if(strHead.IsEmpty())     //取到的子串为空,两个串同时删除'?'
        {
            likeStr.Delete(0,1);
            ObjStr.Delete(0,1);
            return LikeSelecting(likeStr,ObjStr);      //递归
        }
        else      //取到的子串非空
        {
            if(ObjStr.Find(LPCSTR(strHead),0)!=0)     //若strHead在目标串中的位置非0,则不匹配
            {
                return false;
            }
            else
            {
                indexStr += strHead.GetLength();     //两个指针同时移动strHead长度
                indexObj += strHead.GetLength();
                return LikeSelecting(likeStr.Right(likeStr.GetLength()-strHead.GetLength()),
                    ObjStr.Right(ObjStr.GetLength()-strHead.GetLength()));    //递归调用两串除去strHead后的串
            }
        }
    }
    else      //'*'在'?'前
    {
        strHead = likeStr.Left(xinghao);     //取'*'前的子串
        strTail = likeStr.Right(likeStr.GetLength()-xinghao-1);    //取'*'后的子串
        if(strHead.IsEmpty())     //若子串为空
        {
            likeStr.Delete(0,1);     //删除'*'
            int x = likeStr.Find("*",0);
            int y = likeStr.Find("?",0);     //寻找除去'*'后'*'和'?'的位置

            if(x==-1&&y>=0)     //如果只有'?'
                x = y;
            if(x&gt;=0&&y&gt;=0)
                x = x<y?x:y;
            if(x==-1&&y==-1)  
            {
                if(ObjStr.Find(LPCSTR(strTail),0)>=0
                    &&(ObjStr.Find(LPCSTR(strTail),0)+strTail.GetLength())==ObjStr.GetLength())
                    return true;
                else
                    return false;
            }

            strHead = likeStr.Left(x);     //取'*'前的子串
            indexObj = ObjStr.Find(LPCSTR(strHead),0);   //寻找strHead在目标串中的位置
            if(indexObj&lt;0)    
                return false;
            else
            {
                likeStr.Delete(0,x);
                ObjStr.Delete(0,indexObj+x);     //同时删除从0开始的x和indexObj+x个字符
                return LikeSelecting(likeStr,ObjStr);    //递归
            }
        }
        else
        {
            if(ObjStr.Left(strHead.GetLength())!=strHead) 
                return false;
            else
            {
                likeStr.Delete(0,strHead.GetLength());
                ObjStr.Delete(0,strHead.GetLength());
                return LikeSelecting(likeStr,ObjStr);    //删除相同子串后递归
            }
        }
    }
}
//*****************************************************************
//****************控制按钮,进行模糊查询***************************
void CDictionaryDlg::OnLike()
{
    // TODO: Add your control notification handler code here
    FILE  *fp;
    char name0[] = "english0.txt";
    CString en;
    m_list.ResetContent();      //清空列表内容

    if((fp=fopen(name0,"r"))==NULL)
    {
        m_edit1.SetWindowText("对不起!文件不能打开!");
        return;
    }       
    int count0 = 0;
    do
    {
        fgets(buffer,1024,fp);
        str0 = buffer;
        int index = str0.Find("#",0);
        en = str0.Left(index);     //截取'#'前的字符串
        index = en.Find("  ",0);
        en.Delete(0,index+2);    //删除两个空格(含两个空格)前的字符串,从而截得英文部分
        if(LikeSelecting(str,en))    //比较输出
        {
            m_list.AddString(en);
            count0++;
        }
    }while(!feof(fp)&&count0&lt;100);
    UpdateData();
    fclose(fp);

    char name1[] = "english1.txt";    //在第二本中进行
    if((fp=fopen(name1,"r"))==NULL)
    {
        m_edit1.SetWindowText("对不起!文件不能打开!");
        return;
    }       
    int count1 = 0;
    do
    {
        fgets(buffer,1024,fp);
        str0 = buffer;
        int index = str0.Find("#",0);
        en = str0.Left(index);     //截取'#'前的字符串
        index = en.Find("  ",0);
        en.Delete(0,index+2);    //删除两个空格(含两个空格)前的字符串,从而截得英文部分
        if(LikeSelecting(str,en))    //比较输出
        {
            m_list.AddString(en);
            count1++;
        }
    }while(!feof(fp)&&count1&lt;100);
    UpdateData();       
}
//***************************************************
//**********清空*************************************
void CDictionaryDlg::OnClear()
{
    // TODO: Add your control notification handler code here
    m_list.ResetContent();      //清空列表内容
    m_edit1.SetWindowText(" ");  //清空文本框内容
    m_text.ResetContent();    //清空ComboBox
}