Mark если файла нет, то как его можно открыть? естесно функция возвращает ошибку, обрабатывай возвращаемое значение. элементарная логика, Mark
Код (Text): #include <Windows.h> #include <iostream> int main() { HANDLE file = CreateFileA("D:\\File.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, NULL, NULL); CHAR fileData[256]; if(file != INVALID_HANDLE_VALUE) { DWORD readed; ReadFile(file, fileData, 255, &readed, NULL); fileData[readed] = '\0'; } std::cout << fileData; }
Mark ну открывать ты умееш(CreateFile) помещать в буфер win api- ReadFile. параметры читай vsokovikov.narod.ru там на русском понятно все переведено.
moderhi Вот собрал. Только в поле ничего нет. Пусто. Файл есть. Не пойму, в чем дело. Код (Text): HANDLE file = CreateFileA("Zametky.txt", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); char fileData[256]; DWORD readed; ReadFile(file, fileData, 255, &readed, NULL); fileData[readed] = '\0'; hWnd = CreateWindow("edit", fileData, WS_VISIBLE | WS_CHILD | WS_HSCROLL | WS_VSCROLL | ES_NOHIDESEL | ES_MULTILINE | ES_AUTOVSCROLL | ES_LEFT, 0, 0, 300, 500, hwnd, (HMENU)12, hInstance, NULL);
Mark Функция GetDlgItemText() сама поставит ноль в конце текста. А в файл надо писать по значению возвращённому GetDlgItemText(): Код (Text): CHAR buf[200]; int nChars = GetDlgItemTextA (); ... DWORD dw; WriteFile (f, buf, nChars, &dw, 0); Без отладчика выходит только топтание на месте. Тебе совет: учи отладчик - это просто. Если просто надо длина текста, то вызови lstrlenA(buf); Вернётся то же значение, что и GetDlgItemTextA(). По отладчику: 1. На той линии кода, где нужна остановка -- ставим курсор и жмём F9. Появится красная метка на левой стороне. Если метка более не нужна -- опять курсор на линию -- и снова F9. Метка убирается. 2. Нажимаем F5 -- код запустится обычным образом, но если выполнение попадёт на линию с меткой -- код остановится и тогда курсор ставим на переменную (например: fileData) и ждём 1 секунду -- появится содержимое этой переменной. 3. Если надо пройти по каждой линии кода -- нажимаем F10 последовательно. F11 -- отладчик "зайдёт" в функцию (если для неё есть информация об отладке). 4. Если надо оставить отладку и опять выполняться без остановок -- снова F5.
AsmGuru62 Спасибо, посмотрел. Успешно получилось сделать вывод записанных символов. Но хотел спросить, так можно делать (?): Код (Text): DeleteFile ("Zametky.txt");
Mark h**p://progbook.ru/c/713-hart-sistemnoe-programmirovanie-v-srede-windows.html вот скачай нормальная книга и почитай а лучше закажи или сходи в книж и купи... а вообще че ты мелочишься? бери сразу и дрова пиши
AsmGuru62 Вот создал диалог. Главное окно открывается, диалога нет. Вот создание диалога: Код (Text): char pop[] = "Dialog"; CreateDialogA(hInst, pop, hwnd, About); Вот процедура обработки: Код (Text): INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { MessageBeep(0); EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; } VS не ругается, но диалога нет. Не подскажите в чем дело?
Да, и еще хотел спросить. В гугле, Яндексе искал, не нашел. Как изменить громкость с помощью ползунка? (И как создать ползунок) Единственное нарыл: Изменение громкости SetVolume(); Только компилятор ее не знает. Подключил mmsystem.h - все равно
Mark Про громкость - не знаю. А что в файле .RC по поводу диалога? Должен быть диалог ресурс с таким именем. Кстати, DIALOG - это ключевое слово для .RC - поэтому лучше изменить название - например: "MyDialog". А ещё вернее назвать диалог не именем а просто номером, например: 201 DIALOG ... ... и далее вызвать вот так: Код (Text): DialogBoxA(hInst, (LPCTSTR)201, hwnd, About); Кстати, а почему "А" - лучше было бы: "CreateDialogW". И ещё: есть модальные диалоги и не-модальные. "CreateDialog" создаёт не-модальный диалог, т.е. такой, который не задерживает выполнение следующих за ним строк кода. Кроме того, для не-модальных диалогов нужен специальный код в цикле обработки сообщений (читай про: "IsDialogMessage"). Попробуй "DialogBoxParamW" - это будет модальный диалог.
AsmGuru62 А поможете найти ошибку? Иногда копирует после текста крокозябры, и копирует без ENTER'ов. Код (Text): FILE *fol; fol = fopen("Zametky.txt", "rw+"); char lol[1000]; fread(&lol, sizeof(lol), 2, fol);
Mark Файл надо открыть в бинарном режиме: http://www.cplusplus.com/reference/clibrary/cstdio/fopen/ Код (Text): fol = fopen("Zametky.txt", "rwb+");