使用Windows API文件函数c ++

时间:2013-03-22 10:58:49

标签: c++ winapi

Windows编程的新手,互联网上有几个我要问的例子,但没有一个显示我认为失败的比较。

我在整个C ++程序中使用了几个windows api调用,只需要对如何正确使用它们进行一些指导。

例如下面我有GetFileAttributes(),它返回文件属性常量中的任何内容。

DWORD dwAttributes = GetFileAttributes(strPathOfFile.c_str());
if ( dwAttributes != 0xffffffff )
{
    if ( dwAttributes == FILE_ATTRIBUTE_NORMAL )
    {
        pkFileInfoList->Add( strPathOfFile + "\t" +"FILE_ATTRIBUTE_NORMAL");
    }
    else if ( dwAttributes == FILE_ATTRIBUTE_ARCHIVE )
    {
        pkFileInfoList->Add( strPathOfFile + "\t" + "FILE_ATTRIBUTE_ARCHIVE");
    }
}

[/ CODE]

if / else语句继续使用File Attribute Constants中的所有内容。

我正确地使用这个,我有一个超过2500个文件的目录,我正在重新提供路径。它始终返回FILE_ATTRIBUTE_ARCHIVE。

谢谢,

1 个答案:

答案 0 :(得分:4)

GetFileAttributes返回一组属性,而不是单个属性,因此要正确测试,您应该这样做:

DWORD dwAttributes = GetFileAttributes(strPathOfFile.c_str());
if ( dwAttributes != 0xffffffff )
{
    if ( dwAttributes & FILE_ATTRIBUTE_NORMAL )
    {
        pkFileInfoList->Add( strPathOfFile + "\t" +"FILE_ATTRIBUTE_NORMAL");
    }
    else if ( dwAttributes & FILE_ATTRIBUTE_ARCHIVE )
    {
        pkFileInfoList->Add( strPathOfFile + "\t" + "FILE_ATTRIBUTE_ARCHIVE");
    }
}

即。使用bitwise&而不是==