呵呵,我知道了:
  在WIN32中,DLL是附着在运行进程上的,没有自己的内存空间,每一个调用DLL的进程都获得自己的数据拷贝。当你当程序窗口不是当前窗口时,file是空指针,所以访问出错。
  
  要解决这个问题的话,,必须实现数据共享,你要用在DLL中设置共享变量,哦,设置共享变量还不行,你用的是文件指针,还要改成不是指针:1.定义变量时向下面这样定义:
   #pragma data_seg (".MyShare")  // 可以取任何别的名字,但必须和DEF中一致
       CFile file;
   #pragma data_seg ()
   这段代码告诉链接器将三个变量放到叫".MyShare”的数据段中
2.DEF文件中加上这条,名称要和上面一致:
   SECTIONS   .MyShare READ WRITE SHARED3.修改你的源文件,将指针改为非指针。(自己去改吧,我比较懒的。)4.OK,搞定。