Создаем программу "RadioButton"
1. Подготовка к работе
4) Переходим в
Solution Explorer ➡ Source Files ➡ ProgramDlg.cpp
5) В разделе void CProgramDlg::OnPaint() находим раздел else и в фигурных скобках до фразы CDialog::OnPaint(); вставляем вот этот код вместо того, что там есть сейчас:
1. Подготовка к работе
1) Открываем "Visual Studio" и устанавливаем настройки, что соответствуют нашему проекту (MFC Application)
2. Начинаем с того что:
2) Вызываем "Solution Explorer" и переходим в
Header Files ➡ RadioButtonDlg.h
3) Заменяем старый блок private: на новый:
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;
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;
Solution Explorer ➡ Source Files ➡ ProgramDlg.cpp
5) В разделе void CProgramDlg::OnPaint() находим раздел else и в фигурных скобках до фразы CDialog::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 + 70;
w.bottom = rc.bottom - 50;
dc.FillSolidRect(&w, RGB(255, 255, 255));
x1 = w.left + 100;
y1 = w.top + 50;
x2 = w.right - 80;
y2 = w.bottom - 50;
cf = 0x0000FFF2; //желтый
ck = 0x007D0000; //синий
hPenOxy = CreatePen(PS_SOLID, 4, 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);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(m);
SelectObject(dc, oldm);
CDialog::OnPaint();
}
{
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 + 70;
w.bottom = rc.bottom - 50;
dc.FillSolidRect(&w, RGB(255, 255, 255));
x1 = w.left + 100;
y1 = w.top + 50;
x2 = w.right - 80;
y2 = w.bottom - 50;
cf = 0x0000FFF2; //желтый
ck = 0x007D0000; //синий
hPenOxy = CreatePen(PS_SOLID, 4, 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);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(m);
SelectObject(dc, oldm);
CDialog::OnPaint();
}
6) Идём по пути Ресурсы - Program - Program.rc - Dialog и открываем IDD_PROGRAM_DIALOG и полностью все удаляем с макета окна.
6) Переходим в :
Ресурсы ➡ Program ➡ Program.rc ➡ Dialog ➡
IDD_PROGRAM_DIALOG
IDD_PROGRAM_DIALOG
7) Полностью все удаляем с макета окна, не забыв вбить его в точку.
Все готово!
Все готово!
Комментариев нет:
Отправить комментарий