2011-01-09 3 views
2

Я хочу создать текстовый файл с помощью API окон. Я изучил околоКак создать файл с помощью Windows API?

HANDLE CreateFile(
LPCTSTR lpFileName, 
DWORD dwDesiredAccess, 
DWORD dwShareMode, 
LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
DWORD dwCreationDispostion , 
DWORD dwFlagsAndAttributes, 
HANDLE hTemplateFile); 

Не могу понять, как передать первый параметр для создания файла. Я попытался использовать FILE типа данных и передать его указатель в качестве первого параметра, но он несовместим с LPCTSTR. Может ли кто-нибудь сказать мне, как это сделать? Я новичок в использовании Windows API. Заранее спасибо.

ответ

9

LPCTSTR такое же, как const TCHAR* («Long Указатель на постоянную TCHAR -String»), которая является либо const wchar_t* или const char* в зависимости от набора символов. Так что просто передать строку в окружении _T(), как:

CreateFile(_T("C:\\File.txt"), FILE_READ_DATA, FILE_SHARE_READ, 
    NULL, OPEN_ALWAYS, 0, NULL); 

(Кстати, FILE не является частью Windows SDK, это часть стандартной библиотеки C времени выполнения, и это внутренне на основе на CreateFile , который создает файл на основе его имени.)

+0

можете ли вы назвать файл заголовка для _T, пожалуйста. Я включил и . но показывается, что _T не определено. – narayanpatra

+0

Спасибо, приятель, все готово. Я был слишком ленив. Спасибо за вашу помощь. – narayanpatra

+0

Несомненно, никаких проблем. Интересный факт: макрос 'TEXT()' делает то же самое, но он просто определен в другом файле заголовка ... не стесняйтесь использовать его, если хотите. :) – Mehrdad

4

Передайте имя файла. Строка. Используйте SDK example code.

+0

В этом примере имя файла передается по командной строке. Я хочу жестко закодировать его в своем коде. – narayanpatra

+1

Да, вы можете отредактировать его. –

1

CreateFile ("OUTPUT_FILE", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

Первый параметр - это имя файла, который вы можете передать из любой строковой переменной. Например, если имя файла находится в переменной CString, вы можете передать (LPCTSTR) variblename, чтобы преобразовать его в LPCTSTR. все остальные параметры зависят от вашей реализации независимо от того, хотите ли вы всегда создавать файл или добавлять к существующему файлу и т. д.

+1

Вы забыли макрос '_T()' (или 'TEXT()') ... – Mehrdad

Смежные вопросы