Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 18.07.2023
Сообщений: 12
1

Как сделать кнопку?

23.08.2023, 23:42. Показов 2836. Ответов 58
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
То есть чтоб когда мышкой наводишься на определенную область например где текст, и нажимаешь на нее, то происходят определенные действия
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2023, 23:42
Ответы с готовыми решениями:

как сделать свою кнопку
для курсового проекта мне нужно внедрить браузер в форму и сделать пару кнопок(типа вперед,назад)...

Как в visual studio 10 сделать кнопку на форме?
сделал форму в visual studio 10.а как сделать пару кнопок?

После нажатия на кнопку TBitBtn сделать кнопку не действующей
Как после нажатия на кнопку bitbtn1 кнопка становилась не действушей

Как сделать многострочную кнопку?
В WinAPI есть такой флаг BS_MULTILINE. А что может предложить Qt?

Как сделать активной кнопку
Как сделать активной кнопку во время выполнения функции под другой кнопкой что бы можно было...

58
Just Do It!
3843 / 2293 / 636
Регистрация: 23.09.2014
Сообщений: 7,111
Записей в блоге: 3
24.08.2023, 13:17 2
Цитата Сообщение от L1nexx Посмотреть сообщение
Как сделать кнопку C++
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
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
 
void button_callback(Fl_Widget* o, void*)
{
    Fl_Button* button = (Fl_Button*) o;
    button->label("Уиииии!");
    button->redraw();
}
 
int main()
{
    /**
     * Инициализировать окно шириной 300px,
     * высотой 200px и названием "Тест".
     */
    Fl_Window window(300, 200, "Тест.");
 
    /**
     * В блоке между методами begin() и end() объявляем кнопку,
     * левый верхний край которой расположен в (10; 150),
     * шириною 100px и высотою 30px.
     */
    window.begin();
        Fl_Button button(10, 150, 100, 30, "Нажми");
    window.end();
 
    /* Привязать callback-функцию к кнопке. */
    button.callback(button_callback);
 
    /* Показать окно. */
    window.show();
    return Fl::run();
}
Название: Video_2023-08-24_131323.gif
Просмотров: 242

Размер: 53.7 Кб
3
422 / 293 / 59
Регистрация: 09.03.2016
Сообщений: 2,607
24.08.2023, 13:52 3
Столько много букоф, простите, я создал оконное приложение на winApi.
Что бы было на чём поставить кнопку...
(Кнопка со строчки 51.)
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
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
 
 
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
MSG msg;
 
//Registering the Window Class
wc.cbSize        = sizeof(WNDCLASSEX);
wc.style         = 0;
wc.lpfnWndProc   = WndProc;
wc.cbClsExtra    = 0;
wc.cbWndExtra    = 0;
wc.hInstance     = hInstance;
wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName  = NULL;
wc.lpszClassName = TEXT("myWindowClass");
wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wc);
 
 
//Creating the Window
CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("myWindowClass"),TEXT("Simple Window"),
    WS_VISIBLE | WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL);
 
//The Message Loop
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
 
 
 
//WndProc procedure. Application acts on messages
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    const int ID_BUTTON9(3900);
switch(msg)
{
case WM_CREATE: {// --------------------------------- Создание
                  CreateWindowW(L"BUTTON", L"--< КНОПКА >--", BS_PUSHBUTTON |
                      WS_VISIBLE | WS_CHILD | WS_TABSTOP, 60, 60, 80, 20, hwnd,
                      (HMENU)ID_BUTTON9, NULL, NULL);
 
}
    break;
case WM_COMMAND: {//--------------------------------- Обработчик
    if (LOWORD(wParam) == ID_BUTTON9) {
        Beep(4000, 10);
    }
}
    break;
case WM_CLOSE:
                     
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
final_file.mp4

Эти буквы писать не надо. Их просто берёшь и копируешь из загашника.
0
2859 / 2358 / 712
Регистрация: 29.06.2020
Сообщений: 8,734
24.08.2023, 13:59 4
Цитата Сообщение от XLAT Посмотреть сообщение
Fl_Button button
Какая ретро кнопка
0
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 779
24.08.2023, 14:14 5
Цитата Сообщение от SmallEvil Посмотреть сообщение
Какая ретро кнопка
FLTK не актуальна чёль среди продвинутых?
1
3323 / 1537 / 483
Регистрация: 01.06.2021
Сообщений: 5,244
24.08.2023, 14:49 6
тут и у Наталья8 кнопка в старинном стиле, хотя это легко исправляется.

Нужно всего лишь повысить контролы (ComCtl32) до 6-й версии. Делать это можно через манифест. А если стоит Visual Studio 2005 и выше, то можно еще проще, прописав в коде:

C++
1
2
3
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
1
Just Do It!
3843 / 2293 / 636
Регистрация: 23.09.2014
Сообщений: 7,111
Записей в блоге: 3
24.08.2023, 15:00 7
Цитата Сообщение от SmallEvil Посмотреть сообщение
Какая ретро кнопка
Зачем доктору текстуры на кнопках, когда он придумывает новые вирусы?
3
422 / 293 / 59
Регистрация: 09.03.2016
Сообщений: 2,607
24.08.2023, 15:02 8
А чё такое FLTK ?
Нарисовать пару кнопок, я должен фрамеворк подцеплять.
И разбираться, с манифестами и контролами?
Как сделать кнопку?

Прописал. Покруглело, чего то..
А может и ничего не покруглело.
0
Just Do It!
3843 / 2293 / 636
Регистрация: 23.09.2014
Сообщений: 7,111
Записей в блоге: 3
24.08.2023, 15:28 9
Цитата Сообщение от Наталья8 Посмотреть сообщение
я должен фрамеворк подцеплять.
смотри - ты его подцепляешь:
Цитата Сообщение от Наталья8 Посмотреть сообщение
#include <windows.h>
1
422 / 293 / 59
Регистрация: 09.03.2016
Сообщений: 2,607
24.08.2023, 15:32 10
Цитата Сообщение от XLAT Посмотреть сообщение
смотри - ты его подцепляешь:
Да это своё родное...
Я его люблю...
0
3323 / 1537 / 483
Регистрация: 01.06.2021
Сообщений: 5,244
24.08.2023, 15:34 11
Цитата Сообщение от Наталья8 Посмотреть сообщение
Прописал. Покруглело, чего то..
А может и ничего не покруглело.
Вот, смотрите на разницу.

Дефолтные кнопки на вин 10.
Название: win10_controls_default.png
Просмотров: 200

Размер: 2.6 Кб

А теперь с контролами 6-й версии на той же вин 10.
Название: win10_controls6.png
Просмотров: 200

Размер: 2.8 Кб

Бинарники прилагаются, чтобы вы тестировали у себя, т.к. на вашей версии винды будет все иначе.


Кстати, если открыть exe файл как архив, и залезть внутрь, то можно увидеть, что в одном случае манифест выглядит как:

Кликните здесь для просмотра всего текста
XML
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
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="*"
    name="CompanyName.ProductName.YourApplication"
    type="win32"
/>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!--The ID below indicates application support for Windows Vista -->
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <!--The ID below indicates application support for Windows 7 -->
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
      <!--The ID below indicates application support for Windows 8 -->
      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
      <!--The ID below indicates application support for Windows 8.1 -->
      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> 
      <!--The ID below indicates application support for Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> 
    </application>
</compatibility>
<description>Your application description here.</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>


а в другом как:

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!--The ID below indicates application support for Windows Vista -->
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <!--The ID below indicates application support for Windows 7 -->
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
      <!--The ID below indicates application support for Windows 8 -->
      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
      <!--The ID below indicates application support for Windows 8.1 -->
      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> 
      <!--The ID below indicates application support for Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> 
    </application>
  </compatibility>
</assembly>


Т.е. именно содержание в манифесте нужных строк повышает контролы и делает кнопки (а также все прочие окна) красивыми.
Вложения
Тип файла: zip test.zip (15.7 Кб, 2 просмотров)
1
Just Do It!
3843 / 2293 / 636
Регистрация: 23.09.2014
Сообщений: 7,111
Записей в блоге: 3
24.08.2023, 15:35 12
Цитата Сообщение от Наталья8 Посмотреть сообщение
Да это своё родное...
да.
больше оно нигде, акромя винды не работает.
0
422 / 293 / 59
Регистрация: 09.03.2016
Сообщений: 2,607
24.08.2023, 15:37 13
Royal_X,
Как сделать кнопку?

Да не... В натуре красивее..
Я когда то это куда то вставлял, но уже забыл...
0
422 / 293 / 59
Регистрация: 09.03.2016
Сообщений: 2,607
24.08.2023, 15:40 14
Вот без неё...
Как сделать кнопку?
0
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 779
24.08.2023, 15:41 15
а чем плохи визуальные студии? говорят там много мусора
0
422 / 293 / 59
Регистрация: 09.03.2016
Сообщений: 2,607
24.08.2023, 15:41 16
Цитата Сообщение от XLAT Посмотреть сообщение
больше оно нигде
Я под линуху не пишу. Мне ни кто спасибо не скажет.
А здесь я хотя бы пользую...
0
3323 / 1537 / 483
Регистрация: 01.06.2021
Сообщений: 5,244
24.08.2023, 15:46 17
Наталья8, хорошо тебе, у тебя Visual Studio, можешь включать контролы 6-й версии, прописав в коде эти несколько строк. А у меня VS Code и мне приходится вставлять пользовательский манифест, используя компилятор ресурсов.
0
Just Do It!
3843 / 2293 / 636
Регистрация: 23.09.2014
Сообщений: 7,111
Записей в блоге: 3
24.08.2023, 15:49 18
Цитата Сообщение от Наталья8 Посмотреть сообщение
Я под линуху не пишу
не надо писать под линукс.
пишешь под то - под что пишешь, а работает везде.
1
422 / 293 / 59
Регистрация: 09.03.2016
Сообщений: 2,607
24.08.2023, 15:51 19
Цитата Сообщение от qppq Посмотреть сообщение
чем плохи визуальные студии
Я писал на десятой, тринадцатой, Вот пятнадцатую поставил.
На удивление стабильно работает. Безглючно и удобно очень.
Я ещё на бильдере писал.
Там переменные не подсвечиваються и ошибки не подчёркивает.
Студио удобнее.
И на бильдер плохо подходят различные фрамеворки. Они для студио написаны.
=============
А если вы интересуетесь формочкой с кнопочками, они не на с++.
Они на диалекте C++CLI. Можете попробовать поучить.
Мне такая хрень не интересна...

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
а работает везде.
Лучше под винду хорошо, чем под везде и через зад.
Я примерно в курсе таких разработок.
0
3323 / 1537 / 483
Регистрация: 01.06.2021
Сообщений: 5,244
24.08.2023, 15:55 20
Цитата Сообщение от XLAT Посмотреть сообщение
пишешь под то - под что пишешь, а работает везде
Иногда функции кроссплатформенных фреймворков говно. Вот, например, у разрабов wxMaxima (графической оболочки для Maxima, которая написана на wxWidgets) постоянно какие-то проблемы. На линуксе работает как надо, а на винде что-то не так. Или наоборот. Им приходится какие-то костыли под конкретную ОС писать. Еще, разумеется, что в этих фреймворках доступны не все функции, которые есть в родных API. Фреймворки это компромиссные решения для ленивых.
1
24.08.2023, 15:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2023, 15:55
Помогаю со студенческими работами здесь

Как сделать кнопку не активной?
Создаю Визардом диалоговый проект: В окне две кнопки... нужно чтобы при нажатии на Button1...

Как сделать не стандартную кнопку
есть картинка к примеру крестик как натянуть ее на кнопку и менять к примеру на нолик при ...

Как сделать красивую кнопку?
Очень редко вижу такие кнопки: . И очень часто такие: . Как сделать второй вариант?

Как сделать неактивной кнопку
Мне нужно чтобы если на кнопку нажали один раз, она становилась неактивной и на неё нельзя было бы...

Вид button'а - как сделать кнопку как на виндовс ХР
В C++Builder 6 создаю форму с кнопками, но кнопки выходят как на Виндовс 98(), как сделать кнопку...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru