Kselax.ru

Hacker Kselax — the best hacker in the world

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

MFC — радио кнопки Radio Batton

Posted on 13 декабря, 2014 by admin

Здорова ребятки!

Сегодня разберем такой элемент управления как радиокнопки, это элемент выбора используется в диалоговых окнах для выбора какого нить значения и передачи его в программу, то есть для настройки программы. Я не буду сильно объяснять что да как, потому что сам не знаю, а просто создадим программку в которой будет пункт Menu а в нем подпункт Dialog… по клике на котором будет всплывать диалоговое окно выбора в котором будут эти радио-кнопки выбра.

Приступим к созданию приложения, создайте простейшее приложение МФС с поддержкой документ/вид. Теперь идем в Окно ресурсов, кликаем правой клавишей мышки над папкой Dialog и выбираем добавить диалог

mfc add dialogПоявится новый диалог с идентификатором IDD_DIALOG1 , добавьте в него элементы управления в такой последовательности, сначала Group Boxs, а затем добавьте 8 Radio Button , назовите их 1,2,3,4,5,6,7,8

mfc radio buttonВ свойствах каждая кнопка имеет свой идентификатор от IDC_RADIO1 до IDC_RADIO8

Переходим к добавлению класса для диалогового окна, для этого кликнем правой клавишей мышки по диалогу и выберем пункт добавить класс появится окно мастера добавления классов, выставите такие настройки как на рисунке ниже

mfc radiobuttondialogнажмите кнопку готово и у вас появится два класса

RadioButtonDialog.h »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once
 
 
// диалоговое окно CRadioButtonDialog
 
class CRadioButtonDialog : public CDialog
{
DECLARE_DYNAMIC(CRadioButtonDialog)
 
public:
CRadioButtonDialog(CWnd* pParent = NULL);   // стандартный конструктор
virtual ~CRadioButtonDialog();
 
// Данные диалогового окна
enum { IDD = IDD_DIALOG1 };
 
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // поддержка DDX/DDV
 
DECLARE_MESSAGE_MAP()
};

Показать »

hide=»RadioButtonDialog.cpp» show=»RadioButtonDialog.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
// RadioButtonDialog.cpp: файл реализации
//
 
#include "stdafx.h"
#include "test4.h"
#include "RadioButtonDialog.h"
#include "afxdialogex.h"
 
 
// диалоговое окно CRadioButtonDialog
 
IMPLEMENT_DYNAMIC(CRadioButtonDialog, CDialog)
 
CRadioButtonDialog::CRadioButtonDialog(CWnd* pParent /*=NULL*/)
: CDialog(CRadioButtonDialog::IDD, pParent)
{
 
}
 
CRadioButtonDialog::~CRadioButtonDialog()
{
}
 
void CRadioButtonDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
 
 
BEGIN_MESSAGE_MAP(CRadioButtonDialog, CDialog)
END_MESSAGE_MAP()
 
 
// обработчики сообщений CRadioButtonDialog

Добавим в наш класс CRadioButtonDialog переменную типа int m_data эта переменная будет открытая, не Control

Для инициализации диалога мы должны переопределить функцию OnInitDialog класса CRadioButtonDialog

mfc OnInitDialogи добавьте в нее код инициализации

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
BOOL CRadioButtonDialog::OnInitDialog()
{
CDialog::OnInitDialog();
 
//поменить переключатель соответствующий текущему значению m_data
switch(m_data)
{
case 1:
CheckDlgButton(IDC_RADIO1,1);
break;
case 2:
CheckDlgButton(IDC_RADIO2,1);
break;
case 3:
CheckDlgButton(IDC_RADIO3,1);
break;
case 4:
CheckDlgButton(IDC_RADIO4,1);
break;
case 5:
CheckDlgButton(IDC_RADIO5,1);
break;
case 6:
CheckDlgButton(IDC_RADIO6,1);
break;
case 7:
CheckDlgButton(IDC_RADIO7,1);
break;
case 8:
CheckDlgButton(IDC_RADIO8,1);
break;
}
 
return TRUE;  // return TRUE unless you set the focus to a control
// Исключение: страница свойств OCX должна возвращать значение FALSE
}

После отображения диалогового окна при каждом щелчке на одном из переключателей создается приложение и передается приложению. Чтобы работать с этими сообщениями добавим обработчики в класс CRadioButtonDialog, для этого щелкните правой кнопкой мышки на каждом из переключателей и выберите в контекстном меню «добавить обработчик событий», чтобы создать обработчик сообщения для BN_CLICKED.

mfc bn_klickedТак создайте 8 обработчиков, дальше и добавьте в них код

код обработчиков BN_CLICKED »

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
void CRadioButtonDialog::OnBnClickedRadio1()
{
m_data=1;
}
 
 
void CRadioButtonDialog::OnBnClickedRadio2()
{
m_data=2;
}
 
 
void CRadioButtonDialog::OnBnClickedRadio3()
{
m_data=3;
}
 
 
void CRadioButtonDialog::OnBnClickedRadio4()
{
m_data=4;
}
 
 
void CRadioButtonDialog::OnBnClickedRadio5()
{
m_data=5;
}
 
 
void CRadioButtonDialog::OnBnClickedRadio6()
{
m_data=6;
}
 
 
void CRadioButtonDialog::OnBnClickedRadio7()
{
m_data=7;
}
 
 
void CRadioButtonDialog::OnBnClickedRadio8()
{
m_data=8;
}

 

Добавим пункт Menu и подпункт Dialog в нашу программу для этого зайдем в окно ресурсов выберем папку Menu и в ней меню с идентификатором IDR_test4TYPE и туда добавим новый пункт меню и подпункт.

mfc menuи добавим к этому пункту меню обработчик кликнул по нему правой клавишей мышки и выбрав пункт добавить обработчик событий…

mfc add handlerПоявится мастер обработчика событий, выберите в нем такие настройки как на рисунке ниже, мы добавляем этот обработчик к классу вида

mfc wizordКликните по кнопке Добавить/Править все у нас появился обработчик OnMenuDialog, добавим в него код для отображения диалога

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Ctest4View::OnMenuDialog()
{
CRadioButtonDialog aDlg;
 
//Установить переменную m_data в диалоговом окне
//в значение хранимое в виде
aDlg.m_data=n;
 
//Отобразить диалоговое окно в модальном режиме
//и при нажатии на кнопке ОК получить новое значение n
if(aDlg.DoModal()==IDOK)
{
n=aDlg.m_data;
}
}

Так же не забудьте подключить файл нашего класса диалога в файле вида и добавьте в класс вида закрытую переменную и инициализируйте ее единицей в конструкторе

Теперь осталось нам в функции OnDraw класса вида отобразить переменную n, естественно не забудьте ее добавить в класс вида и тип у нее int.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Ctest4View::OnDraw(CDC* pDC)
{
Ctest4Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
 
//рисуем текст
    CString str;
    str.Format(_T("Nomer - %d"),n);
    CSize textExetent=pDC->GetTextExtent(str);
    CRect rect(CPoint(100,100),textExetent);//описывающий прямоугольник
    pDC->DrawText(str,rect,DT_CENTER|DT_VCENTER|
            DT_SINGLELINE|DT_NOCLIP);
}

все компилируем и запускаем программу и при выборе пункта меню у нас появляется разные выводы переменно n в программе.

mfc applicationна этом все, если вам что не понятно пишите в комментариях, отвечу!

 

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

 

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

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

Рубрики

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

Метки

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 Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

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

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
  • ArnoldKig к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant