2012-07-19 53 views
0

我試圖通過ATL應用程序寫入一些行到一個txt文件中的txt文件。以下是我使用的代碼片段:寫使用Windows API

HANDLE hFile = CreateFile(ofn.lpstrFile, 
      GENERIC_READ | GENERIC_WRITE, 
      0, 
      NULL, 
      CREATE_ALWAYS, 
      FILE_ATTRIBUTE_NORMAL, 
      NULL); 

     DWORD dwBytesWritten = 0; 

     std::list<CString> helpList; 
     std::list<CString>::iterator it; 
     helpList.push_back(L"First Line\r\n"); 
     helpList.push_back(L"Second Line"); 

     for(it=helpList.begin(); it!=helpList.end(); ++it) 
      WriteFile(hFile, (*it).GetString(), (*it).GetLength(), &dwBytesWritten, NULL); 

     CloseHandle(hFile); 

儘管一切正常,但最終沒有任何內容寫入文件。我應該在代碼中更改什麼?

+3

是否檢查調用'CreateFile'真正獲得成功嗎?與WriteFile調用一樣嗎? – 2012-07-19 10:39:01

+0

你用'CloseHandle(hFile)'寫完文件後關閉了文件句柄嗎? – xaizek 2012-07-19 10:42:11

+0

dwShareMode =防止其他進程在請求刪除,讀取或寫入訪問時打開文件或設備。 假設已經存在的文件不應該被共享。 – hB0 2012-07-19 10:45:00

回答

0

幾個問題:

  1. 關閉手柄使用CloseHandle()
  2. 長度論據WriteFile()文件是字節,但你指定的字符。由於您使用的是寬字符,因此您需要將長度值乘以char的大小。