|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.01.2018, 18:48 | #1 |
Новичок
Джуниор
Регистрация: 10.01.2018
Сообщений: 1
|
Программирование ОС WinAPI
Программа для Windows должна открыть текстовый файл для чте-
ния и все его содержимое вывести в текстовую консоль (текстовое окно на экране). Размер этого текстового файла условием задачи не ограничен (может быть любой). Затем в программе запускается опрос событий текстового режим для консоли. Работающая программа должна сообщать, какое событие произо- шло. Как минимум должна быть реакция на события от мыши и клавиатуры. Информация о щелчке мыши выводится, начиная с той позиции текстового окна, на которой находится курсор мыши во время щелчка. Тут же выводится номер позиции в виде двух чисел — номера строки и номера столбца этой по- зиции. По событию от клавиатуры выводится сообщение о нажатой клавиши. Для алфавитно-цифровых клавиш выдается символ клавиши, а для управляю- щих их обозначение. Достаточно выдавать детальное обозначение только двух-трех управляющих клавиш. Действия программы с указанными реакция- ми на события могут осуществляться многократно. Завершение программы осуществляется по нажатию правой клавиши мыши. (Базовый вариант) #include <windows.h> #include <stdlib.h> #include <tchar.h> #include <stdio.h> int main() { DWORD actlen, actlen2, i, n; //для возвращаемых значений char buf[100]=""; char filename[]="text.txt"; char buff; char buffer[100]=" x= y= "; char x[2]; HANDLE hfile, hstdout, hstdin; INPUT_RECORD ir; KEY_EVENT_RECORD inpbuf; COORD pos,pos1; // структуры коорди т курсор hstdout=GetStdHandle(STD_OUTPUT_HAN DLE); hstdin = GetStdHandle(STD_INPUT_HANDLE); hfile=CreateFile(filename, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,0); ReadFile(hfile, buf, 20, &actlen, 0); WriteFile(hstdout,buf,actlen,&actle n,0);// запишем в стадартый вывод do { ReadConsoleInputA(hstdin,&ir,1,&act len); if(ir.Event.MouseEvent.dwButtonStat e==FROM_LEFT_1ST_BUTTON_PRESSED) { pos1.X=0; pos1.Y=34; pos.X=ir.Event.MouseEvent.dwMousePo sition.X; pos.Y=ir.Event.MouseEvent.dwMousePo sition.Y; WriteConsoleOutputCharacter(hstdout ,buffer,sizeof(buffer),pos1,&actlen ); snprintf(x,sizeof(x)+1,"%d",pos.X); ReadConsoleOutputCharacter(hstdout, &buff,1,pos,&actlen); WriteConsoleOutputCharacter(hstdout ,&buff,sizeof(buff),pos1,&actlen) ; pos1.X+=4; WriteConsoleOutputCharacter(hstdout ,x,sizeof(x),pos1,&actlen); snprintf(x,sizeof(x)+1,"%d",pos.Y); pos1.X+=6; WriteConsoleOutputCharacter(hstdout ,x,sizeof(x),pos1,&actlen); } else if((ir.EventType.bKeyDown==KEY_EVEN T)) { pos1.X=0; pos1.Y=35; scanf("%d",i); printf("%d", i); break; } } while(ir.Event.MouseEvent.dwButtonS tate!=RIGHTMOST_BUTTON_PRESSED); CloseHandle(hfile); } Конкретно не получается сделать ввод с клавиатуры. В этом нужна помощь. Завтра программу нужно показать. Программировать только начал. Последний раз редактировалось АндрейРепонин; 10.01.2018 в 18:51. Причина: Добавить описание проблемы |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
WinApi | Elnamir | Win Api | 1 | 18.04.2013 21:34 |
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) | Артём1991 | Помощь студентам | 0 | 25.03.2012 17:13 |
Программирование или web-программирование? | Дмитрий Батогов | Помощь студентам | 3 | 23.06.2011 14:14 |
WinApi | Necrom | Помощь студентам | 3 | 27.06.2008 14:24 |