2013-03-22 68 views
0

刚接触windows编程,有几个例子在整个互联网上我将要问,但是没有一个显示我认为失败的比较。使用Windows API文件函数C++

我在整个C++程序中使用了几个窗口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语句继续从文件属性常量的一切。

我是否正确使用这个,我有超过2500个文件的目录,我正在为这些路径重新提供帮助。它总是返回FILE_ATTRIBUTE_ARCHIVE。

感谢,

回答

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"); 
    } 
} 

即使用按位&代替==