Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 29.10.2018
Сообщений: 55

Реализация записи и чтения данных в файл/из файла

20.10.2019, 18:55. Показов 1209. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
реализовать чтение/запись
конфигурационного файла программы, в котором будут храниться следующие
настройки:
• Размер окна.
• Расположение окна на экране.
• Цвет фона на момент закрытия приложения.
• Имена файлов-иконок - ресурсов, которые потребуются при выполнении
следующей лабораторной работы.
Настройки должны сохраняться при завершении работы программы и
восстанавливаться при запуске.
Нужно реализовать это при помощи файловых переменных.
Проблема заключается в том, что не могу понять в каком блоке кода нужно заносить информацию в файл, то ли в обработчике событий, то ли в самой функции main(). И вторая проблема заключается в том, что не могу понять как получить расположение окна на экране и цвет фона при закрытии. Вот основной код программы. Попытался записать размер окна в файл, а дальше проблемы. Заранее благодарю за помощь!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "stdafx.h"
#include <iostream> 
#include <windows.h> 
#include <cstdlib> 
#include <locale>
#include <fstream>
using namespace std;
LRESULT CALLBACK myWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
    case WM_KEYDOWN:
        if ((wParam == 27) || (GetKeyState(VK_CONTROL) && (wParam == 81)))
        {
            PostQuitMessage(0);
            return 0;
        }
        if ((wParam == 67) && (GetKeyState(VK_SHIFT)))
        {
            STARTUPINFO sInfo;
            ZeroMemory(&sInfo, sizeof(STARTUPINFO));
 
            PROCESS_INFORMATION pInfo;
 
            CreateProcess(L"C:\\Windows\\Notepad.exe", NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &sInfo, &pInfo);
            return 0;
        }
        if (wParam == 13)
        {
            HBRUSH hBrush = CreateSolidBrush(RGB(rand() % 256, rand() % 256, rand() % 256));
            SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, LONG(hBrush));
            InvalidateRect(hWnd, NULL, TRUE);
            
            return 0;
        }
        break;
    case WM_LBUTTONDOWN:
        int Get_X_LPARAM(LPARAM lParam);
        int Get_Y_LPARAM(LPARAM lparam);
        int x = LOWORD(lParam);
        int y = HIWORD(lParam);
        RECT info;
        GetClientRect(hWnd, &info);
        int xi = info.right / 2;
        int yi = info.bottom / 2;
        if ((x <= xi) && (y >= yi))
        {
            HBRUSH hBrush = CreateSolidBrush(RGB(0, 255, 0));
            SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, LONG(hBrush));
            InvalidateRect(hWnd, NULL, TRUE);
        }
        if ((x > xi) && (y > yi))
        {
            HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 255));
            SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, LONG(hBrush));
            InvalidateRect(hWnd, NULL, TRUE);
        }
        if ((x < xi) && (y < yi))
        {
            HBRUSH hBrush = CreateSolidBrush(RGB(255, 0, 0));
            SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, LONG(hBrush));
            InvalidateRect(hWnd, NULL, TRUE);
        }
        if ((x > xi) && (y < yi))
        {
            HBRUSH hBrush = CreateSolidBrush(RGB(255, 255, 0));
            SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, LONG(hBrush));
            InvalidateRect(hWnd, NULL, TRUE);
        }
        HBRUSH hBrush = NULL;
        return 0;
        break;
    }
    RECT size;
    GetClientRect(hWnd, &size);
    int Xi = size.right / 2;
    int Yi = size.bottom / 2;
    ofstream F;
    F.open("settings.txt", ios::out | ios::in);
    F << Xi <<endl;
    F << Yi <<endl;
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
 
 
 
int WINAPI WinMain
(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
) { 
    HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 255));
    WNDCLASS winClass;
    winClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
    winClass.lpfnWndProc = (WNDPROC)myWndProc;
    winClass.cbClsExtra = 0;
    winClass.cbWndExtra = 0;
    winClass.hInstance = hInstance;
    winClass.hIcon = LoadIcon(NULL, IDI_WINLOGO);
    winClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    winClass.hbrBackground = hBrush;
    winClass.lpszMenuName = NULL;
    winClass.lpszClassName = L"MyWindowClass";
 
    RegisterClass(&winClass);
 
    HWND hWnd = CreateWindow(L"MyWindowClass", L"Window by raw API", WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 100, 100, 320, 240, NULL, NULL, hInstance, NULL);
 
    ShowWindow(hWnd, SW_SHOW);
 
    MSG message;
 
    while (true) {
        if (PeekMessage(&message, NULL, 0, 0, PM_REMOVE)) {
            if (message.message == WM_QUIT)
                break;
            else {
                TranslateMessage(&message);
                DispatchMessage(&message);
            }
        }
    }
    DestroyWindow(hWnd);
 
    UnregisterClass(L"MyWindowClass", hInstance);
 
    DeleteObject(hBrush);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.10.2019, 18:55
Ответы с готовыми решениями:

Напишите функции записи данных в файл, чтения данных из файла
Файл dаte.in содержит четырех значное число на каждой строке. Напишите функции записи данных в файл, чтения данных из файла. Напишите...

Создание файла для записи и чтения, запись в файл данных
Написать простейшую программу, которая для своей работы использует системные вызовы функций и предоставляет следующие...

Разработать и добавить функции записи исходных данных в файл и чтения их из файла
Здраствуйте всем. Как хорошо что сайт заработал.) Ребята помогите с бинарными файлами 2 дня уже потратил на эту задачу и нечего в нете не...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2019, 18:55
Помогаю со студенческими работами здесь

Реализация записи и чтения файла струтуры
Нужно записать структуру с полями имя(строка) ,производительность(double),цена(double),объем(double) в файл структур ,а потом этот...

Организация записи в файл и чтения атрибутов файла
Доброго времени суток на циферблате Друзья понимаешь!!!! КАК ОРГАНИЗОВАТЬ ЗАПИСЬ В ФАЙЛ И ЧТЕНИЕ атрибуты ФАЙЛА (Такие как дата/время...

Класс для чтения из файла, записи в файл
Появился вопрос по с++. Создал класс, который может читать и записывать в файл. деструктор класс закрывает файл. Функция wrire имеет две...

Класс для записи в файл и чтения из файла
Здравствуйте, у меня вот возникла такая проблема при выполнении домашнего задания: надо создать два класса 1 класс записывает в файл объект...

Нужен пример алгоритма чтения из файла и записи в файл
Добрый день форумчане. Нужен код простейшей программы, выводящий текст из текстового файла в мемо, и обратно, то-есть: алгоритм чтения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru