С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 3

Работа с клавиатурой win api

02.05.2014, 16:30. Показов 1235. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        
        GetClientRect(hWnd, &rect);
InvalidateRect(hWnd, NULL, TRUE);
hdc = BeginPaint(hWnd, &ps);
 
 
 bmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
            if(IDB_BITMAP1 == NULL)
            {MessageBox(0, L"Couldn't load the image", L"Error", MB_OK);}
       else
       {
        // Create a memory device compatible with the above DC variable
        Memhdc = CreateCompatibleDC(hdc);
        // Select the new bitmap
        SelectObject(Memhdc, bmp);
        // Copy the bits from the memory DC into the current dc
        BitBlt(hdc, x, y, rect.right, rect.bottom, Memhdc, 0, 0, SRCCOPY);
 
        DeleteDC(Memhdc);
        DeleteObject(bmp);
        
        EndPaint(hWnd, &ps);
            }
        break;
 
    case WM_KEYDOWN:
        {
    GetClientRect(hWnd, &rect);
    switch (wParam)
    {
        
    case VK_LEFT: //0x25
        
        x=x-5;
        ID_bmp = 0;
        InvalidateRect(hWnd, NULL, TRUE);
        break;
 
    case VK_RIGHT: //0x27
        
        x+=5;
        ID_bmp = 0;
        InvalidateRect(hWnd, NULL, TRUE);
        
        break;      
    case VK_UP: //0x26 
        
        y-=5;
        ID_bmp = 0;
        InvalidateRect(hWnd, NULL, TRUE);
        
        break;
    case VK_DOWN: //0x28 
        
        y+=5;
        ID_bmp = 0;
        InvalidateRect(hWnd, NULL, TRUE);
        
        break;
        
    }
        }
    
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
Цели такая загружаем bmp картинку и при помощи клавиш а именно стрелок вниз,влево,.... перемещаем эту картинку.Картинка загружается но при нажатий любой кнопки программа просто закрывается. И это случается только с картинкой когда просто нарисовала линию все работала и она перемещалась.
Помогите.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2014, 16:30
Ответы с готовыми решениями:

WIN API C++ Работа с FAT
Доброго времени суток. У меня задание: Программа просматривает все каталоги в поисках файлов с одинаковым именем, после чего...

Работа с устройством через Win API
Переделываю статичный lib написанный в Builder на си шарп. Код открывает устройство и работает с ним через драйвер. Первую функцию...

Работа с файлами средствами Win API.
Написать программу , которая отображает информацию об используемых файлах и режимах работы с ними в текстовом виде. Добавлено через 1...

2
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
02.05.2014, 16:43
2 штуки BeginPaint подряд; LoadBitmap и InvalidateRect внутри обработчика WM_PAINT - это всё печально. Закрывается же потому, что в case WM_KEYDOWN нет break, и после него уходит на case WM_DESTROY.
1
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 3
02.05.2014, 16:51  [ТС]
Да дурацкие ошибки. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2014, 16:51
Помогаю со студенческими работами здесь

Работа с функциями печати(win 32 API PrintDlg)
Здравствуйте! Необходимо вызвать диалог установки печати через функцию PrintDlg. В коде обработки события кнопки пишу следующий код (но...

Работа с win API
Подскажите пожалуйста где и что можно почитать, что бы разобраться что такое API и с чем его едят. Я раньше с API не как не работал.

WIN API Работа с функциями
И снова я, тут решил попробывать попрограммировать на WINAPI но столкнулся с проблемой в VS2005 Как использовать функции ? допустим ...

Работа с Win API функциями в Visual Basic.NET
Подскажите книги или киньте ссылки на сайты в которых описаны Win API функции .

WIN API устарел как начать программировать на C++ .NET API (Без VisualStudio)
WIN API устарел как начать программировать на C++ .NET API (Без VisualStudio)


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru