Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/100: Рейтинг темы: голосов - 100, средняя оценка - 4.93
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78

Вывод информации при нажатии клавиши на клавиатуре

15.12.2011, 17:28. Показов 19894. Ответов 26
Метки нет (Все метки)

зделать программу для вывода информации при нажатии клавиши на клавиатуре..))

кто что посоветует..??
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2011, 17:28
Ответы с готовыми решениями:

При нажатии клавиши «I» проверить и вывести состояние клавиши insert
Написать программу : при нажатии клавиши «I» проверить и вывести состояние клавиши insert Добавлено через 7 минут при нажатии...

При нажатии клавиши в досе программа обрывается
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int main () {

Как выйти из цикла при нажатии клавиши ESC
Доброго времени дня. Поясните, как выйти из цикла при нажатии клавиши ESC void GetStr() { char *array_str; char str; int...

26
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
07.03.2012, 17:57  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
OKS_by_V, ты был настойчив в просьбах поэтому отказать уже не имел возможности
Ниже код, проект готовый экзешник и скрин работы
...
спасибо тебе очень..)))

только у меня в компиляторе Dev-c++ //Си проект такие вот ошибки...
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Êîìï³ëÿòîð: Default compiler
Building Makefile: "D:\äîêóìåíòè\Êóðñàêè__ÂѲ!!!!\1.ÊÓÐÑÀÊ\Ðîáîòà ñ êëàâèàòóðîþ\test\Makefile.win"
Âèêîíàííÿ  make...
make.exe -f "D:\äîêóìåíòè\Êóðñàêè__ÂѲ!!!!\1.ÊÓÐÑÀÊ\Ðîáîòà ñ êëàâèàòóðîþ\test\Makefile.win" all
gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"   
 
main.c: In function `WinMain':
 
main.c:128: error: parameter name omitted
main.c:128: error: parameter name omitted
main.c:128: error: parameter name omitted    //// што ето за ошибка??
 
make.exe: *** [main.o] Error 1
 
Âèêîíàííÿ çàâåðøåíî
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.03.2012, 17:57
OKS_by_V, у меня нет DevC я могу лишь показать как "подхватить" проект через CodeBlocks(там можно в настройках потом выставить компилятор). Ошибки при линковке у вас не потому, что в моём коде ошибки, а потому что не срр-ник нужно отдельно линковать а весь проект, на скрине как раз показано как открывать сразу весь проект

Не по теме:

PS:Поставьте себе VisualStudio и не мучайтесь...;)

Миниатюры
Вывод информации при нажатии клавиши на клавиатуре  
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.03.2012, 17:59
Цитата Сообщение от OKS_by_V Посмотреть сообщение
main.c: In function `WinMain':
- по логу ошибок предположу что мой проект вообще как косноль пытались линковатьНадо - Win32, т.к. код же API
1
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
09.03.2012, 18:33  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- по логу ошибок предположу что мой проект вообще как косноль пытались линковатьНадо - Win32, т.к. код же API


а можно зделать што б с под консоли откривалось уже окно програми ....)))

в етом и есть вся суть што мне с консоли нужно откривать Api окно...)))
Миниатюры
Вывод информации при нажатии клавиши на клавиатуре  
0
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
09.03.2012, 19:37  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- по логу ошибок предположу что мой проект вообще как косноль пытались линковатьНадо - Win32, т.к. код же API

Спасибо всьо розобрался ..там всево лиш несколько изменений нужно било зделать подкоректировать...)))

всьо работает..))
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.03.2012, 19:50
Цитата Сообщение от OKS_by_V Посмотреть сообщение
Спасибо всьо розобрался ..там всево лиш несколько изменений нужно било зделать подкоректировать...)))
всьо работает..))
- ну дык я ж говорил что даже писать ничего не надо просто мышкой пощёлкать по опциям
1
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
12.03.2012, 16:34  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
OKS_by_V, ты был настойчив в просьбах поэтому отказать уже не имел возможности
Ниже код, проект готовый экзешник и скрин работы
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
// project.cpp : Defines the entry point for the application.
//
#include <windows.h>
#include <stdio.h>
HWND hMain = NULL;
HWND hChld = NULL;
WNDCLASS wc;//Äåëàåì åãî ãëîáàëüíûì è áîëüøå íå ëîìàåì ãîëîâó
 
WORD GetSymbolFromVK(WPARAM wParam) // ïåðåâîäèò êîä íàæàòîé êëàâèøè â òåêñò
{
    WORD Symbol; 
    BYTE btKeyState[256];
    HKL  hklLayout = GetKeyboardLayout(0); // óçíàåì ÿçûê êëàâèàòóðû
    GetKeyboardState(btKeyState); 
    if(!
        ((ToAsciiEx(wParam, MapVirtualKey(wParam, 0), btKeyState, &Symbol, 0, hklLayout) == 1) 
        && // ñàì ïåðåâîä
        0 <= GetKeyState(VK_CONTROL) 
        && 
        0 <= GetKeyState(VK_MENU))) // ïðîâåðÿåì CTRL è ALT
        Symbol = -1;
    return Symbol;
}
 
//Äëÿ óïðîùåíèÿ
HWND _CreateWindow
(
    WNDCLASS _wc,
    LPCTSTR szTitle, 
    DWORD dwStyle, 
    int x, int y, 
    int nWidth, 
    int nHeight
)
{
    HWND hWnd = NULL;
    if(RegisterClass(&wc)) //Ðåãèñòðèðóåì êëàññ îêíà
        hWnd = CreateWindow
        (
            _wc.lpszClassName, 
            szTitle, 
            dwStyle, 
            x, y, 
            nWidth, 
            nHeight, 
            0, 0, 
            _wc.hInstance, 
            0
        );  
    return hWnd;
}
 
//Ñòàíäàðòíàÿ ôóíêöèÿ îáðàáîòêè ñîîáùåíèé ãëàâíûì îêíîì
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC     = NULL;
    char sMSG[256] = {0};
    switch (msg)
    { 
    case WM_KEYDOWN:
        ShowWindow(hChld,SW_SHOW);
        //ñêàçàëè äî÷åðíåìó îêíó êàêóþ êëàâèøó íàæàëè â ãëàâíîì
        SendMessage(hChld,WM_KEYDOWN,wParam,lParam);
        break;
    case WM_DESTROY:
        PostQuitMessage(0); //Çàêðûâàåì ïðèëîæåíèå
        break;
    default: 
        return DefWindowProc(hWnd, msg, wParam, lParam); //âîçâðàùàåì äåôîëòíûå çíà÷åíèÿ                
    }
    return 0l;
}
 
HBRUSH hBrush;//Ýòîé êèñòüþ çàêðàñèì ïðÿìîóãîëüíèê êíîïêè Çàêðûòü
//Ñòàíäàðòíàÿ ôóíêöèÿ îáðàáîòêè ñîîáùåíèé äî÷åðíèì îêíîì
LRESULT CALLBACK ChldWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC        = NULL;
    char sMSG[256] = {0};
    POINT point;
    RECT pRECT;
    switch (msg)
    { 
    case WM_CREATE:
        hBrush = CreateSolidBrush(RGB(200, 200, 200));
        break;
    case WM_KEYDOWN:
    case WM_SHOWWINDOW :
        if(hDC = GetDC(hWnd))
        {
            if(sprintf(sMSG,"Íàæàòà êëàâèøà : %c",GetSymbolFromVK(wParam)))
            {
            //Åñëè ÿçûê òîëüêî ENG òî ìîæíî çàïèñàòü êàê íèæå
            //if(sprintf(sMSG,"Íàæàòà êëàâèøà : %c",(char)wParam))
                TextOut(hDC,0,0,sMSG,strlen(sMSG));
                SetWindowText(hWnd,sMSG);
            }
            if(sprintf(sMSG,"scan-code : %d(0x%p)",wParam,wParam))
                TextOut(hDC,0,20,sMSG,strlen(sMSG));
            SelectObject(hDC, hBrush);
            Rectangle(hDC, 220, 150, 290, 190); 
            SetBkColor(hDC, RGB(200, 200, 200));
            if(strcpy(sMSG,"Çàêðûòü"))
                TextOut(hDC,220,150,sMSG,strlen(sMSG));
            UpdateWindow(hWnd);
        }
        break;
    case WM_LBUTTONDOWN:
        GetWindowRect(hWnd,&pRECT);
        point.x = LOWORD(lParam); 
        point.y = HIWORD(lParam); 
        //Ýòî çíà÷èò ÷òî êëàöíóëè íà îáëàñòü çàêðûòü
        if
        (
            220 < point.x && 
            150 < point.y
        )
            ShowWindow(hWnd,SW_HIDE);//Ïðÿ÷åì îêîøêî (íàì êàæåòñÿ ÷òî åãî çàêðûëè)
        break;
    case WM_DESTROY:
        PostQuitMessage(0); //Çàêðûâàåì ïðèëîæåíèå
        break;
    default: 
        return DefWindowProc(hWnd, msg, wParam, lParam); //âîçâðàùàåì äåôîëòíûå çíà÷åíèÿ                
    }
    return 0l;
}
 
//Ãëàâíàÿ ôóíêöèÿ ïðèëîæåíèÿ
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{  
    MSG msg;
    memset(&wc, 0, sizeof(wc));
    wc.lpszClassName = "MainWndClass"; //Íàçâàíèå êëàññà îêíà
    wc.hInstance     = hInst;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW); //Êóðñîð â îêíå
    wc.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1); //Öâåò îêíà
    wc.lpfnWndProc   = MainWndProc; 
    //Ñîçäàòü ãëàâíîå îêíî
    hMain = _CreateWindow
    (
        wc,
        "Ãëàâíîå  îêíî",
        WS_OVERLAPPEDWINDOW,
        100,100,480,360
    );
    ShowWindow(hMain, SW_SHOW); //Ïîêàçàòü ãëàâíîå îêíî
    UpdateWindow(hMain); //Îáíîâèòü ãëàâíîå îêíî
    wc.lpszClassName = "ChldWndClass"; //Íàçâàíèå êëàññà îêíà
    wc.lpfnWndProc   = ChldWndProc; 
    //Ñîçäàòü äî÷åðíåå îêíî
    hChld = _CreateWindow
    (
        wc,
        "Äî÷åðíåå îêíî",
        WS_CAPTION | 
        WS_CHILD   | 
        WS_POPUP   | 
        WS_BORDER,
        200,200,300,200
    );
    ShowWindow(hChld, SW_HIDE); //Ñêðûòü äî÷åðíåå îêíî
    //Ñòàíäàðòíûé öèêë îáðàáîòêè ñîîáùåíèé ïðèëîæåíèåì
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (INT)msg.wParam;
}
спасибо тебе огромное за помощь..только есть один маленький недочьот в програме ...если нажимать функциональние клавиши такие как F1,F2,F3....і тд insert delete....они не отображаются....а отображается буква "я".....как можно ето исправить..))

штоб возможно в меседжбоксе вискакивело ви нажали на функциональную клавишу и название....))

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

Цикл вывода символа на экран, при нажатии клавиши
Здравствуйте! Пишу змейку, и нужно, чтобы при нажатии определённой клавишы, она начинала двигаться в указанную сторону. Но, почему-то...

Прервать цикл при нажатии определённой клавиши, а если не нажали - то продолжать его
do {int i=0; //for(int i=0;i&lt;6;i++) printf(&quot;введите страну\n&quot;); jj(hi.country); printf(&quot;введите данные для этой...

Вывод информации при нажатии клавиши
Разработка программы для вывода информации(о клавиши ) при нажатии клавиши на клавиатуре..))) вообщем что посоветуете??? сделать...

База данных - вывод информации при нажатии клавиши
Uses Crt, Graph; Const r2=30; Var r,w,t,x,y: integer; c,j,k:char; e:boolean; Procedure prim; Begin {procedure} ...

Выполнить действие при нажатии клавиши на клавиатуре
доброго времени суток. при нажатии на клавишу выполнялось какое либо действие (например при нажатии на клавишу F1 должна нажаться...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru