Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Чекбоксы и радиокнопки в visual studio 2013

Posted on 19 марта, 201419 марта, 2014 by admin

Здорова господа!

Сегодня поговорим о таких графических элементах управления как чекбокс и радиокнопки, мы щас просто их попытаемся разобрать на практике что это за элементы, зачем они применяются. Ну это как бы похожие элементы, чек боксы там можно галучки ставить и удалять, они как бы сами по себе. Радиокнопки они групируются, ну например если 3 элемента допустим сгрупированы, то там можно выбрать из трех элементов только один.

А да ребятки еще поговорим про рисование горизонтальных линий, ну давайте начнем с горизонтальных линий, как же они рисуются? А все очень просто, мы просто добавляем элемент static text и уменьшаем его размер в файле с расширением .rc  например в нотпаде открываем и редактируем элементы. Добавляем для начала два элемента static text и в них рисуем букву i просто заполняем буквой i  как на рисунке ниже.ScreenShot 9

А теперь открываем файл ресурсов с расширение .rc у меня он называется «test2.rc» у вас он может как то по другому называться и нужно найти следующие строки:

ScreenShot 43

Ну у меня тут не поместилось, но в конце строк iiiiiiiiiiiiiiiiiii…. должно быть размер как ниже на рисунку

ScreenShot 44

Изменяем 8 на 3 и все и у вас должна быть видна только верхняя точка

ScreenShot 45

В общем так от рисуются линии.

 

Теперь ребятки переходим к чекбоксам кидаем на форму 3 графических элемента check box и групируем их с помощью элемента group box, то есть сначала кидаем групирующий элемент group box, а затем уже 3 check box. Всегда в общем привыкайте рисовать первым элемент group box.

Так ребятки сразу же кинем и элементы радиокнопок так же само, сперва кидаете group box, а затем елемент radio button

От такую форму вы должны нарисовать

ScreenShot 46

В свойствах элемента group box вы должны поставить Группа в true ( по умолчанию стоить в false)

Ну и еще в самом файле ресурса test2.rc у меня у вас может быть другой должен быть следующий порядок:ScreenShot 47

GROUPBOX должен стоять в самом начале группируемых элементов, иначе они могут не сгруппироваться.

Создаем файл main.cpp

main.cpp »

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
#include <Windows.h>
#include <string>
using std::string;
#include "resource.h"
 
//собственная процедура для обработки
BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE
    hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    int ret=DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),
                    NULL,(DLGPROC)DlgProc);
    if (ret == 0)
    {
        //Если была нажата кнопка Отмена или крестик
        MessageBox(NULL,(LPCTSTR)"Отмена","Inform",
                   MB_OK|MB_ICONINFORMATION);
    }
    else if (ret == 1)
    {
        //Если была нажата кнопка Ок
        MessageBox(NULL,(LPCTSTR)"Ок","Inform",
                   MB_OK|MB_ICONINFORMATION);
    }
 
    return ret;
}
 
BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam,
    LPARAM lParam)
{
    switch (msg)
    {
        case WM_INITDIALOG:
        {
//устанавливает радиокнопку по умолчанию
CheckDlgButton(hwnd,IDC_RADIO3,BST_CHECKED);
//устанавливает флажок по умолчанию
CheckDlgButton(hwnd,IDC_CHECK2,BST_CHECKED);
            return TRUE;
        }
        case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
 
                case IDOK:
{
string s="";
//радиокнопки если выставлены
//группа 2
if(IsDlgButtonChecked(hwnd,IDC_RADIO1))
s+="IDC_RADIO1 - radio1\n";
if(IsDlgButtonChecked(hwnd,IDC_RADIO2))
s+="IDC_RADIO2 - radio2\n";
if(IsDlgButtonChecked(hwnd,IDC_RADIO3))
s+="IDC_RADIO3 - radio3\n";
//группа 3
if(IsDlgButtonChecked(hwnd,IDC_RADIO4))
s+="IDC_RADIO4 - Да\n";
if(IsDlgButtonChecked(hwnd,IDC_RADIO5))
s+="IDC_RADIO5 - Нет\n";
 
//флажки
//группа 1
if(IsDlgButtonChecked(hwnd,IDC_CHECK1))
s+="IDC_CHECK1 - one\n";
if(IsDlgButtonChecked(hwnd,IDC_CHECK2))
s+="IDC_CHECK2 - two\n";
if(IsDlgButtonChecked(hwnd,IDC_CHECK3))
s+="IDC_CHECK3 - three\n";
 
//выводим саму s
MessageBox(NULL,(LPCSTR)s.c_str(),"question - info",
MB_OK|MB_ICONINFORMATION);
 
                    EndDialog(hwnd,1);
                    return TRUE;
}
                case IDCANCEL:
                    EndDialog(hwnd,0);
                    return TRUE;
            }
//тут обязательно иначе будет выход из программы.
break;
        }
        case WM_CLOSE:
        {
            EndDialog(hwnd,0);
            return FALSE;
        }
    }
    return FALSE;//нужно что бы вызвать функцию для прорисовки окда
    //return TRUE;//не будет вызыватся функция протисовки окна
}

Компилируем программу получаем окошко:ScreenShot 48

Выбираем нужные флажки и радиокнопки и нажимаем кнопку Ок и мы получаем следующий ответ

ScreenShot 49

 

Ну и все ребятки все у нас нормально работает, щас немножко поговорим о некоторых функциях, от например установить флажок по умолчанию нужно использовать функцию

код »

1
2
3
4
5
6
7
8
case WM_INITDIALOG:
        {
//устанавливает радиокнопку по умолчанию
CheckDlgButton(hwnd,IDC_RADIO3,BST_CHECKED);
//устанавливает флажок по умолчанию
CheckDlgButton(hwnd,IDC_CHECK2,BST_CHECKED);
            return TRUE;
        }

 

Что б проверить какой флажок у нас выбран используют следующие функции

код »

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
case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
                case IDOK:
{
string s="";
//радиокнопки если выставлены
//группа 2
if(IsDlgButtonChecked(hwnd,IDC_RADIO1))
s+="IDC_RADIO1 - radio1\n";
if(IsDlgButtonChecked(hwnd,IDC_RADIO2))
s+="IDC_RADIO2 - radio2\n";
if(IsDlgButtonChecked(hwnd,IDC_RADIO3))
s+="IDC_RADIO3 - radio3\n";
//группа 3
if(IsDlgButtonChecked(hwnd,IDC_RADIO4))
s+="IDC_RADIO4 - Да\n";
if(IsDlgButtonChecked(hwnd,IDC_RADIO5))
s+="IDC_RADIO5 - Нет\n";
 
//флажки
//группа 1
if(IsDlgButtonChecked(hwnd,IDC_CHECK1))
s+="IDC_CHECK1 - one\n";
if(IsDlgButtonChecked(hwnd,IDC_CHECK2))
s+="IDC_CHECK2 - two\n";
if(IsDlgButtonChecked(hwnd,IDC_CHECK3))
s+="IDC_CHECK3 - three\n";
 
//выводим саму s
MessageBox(NULL,(LPCSTR)s.c_str(),"question - info",
MB_OK|MB_ICONINFORMATION);
 
                    EndDialog(hwnd,1);
                    return TRUE;
}
                case IDCANCEL:
                    EndDialog(hwnd,0);
                    return TRUE;
            }
//тут обязательно иначе будет выход из программы.
break;
        }

Ну и все пожалуй, это основные моменты, та даже наверно не основные, ну хоть что то уже более ясно становиться, как этими кнопками пользоваться.

[youtube]https://www.youtube.com/watch?v=LioubIiwW1s[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • ExchiNuGs к записи Программка для заполнения форума на vBulletin 3.8.7
  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
©2021 Kselax.ru Theme by ThemeGiant