С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Аким2020
6 / 5 / 1
Регистрация: 05.10.2020
Сообщений: 122

Не определяет, что нажата кнопка

22.01.2021, 01:34. Показов 2172. Ответов 2

Студворк — интернет-сервис помощи студентам
В общем, нужно, чтобы при нажатии на кнопку "+", печаталось "Нажат плюс", но почему - то выдает ошибку.
Пишет вот что - error: ISO C++ forbids comparison between pointer and integer [-fpermissive]|
Пользуюсь CodeBlocks.


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
#include <iostream>
#include <Windows.h>
 
 
 
using namespace std;
 
HWND btPlus;
 
LRESULT WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam){
 
    if (message == WM_DESTROY){
        exit(1);
    }
 
    else if (message == WM_COMMAND){
        if (btPlus == lparam){
            cout << "Нажат плюс" << endl;
        }
    }
 
    else {
        return DefWindowProc(hwnd, message, wparam, lparam);
    }
}
 
 
 
int main(){
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
WNDCLASSA wcl;
    memset(&wcl, 0, sizeof(WNDCLASSA));
    wcl.lpszClassName = "window";
    wcl.lpfnWndProc = WndProc;
RegisterClassA(&wcl);
 
HWND hwnd = CreateWindow("window", "Calculator", WS_OVERLAPPEDWINDOW, 200,10,640,480,NULL,NULL,NULL,NULL);
btPlus = CreateWindow("button", "+", WS_VISIBLE | WS_CHILD, 520, 200, 100,50, hwnd, NULL, NULL,NULL);
HWND btMinus = CreateWindow("button", "-", WS_VISIBLE | WS_CHILD, 520,250,100,50,hwnd,NULL,NULL,NULL);
MSG msg;
 
ShowWindow(hwnd, SW_SHOWNORMAL);
 
while(GetMessage(&msg,NULL,0,0)){
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
 
 
 
return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2021, 01:34
Ответы с готовыми решениями:

Как получить сообщение о том, что была нажата кнопка RADIOBUTTON?
Здравствуйте! Как получить сообщение о том, что была нажата одна из кнопок RADIOBUTTON? То есть, имеется две кнопки-переключатели, и по...

Пауза в цикле, пока не нажата кнопка
Подскажите, как реализовать следующий алгоритм: for (a = 0; a &lt;= 10 ; a++) { hButton1 = CreateWindow(&quot;button&quot;, &quot;D x...

Как в C++ Win32 через API определить что кнопка нажата ???
Как в C++ Win32 через API определить что кнопка нажата ???

2
840 / 347 / 67
Регистрация: 20.11.2012
Сообщений: 809
22.01.2021, 11:52
Лучший ответ Сообщение было отмечено Аким2020 как решение

Решение

C++
1
if (btPlus == (HWND)lparam)
HWND раскрывается в:

typedef HANDLE HWND;
typedef PVOID HANDLE;
typedef void *PVOID;
А LPARAM в:
typedef LONG_PTR LPARAM;

#if defined(_WIN64)
typedef __int64 LONG_PTR;
#else
typedef long LONG_PTR;
#endif
Ошибка говорит о том, что стандартный C++ запрещает сравнение между указателем и целым. Чтобы решить, нужно привести к одному типу:

C++
1
if (btPlus == (HWND)lparam)
0
 Аватар для Аким2020
6 / 5 / 1
Регистрация: 05.10.2020
Сообщений: 122
22.01.2021, 15:45  [ТС]
WhiteP, спасибо!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2021, 15:45
Помогаю со студенческими работами здесь

Проверить, нажата ли кнопка
Добрый день, как сделать проверку? Если активизирована кнопка, то выполняется запрос иначе выдает ошибку. if (Button1-&gt;Click()) ...

Какая кнопка нажата?
На форме есть 60 кнопок SpeedButton, как определить какая из них нажата? при этом записать номер кнопки в значение &quot;int&quot;......

Проверка нажата ли кнопка
Нужна помощь сделать кнопку вкл/выкл к примеру нажали f1 выполнился код нажали еще раз код прекратил выполнение

Нажата ли левая кнопка мыши
День добрый! Мне нужна функция,которая может определить зажата ли в данную секунду левая кнопка мыши или нет. В гугле нашел функции...

Проверка условия, что нажата определенная кнопка
Здравствуйте. Пишу программу, хочу указать условие - если нажали на конкретную кнопку, то выполняется такое то действие. Вопрос: есть ли...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru