2013-03-22 67 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"); 
    } 
} 

即使用按位&代替==