ex07b编译后点击delete all matching fies 出现错误.我怀疑是这个函数出错.
void CSpecialFileDialog::OnDelete()
{
// TODO: 在此添加控件通知处理程序代码
m_bDeleteAll=TRUE;
GetParent()->GetDlgItem(0x480)->GetWindowText(m_strFilename);//书上说0x480是子 
                                                                      // 窗口的ID,可是在创
GetParent()->SendMessage(WM_COMMAND,IDCANCEL);               //建资源时的ID是    
                                                                      //stc32
                                                                         
}

解决方案 »

  1.   

    打少了几个字,0x480是子窗口文件名edit control 的ID,我不明白是如何得到的
      

  2.   

    在resource.h中搜索一下0x480就知道了。
      

  3.   

    当你在界面设计时放置一个控件后,IDE马上在resource.h中为这个控件分配一个工程中唯一的值,也就是这个0x480(通常是10进制的数),你也可以用这个值来代替IDC_EDIT1之类的。
      

  4.   

    你应该能在resource.h中找到这样一行:
    #define IDC_EDIT1    1152    //1152为0x480的10进制数,IDC_EDIT1换成工程中控件的实际ID
      

  5.   

    Ex07b.exe 中的 0x7c22e1cc (mfc71d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突 。箭头指向GetParent()->SendMessage(WM_COMMAND,IDCANCEL);
      

  6.   

    我刚编译运行了这个例子,没有错呀;
    估计是你装的系统的缘故,你用的是.net吧,可能是库布兼容。
      

  7.   

    把0x480改成你程序中的控件ID号
      

  8.   

    我运行时也没出错,同意楼上把0x480改成你程序中的控件ID号
      

  9.   

    我装的是vc6.0,你运行后点击delete all matching files 键,就会抱错
      

  10.   

    另外,resource.h里的ID是分组框的,而0x480是name edit control 的子窗口ID,在resource.h里没有.
      

  11.   

    用Spy++看一下你那个Edit控件的ID,替换掉0x480
      

  12.   

    就是不要使用0x480这个值,而是在资源编辑的对话框里找出这个控件,右击弹出属性,然后将那行IDC_xxx的字符在代码代替0X480就可以了