Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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. Причина: Добавить описание проблемы
АндрейРепонин вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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