Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ WinAPI с# винапи функция https://www.cyberforum.ru/ win-api/ thread809671.html
Как подтянуть на c# winapi функцию и использовать ее? [DllImport("user32.dll" ... или както еще? дайте пример пожалуйста!
не могу найти ошибку C++ WinAPI
Помогите пожалуйста, не могу найти ошибку (( #include <windows.h> #define ID_EDIT 1 #define ID_BUTTON 2 LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
C++ WinAPI Как украсить консольное приложение Win32? Мне надо "украсить" консольную программу Win32, но как я не знаю!!! Подскажите пожалуйста!!!! https://www.cyberforum.ru/ win-api/ thread809646.html C++ WinAPI изображения c++ https://www.cyberforum.ru/ win-api/ thread809587.html
подскажите пожалуйста как в winapi c++ работать с изображениями! какие функции и библиотеки.где можно информацию взять?
C++ WinAPI Как получить атрибуты длл функции?
Как получить атрибуты длл функции? (GetFileAttributes) #include <iostream> #include <windows.h> using namespace std; typedef BOOL (WINAPI *hGetFileAttributesFunc)(LPCTSTR, LPSECURITY_ATTRIBUTES);
C++ WinAPI Контроль съеденного https://www.cyberforum.ru/ win-api/ thread809379.html
Нужно в реал тайм в программе получать сведения о загруженности цпу(программой и в целом), съеденных видео, системной и виртуальной памяти... Подскажите в какую сторону копать иль может код\ссылка где завалялись. Кстати есть ещё небольшой вопросик из той же темы, у меня есть несколько структур описывающих объект и его свойства, но есть объекты, которым не нужны многие параметры из структур, т.к....
C++ WinAPI Не выводит изображение в формочку Image2 из массива значений пикселей Не выводит изображение в формочку Image2 из массива значений пикселей dinom2 вот кусок кода: HWND sHwnd = Image2; HDC hdc=GetDC(sHwnd); for (int x = 0; x < 30; x++) { for (int y = 0; y < 30; y++){ color = dinom2; SetPixel(hdc,x,y,color); } } https://www.cyberforum.ru/ win-api/ thread809336.html C++ WinAPI создать длл
Нaпиcaть DLL, кoтoрaя имeeт в пaмяти ceктoр, дocтупный для чтeния и зaпиcи другим прoцeccaм. В этoм ceктoрe нaхoдитcя мaccив из 10 элeмeнтoв типa int. В этoй DLL тaкжe coдeржитcя три мeтoдa для рaбoты c дaнным мaccивoм: FillArray для зaпoлнeния мaccивa, eму пeрeдaют SortArray, чтo пoзвoляeт oтcoртирoвaть мaccив (eкcпoртуeмa функция) PrintArray, чтo вывoдит мaccив нa экрaн (eкcпoртуeмa...
C++ WinAPI SetPixel Буду благодарен, если кто внятно поможет разобраться. Я делаю кодирование изображение, изображение удалось закодировать, теперь я его декодирую, массив значений пикселей получить удалось, но как вывести это изображение на формочку Image не знаю, полагаю задача довольно тривиальная, но перерыв интернет нигде не нашёл как работает SetPixel, параметры мне его ясны, кроме hdn и что надо ему подавать... https://www.cyberforum.ru/ win-api/ thread809180.html C++ WinAPI Обработка сообщений двух окон https://www.cyberforum.ru/ win-api/ thread809049.html
Всем привет! Я разрабатываю небольшой физ эмулятор в котором требуется создать два окна. Некий интерфейс пользователя куда я буду вносить данные и после нажатия на определенную клавишу должно создаваться второе окно OpenGL. Вот столкнулся с такой проблемой, что после закрытия программы компиляция продолжается и процесс не удаляется. Скорее всего проблема с обрабатыванием сообщений от двух окон. ...
C++ WinAPI Нажатие клавиш OpenGL (c++)
Я написал каркас к игре: красный квадрат разъезжает по зелёному полю и стреляет синими точками. Так вот, проблема в том, что квадрат может ехать вперёд направо и одновременно стрелять. Если же квадрат едет вперёд налево, то он не реагирует на выстрел, т. е. либо кружиться налево и стрелять либо вперёд и налево. Аналогичная ситуация с задним ходом. Назад налево и стрелять - пожалуйста, а назад...
C++ WinAPI Как создать раздел реестра с несколькими значениями? https://www.cyberforum.ru/ win-api/ thread808867.html
#include <windows.h> #include <stdio.h> int main () { SetConsoleCP(1251); SetConsoleOutputCP(1251); HKEY HKey;
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42
0

Заполнение функции ReadFile - C++ WinAPI - Ответ 4264813

17.03.2013, 01:18. Показов 1090. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Записываю файл в com-порт
C++
1
BOOL writetocom = WriteFile(hCom1,buffer,infile.eof(),(LPDWORD)outbuffer,NULL);
buffer записываю так
C++
1
2
3
4
std::ifstream infile((LPCWSTR)filename,ios::binary);
                while (!infile.eof()){
                    infile.read(buffer, sizeof(char));
                }
(LPCWSTR)falename это имя файла которое я получаю с функции GetOpenFileName.

Потом на другом компьютере нужно считать данные
C++
1
BOOL Readtocom = ReadFile(hCom1,readbuffer, -----  ,sizereadbuffer,NULL);

Какой размер мне писать, если на другом компьютере не известно infile.eof().

Я думаю, что нужно передать число байтов потом стереть данные, потом передать тип файла опять стереть и потом уже сам файл.

Помогите пожалуйста.

Вот сам код программы -
Кликните здесь для просмотра всего текста
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
#include <windows.h>
#include <tchar.h>
#include <wincon.h>
#include <iostream>
#include <fstream>
using namespace std;
#define  ID_BUTTON1 3000
#define  ID_BUTTON2 3002
#define  ID_OpenCom1 3003
#define  ID_CopyCom1 3004
#define ID_ReadCom1 3005
#define  ID_BUTTON14 3006
#define  IDM_ButtonMenu 1000
#define  IDM_ButtonOpen 1001
#define  IDM_ButtonSave 1002
//***
HANDLE hCom1 = CreateFile(_T("COM1"), GENERIC_READ | GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
HANDLE hf;
char * buffer;
 
LPVOID readbuffer;
LPDWORD sizereadbuffer;
 
char szFile;
char filename[MAX_PATH] = ""; // зберігає шлях та ім'я файла
OPENFILENAME FileName;
char savefilename[MAX_PATH] = "";
OPENFILENAME SaveFileName;
DCB dcb;
COMMTIMEOUTS CommTimeOuts;
//***
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
//***
int APIENTRY _tWinMain(HINSTANCE This,
                       HINSTANCE Prev,
                       LPTSTR cmd,
                       int mode)
{
    HWND hWnd;
    MSG msg;
    //***
    WNDCLASS wc;
    wc.hInstance = This;
    wc.lpszClassName = _T("MainFrame");
    wc.lpfnWndProc = WndProc;
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.lpszMenuName = NULL;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hbrBackground = (HBRUSH)(COLOR_3DDKSHADOW+3);
    //***
    if (!RegisterClass(&wc)) return 0;
    //***
    hWnd = CreateWindow(_T("MainFrame"),
        _T("COM-ПОРТ"),
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        HWND_DESKTOP,
        NULL,
        This,
        NULL);
    ShowWindow(hWnd,SHOW_OPENWINDOW);
    //***
    ZeroMemory(&SaveFileName, sizeof(OPENFILENAME));
    SaveFileName.lStructSize = OPENFILENAME_SIZE_VERSION_400A;//довжина в байтах цієї структури
    SaveFileName.hwndOwner = hWnd; // вікно в якому буде працювати провідник
    SaveFileName.lpstrFile = (LPWSTR)savefilename; // куда буде записуватись ім'я файла
    SaveFileName.nMaxFile = MAX_PATH;// розмір назви файла
    SaveFileName.lpstrFilter = _T("Всі\0*.*\0Текстовий документ\0*.TXT\0Файли програм\0*.EXE\0");//фільтри файла
    SaveFileName.nFilterIndex = 1; // індекс сдандартного фільтру файла
    SaveFileName.lpstrFileTitle = NULL; //незнаю
    SaveFileName.nMaxFileTitle = 0; //незнаю
    SaveFileName.lpstrInitialDir = NULL; //незнаю
    SaveFileName.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR; //різні флажки які добавляються в провідник
 
    ZeroMemory(&FileName, sizeof(OPENFILENAME));
    FileName.lStructSize = OPENFILENAME_SIZE_VERSION_400A;//довжина в байтах цієї структури
    FileName.hwndOwner = hWnd; // вікно в якому буде працювати провідник
    FileName.lpstrFile = (LPWSTR)filename; // куда буде записуватись ім'я файла
    FileName.nMaxFile = MAX_PATH;// розмір назви файла
    FileName.lpstrFilter = _T("Всі\0*.*\0Текстовий документ\0*.TXT\0Файли програм\0*.EXE\0");//фільтри файла
    FileName.nFilterIndex = 1; // індекс сдандартного фільтру файла
    FileName.lpstrFileTitle = NULL; //незнаю
    FileName.nMaxFileTitle = 0; //незнаю
    FileName.lpstrInitialDir = NULL; //незнаю
    FileName.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR; //різні флажки які добавляються в провідник
    HWND hcom1 = CreateWindow(_T("button"),_T("відкрити com1"),WS_CHILD | WS_OVERLAPPED,20,20,200,50,hWnd,(HMENU)ID_OpenCom1,This,NULL);
    ShowWindow(hcom1,SW_SHOWNORMAL);
    UpdateWindow(hWnd);
    HWND hcopyfiles = CreateWindow(_T("button"),_T("Переслати на com-порт"),WS_CHILD | WS_OVERLAPPED,20,70,200,50,hWnd,(HMENU)ID_CopyCom1,This,NULL);
    ShowWindow(hcopyfiles,SW_SHOWNORMAL);
    UpdateWindow(hWnd);
    HWND hreadfiles = CreateWindow(_T("button"),_T("Читати з com- порта"),WS_CHILD | WS_OVERLAPPED,220,70,200,50,hWnd,(HMENU)ID_ReadCom1,This,NULL);
    ShowWindow(hreadfiles,SW_SHOWNORMAL);
    UpdateWindow(hWnd);
    HWND hButton2 = CreateWindow(_T("button"),_T("Закрити COM-порт"),WS_CHILD | WS_OVERLAPPED ,220,20,200,50,hWnd,(HMENU)ID_BUTTON1,This,NULL);
    ShowWindow(hButton2,SW_SHOWNORMAL);
    UpdateWindow(hWnd);
    //***
    HMENU hMenu = CreateMenu();
    HMENU hPopMenuFile = CreatePopupMenu();
    AppendMenu(hMenu, MF_STRING | MF_POPUP,(UINT)hPopMenuFile, L"Файл");
    AppendMenu(hPopMenuFile, MF_STRING,(UINT)IDM_ButtonOpen, L"Відкрити");
    AppendMenu(hPopMenuFile, MF_STRING,(UINT)IDM_ButtonSave, L"Сохранити як...");
    AppendMenu(hPopMenuFile, MF_STRING,(UINT)IDM_ButtonMenu, L"Вихід");
    SetMenu(hWnd,hMenu);
    //***
    GetCommState(hCom1,&dcb);
    dcb.BaudRate = CBR_19200;
    dcb.fBinary = TRUE;
    dcb.fOutxCtsFlow = FALSE;
    dcb.fOutxDsrFlow = FALSE;
    dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
    dcb.fDsrSensitivity = FALSE;
    dcb.fNull = FALSE;
    dcb.fRtsControl = RTS_CONTROL_DISABLE;
    dcb.fAbortOnError = FALSE;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = 1;
    dcb.XonLim=2048;
    dcb.XoffLim=512;
    dcb.StopBits=ONESTOPBIT;
    
    GetCommTimeouts(hCom1, &CommTimeOuts);
    CommTimeOuts.ReadIntervalTimeout= 100;
    CommTimeOuts.ReadTotalTimeoutMultiplier = 1;
    CommTimeOuts.ReadTotalTimeoutConstant = 5;
    CommTimeOuts.WriteTotalTimeoutMultiplier = 1;
    CommTimeOuts.WriteTotalTimeoutConstant = 100;
    //***
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage (&msg);
    }
 
    return 0;
}
//***
LRESULT CALLBACK WndProc (HWND hWnd, UINT message,WPARAM wParam,
                          LPARAM lParam)
{
    switch (message)
    {
    case WM_DESTROY : PostQuitMessage(0);
        break;
    default:return DefWindowProc(hWnd,message,wParam,lParam);
 
    case WM_COMMAND  : 
                     break;
    }
    switch (wParam)
    {
        case IDM_ButtonMenu : 
            {
                DestroyWindow(hWnd);
                break;
            }
        case ID_OpenCom1 :
            {
                if (hCom1!=INVALID_HANDLE_VALUE)
                {
                    MessageBox(NULL,_T("Порт COM1 відкритий=))"),_T("Діалогове вікно"),MB_OK );
                    BOOL setcomdcb = SetCommState(hCom1, &dcb);
                    BOOL setcomtime = SetCommTimeouts(hCom1, &CommTimeOuts);
                    if (setcomdcb == TRUE)
                    MessageBox(NULL,_T("Порт COM1 настроєний=)"),_T("Діалогове вікно"),MB_OK);
                    else 
                    MessageBox(NULL,_T("помилка настроювання порта COM1"),_T("Діалогове вікно"),MB_OK);
                    if (setcomtime == TRUE)
                        MessageBox(NULL,_T("параметри часу для Порт COM1 задано"),_T("Діалогове вікно"),MB_OK);
                    else 
                        MessageBox(NULL,_T("помилка задання часу порта COM1"),_T("Діалогове вікно"),MB_OK);
                }
                else
                    MessageBox(NULL,_T("Помилка відкриття порта COM1"),_T("Діалогове вікно"),MB_OK);
                break;
            }
        case ID_BUTTON1 :
            {
                CloseHandle(hCom1);
                if (CloseHandle(hCom1) == TRUE)
                    MessageBox(NULL,_T("Порт закритий!!!"),_T("Діалогове вікно"),MB_OK );
                else MessageBox(NULL,_T("Помилка закриття порта!!!"),_T("Діалогове вікно"),MB_OK );
                break;
            }
        case IDM_ButtonOpen :
            {
                if (GetOpenFileName(&FileName)==TRUE) //відкриває вікно
                {
                        MessageBox(NULL,_T("файл відкритий=)"),_T("Діалогове вікно"),MB_OK );
                        MessageBox(NULL,(LPCTSTR)filename,_T("Шлях до вашогу файлу"),MB_OK );//для перевірки, чи шлях правильний
                }
            break;
            }
        case IDM_ButtonSave :
            {
                if (GetSaveFileName(&SaveFileName) == TRUE)
                {
                    MessageBox(NULL,_T("шлях для зберігання получений"),_T("Діалогове вікно"),MB_OK );
                    MessageBox(NULL,(LPCTSTR)savefilename,_T("Шлях до вашогу каталогу"),MB_OK );
                }
                break;
            }
        case ID_CopyCom1 :
            {
            char* outbuffer;
            outbuffer = new char;
            if (hCom1!=INVALID_HANDLE_VALUE)
            {
                buffer = new char;
                std::ifstream infile((LPCWSTR)filename,ios::binary);
                while (!infile.eof()){
                    infile.read(buffer, sizeof(char));
                }
                BOOL writetocom = WriteFile(hCom1,buffer,infile.eof(),(LPDWORD)outbuffer,NULL);
                if (writetocom == TRUE)
                    MessageBox(NULL,_T("файл скопійовано=)"),_T("діалогове вікно"),MB_OK );
                else MessageBox(NULL,_T("помилка копіювання даних"),_T("помилка"),MB_OK );
            }
                break;
            }
        case ID_ReadCom1 :
            {
                BOOL Readtocom = ReadFile(hCom1,readbuffer,sizeof(readbuffer),sizereadbuffer,NULL);
 
                break;
            }
        break;
    }
    return 0;
}


Добавлено через 5 часов 22 минуты

Почему не отвечаете?

Вернуться к обсуждению:
Заполнение функции ReadFile C++ WinAPI
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2013, 01:18
Готовые ответы и решения:

ReadFile()
Доброго вечера! Помогите разобраться почему не читает файл. Файл создал правой кнопкой мыши, txt...

ReadFile
Помогите разобраться пожалйста с функцией чтения ReadFile(). В API не селен,хочу считать данные с...

Createfile, readfile, writefile
Файл 4 создаётся,но данные из файла 1 не переносятся.Почему? HANDLE myFile; HANDLE myFile2;...

Ожидание для ReadFile
Доброго времени суток уважаемые жители форума ) Столкнулся с проблемой залипания ReadFile при...

0
17.03.2013, 01:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2013, 01:18
Помогаю со студенческими работами здесь

ReadFile считывает по 4 символа
Здравствуйте форумчане, есть задача: считать с консоли 3 числа, упорядочить по убыванию и вывести,...

Чтение из файла ReadFile
проблема такова что я не могу понять, как сделать условие вида: если при чтении файла нашли...

ReadFile() без ожидания
Передача сообщений посредством именованных каналов (pipes). Как использовать функцию ReadFile()...

CreateFile and ReadFile, WinAPI
всем доброго времени суток! открываю текстовый файл и вывожу содуржимое в консоль: char buf;...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru