请问,比如说MFC自带的枚举函数 FindFileFirst() 和FindFileNext()  它们的当前位置存储在哪里,难道是它们自己.cpp有全局变量吗?我要仿它做一个枚举函数...first 和 ...next ,是不是也用全局变量标志调用后的当前位置?

解决方案 »

  1.   

    它们自己内部当然有全局变量,不过严格来讲不能是全局变量,而是跟函数返回的HANDLE绑定的。
      

  2.   

    BOOL FindNextFile(
      HANDLE hFindFile,                // search handle 
      LPWIN32_FIND_DATA lpFindFileData // data buffer
    );
    Parameters
    hFindFile 
    [in] Search handle returned by a previous call to the FindFirstFile function. 
    lpFindFileData 
    [out] Pointer to the WIN32_FIND_DATA structure that receives information about the found file or subdirectory. The structure can be used in subsequent calls to FindNextFile to refer to the found file or directory. 
      

  3.   

    这样啊原来,那么说我要做两个函数(不做成类),就必须放一个全局变了吧好像?int gi_enumID = 0;bool SendDataFirst(){...}
    bool SendDataNext(){...}
      

  4.   

    int gi_enumID = 0;bool SendDataFirst(){gi_enumID++;...}
    bool SendDataNext(){gi_enumID++...}
      

  5.   

    Windows处理得很多事情都是通过句并来实现的。而且很多都是静态的全局变量。所以
      

  6.   

    “FindFileFirst和FindFileNext”,哪有这么两个函数啊?
    还有,你到底是问Windows API还是MFC啊?
    MFC都是类,状态当然可以保存在类中的成员变量里头。
    Windows API可以使用全局变量,也可以使用函数局部的静态变量。
      

  7.   

    int gi_enumID = 0;bool SendDataFirst(){gi_enumID++;...}
    bool SendDataNext(){gi_enumID++...}
    不能这么简单的,多线程的话,甚至不是多线程,连续调用两次SendDataFirst你就死定了。
    应该定义一个结构存储数据,SendDataFirst的时候new一个这个结构,返回该结构指针,SendDataNext把这个指针作为参数,最后还应该定义一个SendDataEnd函数,把这个指针释放。
    例:
    int* SendDataFirst(){int* gi_enumID=new int;* gi_enumID=0;...}
    bool SendDataNext(int* lpi){*lpi++...}
    bool SendDataEnd(int*lpi){delete lpi...}
    当然还得加指针有效性判断
      

  8.   

    类的私有成员变量里头
    bool SendDataFirst(){gi_enumID++;...}
    bool SendDataNext(){gi_enumID++...}