struct _finddata_t filestruct;
……
if(::GetFileAttributes(filestruct.name ) & FILE_ATTRIBUTE_DIRECTORY)编译的时候出现错误
D:\exercise\FindStringInFile\FindStringInFile1.cpp(41) : error C2039: 'GetFileAttributes' : is not a member of '`global namespace''
我的是win32程序,not using MFC.

解决方案 »

  1.   

    DWORD GetFileAttributes(LPCTSTR lpFileName)加入这个头文件
    #include <windows.h>
    不用::
    直接用GetFileAttributes(filestruct.name)
      

  2.   

    建议你查找文件的时候使用WIN32_FIND_DATA和FindFirstFile、FindNextFile的组合,这样WIN32_FIND_DATA::dwFileAttributes就直接是文件的属性了。
      

  3.   

    WIN32_FIND_DATA FileData; 
    HANDLE hSearch; 
    DWORD dwAttrs; 
    char szDirPath[] = "c:\\TEXTRO\\"; 
    char szNewPath[MAX_PATH]; 
    char szHome[MAX_PATH]; 
     
    BOOL fFinished = FALSE; 
     
    // Create a new directory. 
     
    if (!CreateDirectory(szDirPath, NULL)) 

        ErrorHandler("Couldn't create new directory."); 

     
    // Start searching for .TXT files in the current directory. 
     
    hSearch = FindFirstFile("*.txt", &FileData); 
    if (hSearch == INVALID_HANDLE_VALUE) 

        ErrorHandler("No .TXT files found."); 

     
    // Copy each .TXT file to the new directory 
    // and change it to read only, if not already. 
     
    while (!fFinished) 

        lstrcpy(szNewPath, szDirPath); 
        lstrcat(szNewPath, FileData.cFileName); 
        if (CopyFile(FileData.cFileName, szNewPath, FALSE))
        { 
            dwAttrs = GetFileAttributes(FileData.cFileName); 
            if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) 
            { 
                SetFileAttributes(szNewPath, 
                    dwAttrs | FILE_ATTRIBUTE_READONLY); 
            } 
        } 
        else 
        { 
            ErrorHandler("Couldn't copy file."); 
        } 
     
        if (!FindNextFile(hSearch, &FileData)) 
        {
            if (GetLastError() == ERROR_NO_MORE_FILES) 
            { 
                MessageBox(hwnd, "No more .TXT files.", 
                    "Search completed.", MB_OK); 
                fFinished = TRUE; 
            } 
            else 
            { 
                ErrorHandler("Couldn't find next file."); 
            } 
        }

     
    // Close the search handle. 
     
    if (!FindClose(hSearch)) 

        ErrorHandler("Couldn't close search handle.");