Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

середа, 22 березня 2017 р.

Створення програми ProgramRadioButton

Всім привіт! Сьогодні я розповім вам, як створити примітивну програму.
Вона просто малює квадрат і круг жовтого кольору з синіми краями.




1. Запускаємо Visual Studio і створюємо додаток MFC.


2. Відкриваємо файл ProgramDlg.h і в кінці файлу після фрази private: стираємо все і пишемо свій код:
HPEN hPenOxy, hOldPen;
HFONT hold, hNew, hbk;
HBRUSH m, oldm;
COLORREF cf, ck, c[25];

CPen d, oldd;
CBitmap pic;
CRect rc, w, kw[12];

CString ms, t, z;
int x1, y1, x2, y2;
int Matrix[50][50];
int RH, RW, k, i, j, cx, cy, dx, dy;
bool fg;

public:
CButton RD1;
CButton RD2;
afx_msg void OnBnClickedRadio1();
afx_msg void OnBnClickedRadio2();



Тепер заходимо в ProgramDlg.cpp і вирушаємо в середину коду і знаходимо //TODO і під ним пишемо :



// TODO: додайте додаткову ініціалізацію
RD1.SetCheck(0);
RD2.SetCheck(1);
return TRUE; // повернення значення "TRUE", якщо фокус не переданий елементу управління



Далі вирушаємо в самий низ де нам потрібно написати :



void CProgramDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // контекст пристрою для малювання

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Вирівнювання значка по центру клієнтського прямокутника
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Намалюйте значок
dc.DrawIcon(x, y, m_hIcon);
}


І під цим кодом додати:





else
{
CClientDC dc(this);
GetClientRect(&rc);

w.left = rc.left+200;
w.right = rc.right-150;
w.top = rc.top + 110;
w.bottom = rc.bottom-50;
dc.FillSolidRect(&w, RGB(255, 255, 255));


x1 = w.left + 70;
y1 = w.top + 20;
x2 = w.right - 70;
y2 = w.bottom - 10;

cf = 0x0000DDFF;
ck = 0x00800000;

hPenOxy = CreatePen(PS_SOLID, 6, ck);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
m = CreateSolidBrush(cf);
oldm = (HBRUSH)dc.SelectObject(m);

dc.Rectangle(x1, y1, x2, y2);
//dc.Ellipse(x1, y1, x2, y2);

DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);

CDialog::OnPaint();
}
}


Поки закінчимо з кодами і перейдемо до діалогового віконця :
Для цього заходимо : Вид-Ресурси-Program-Program.rc-Dialog-IDD_Program_Dialog.
Це є основою для нашого вікна. Ctrl+A+Delete( видаляємо непотрібне сміття з вікна).
Знаходимо панель інструментів і на наше вікно додаємо:
2 Radio Button
1 Group box ( В нього за допомогою курсору потрібно помістити 2 Radio Button'a),щоб вийшло ось так :



І називаємо наші бутони : Ellipse i Kvadrat (як показано на фото).
Тепер ПКМ по Ellipse-Add Variable-Variable name <RD1>. Ще раз ПКМ-Add Event Handler-Add and Finish. Теж саме робимо з Kvadrat,тільки в Variable name вказуємо - <RD2>.




Ми вже майже наблизилися до фінішу,залишилося тільки зайти в ProgramDlg.cpp і внести деякі зміни.Вирушаємо в низ коду і під рядком

void CProgramDlg::OnBnClickedRadio1()

Вставляємо код :

{
// TODO: Add your control notification handler code here
RD1.SetCheck(1);
RD2.SetCheck(0);
CClientDC dc(this);
GetClientRect(&rc);

w.left = rc.left + 200;
w.right = rc.right - 150;
w.top = rc.top + 110;
w.bottom = rc.bottom - 50;
dc.FillSolidRect(&w, RGB(255, 255, 255));


x1 = w.left + 70;
y1 = w.top + 20;
x2 = w.right - 70;
y2 = w.bottom - 10;

cf = 0x0000DDFF;
ck = 0x00800000;

hPenOxy = CreatePen(PS_SOLID, 6, ck);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
m = CreateSolidBrush(cf);
oldm = (HBRUSH)dc.SelectObject(m);

//dc.Rectangle(x1, y1, x2, y2);
dc.Ellipse(x1, y1, x2, y2);

DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);


}



А під рядком

void CProgramDlg::OnBnClickedRadio2()

Пишемо :

{
// TODO: Add your control notification handler code here
RD1.SetCheck(0);
RD2.SetCheck(1);

CClientDC dc(this);
GetClientRect(&rc);

w.left = rc.left + 200;
w.right = rc.right - 150;
w.top = rc.top + 110;
w.bottom = rc.bottom - 50;
dc.FillSolidRect(&w, RGB(255, 255, 255));


x1 = w.left + 70;
y1 = w.top + 20;
x2 = w.right - 70;
y2 = w.bottom - 10;

cf = 0x0000DDFF;
ck = 0x00800000;

hPenOxy = CreatePen(PS_SOLID, 6, ck);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
m = CreateSolidBrush(cf);
oldm = (HBRUSH)dc.SelectObject(m);

dc.Rectangle(x1, y1, x2, y2);
//dc.Ellipse(x1, y1, x2, y2);

DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);

}



ГОТОВО!!!!
Тепер заходимо в Локальний відладчик Windows ( або ж F5) і у нас повинна вийти ось така програма,яка при натисканні змінює фігуру кола і квадрата.


Як бачимо - усе працює.

Немає коментарів:

Дописати коментар