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。
谢谢,
答案 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&而不是==