Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu -->

Меню

Програма в 3в1 (домашня робота)

Спочатку у DoDataExchange додаємо кольори спектру
c[0] = 0x000000FF;
c[1] = 0x0000A5FF;
c[2] = 0x0000DDFF;
c[3] = 0x00008000;
c[4] = 0x00FFFF00;
c[5] = 0x00FF0000;
c[6] = 0x00D30094;

Так, як ми робили цю програму з трьох інших програм, ми узяли за основу
програму RadioButton у OnPaint в else все стираємо й пишемо Risovanie(2);

У OnBnClickedRadio2()все стираємо й пишемо
RD1.SetCheck(0);
RD2.SetCheck(1);

Risovanie(2);
У OnBnClickedRadio1()все стираємо й пишемо
RD1.SetCheck(0);
RD2.SetCheck(1);

Risovanie(3);
В ProgramDlg.h пишемо void Risovanie(int p), а у ProgramDlg.срр у самому низу
void CProgramDlg::Risovanie(int p)
{
     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(&rc, 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);

     if (p == 0) dc.Rectangle(x1, y1, x2, y2);
     else dc.Ellipse(x1, y1, x2, y2);

     if ((p == 2) || (p == 3))
     {
         rc.left += 180;
         rc.right -= 180;
         rc.top += 20;
         rc.bottom -= 20;

         dx = abs(rc.right - rc.left) / 7;
         dy = abs(rc.bottom - rc.top) / 7;


         for (k = 0; k < 7; k++)
         {
              hPenOxy = CreatePen(PS_SOLID, 2, c[k]);
              hOldPen = (HPEN)SelectObject(dc, hPenOxy);
              m = CreateSolidBrush(c[k]);
              oldm = (HBRUSH)dc.SelectObject(m);
              //dc.Rectangle(rc.left+k*dx, rc.top, rc.left + (k+1)*dx, rc.bottom);
              //dc.Rectangle(rc.left, rc.top + k*dy, rc.right, rc.top + (k+1)*dy);

              if(p==2) dc.Rectangle(rc.left+k*dx/2, rc.top + k*dy/2, rc.right-k*dx/2, rc.bottom-k*dy/2);
              else dc.Ellipse(rc.left + k*dx / 2, rc.top + k*dy / 2, rc.right - k*dx / 2, rc.bottom - k*dy / 2);
         }
     }

     if (p == 4)
     {
         dx = abs(rc.right - rc.left) / 7;
         dy = abs(rc.bottom - rc.top) / 7;

         for (k = 0; k < 7; k++)
         {
              //w.left = rc.left+k*dx;
              //w.right = rc.left+(k+1)*dx;
              w.top = rc.top + k*dy;
              w.bottom = rc.top + (k + 1)*dy;
              w.left = rc.left;
              w.right = rc.right;
              //w.top = rc.top;
              //w.bottom = rc.bottom;
              dc.FillSolidRect(&w, c[k]);
         }

         hPenOxy = CreatePen(PS_SOLID, 7, RGB(255, 255, 255));
         hOldPen = (HPEN)SelectObject(dc, hPenOxy);

         for (k = 0; k < 7; k++)
         {
              dc.MoveTo(rc.left + k*dx, rc.top);
              dc.LineTo(rc.left + k*dx, rc.bottom);

              dc.MoveTo(rc.left, rc.top + k*dy);
              dc.LineTo(rc.right, rc.top + k*dy);
         }

     }

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


Потім ми копіюємо Dialog з’єднуємо вікна і у Dialog1.cpp додруковуємо  
void CDialog1::Risovanie(int p)
{
     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(&rc, 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);

     if (p == 0) dc.Rectangle(x1, y1, x2, y2);
     else dc.Ellipse(x1, y1, x2, y2);

     if ((p == 2) || (p == 3))
     {
         rc.left += 180;
         rc.right -= 180;
         rc.top += 20;
         rc.bottom -= 20;

         dx = abs(rc.right - rc.left) / 7;
         dy = abs(rc.bottom - rc.top) / 7;


         for (k = 0; k < 7; k++)
         {
              hPenOxy = CreatePen(PS_SOLID, 2, c[k]);
              hOldPen = (HPEN)SelectObject(dc, hPenOxy);
              m = CreateSolidBrush(c[k]);
              oldm = (HBRUSH)dc.SelectObject(m);
              //dc.Rectangle(rc.left+k*dx, rc.top, rc.left + (k+1)*dx, rc.bottom);
              //dc.Rectangle(rc.left, rc.top + k*dy, rc.right, rc.top + (k+1)*dy);

              if (p == 2) dc.Rectangle(rc.left + k*dx / 2, rc.top + k*dy / 2, rc.right - k*dx / 2, rc.bottom - k*dy / 2);
              else dc.Ellipse(rc.left + k*dx / 2, rc.top + k*dy / 2, rc.right - k*dx / 2, rc.bottom - k*dy / 2);
         }
     }

     if (p == 4)
     {
         dx = abs(rc.right - rc.left) / 7;
         dy = abs(rc.bottom - rc.top) / 7;

         for (k = 0; k < 7; k++)
         {
              //w.left = rc.left+k*dx;
              //w.right = rc.left+(k+1)*dx;
              w.top = rc.top + k*dy;
              w.bottom = rc.top + (k + 1)*dy;
              w.left = rc.left;
              w.right = rc.right;
              //w.top = rc.top;
              //w.bottom = rc.bottom;
              dc.FillSolidRect(&w, c[k]);
         }

         hPenOxy = CreatePen(PS_SOLID, 7, RGB(255, 255, 255));
         hOldPen = (HPEN)SelectObject(dc, hPenOxy);

         for (k = 0; k < 7; k++)
         {
              dc.MoveTo(rc.left + k*dx, rc.top);
              dc.LineTo(rc.left + k*dx, rc.bottom);

              dc.MoveTo(rc.left, rc.top + k*dy);
              dc.LineTo(rc.right, rc.top + k*dy);
         }

     }

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

void CDialog1::OnRButtonDown(UINT nFlags, CPoint point)
{
     // TODO: Add your message handler code here and/or call default
     CProgramDlg dlg;
     EndDialog(0);
     dlg.DoModal();
     CDialog::OnRButtonDown(nFlags, point);
}


void CDialog1::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
     {

         Risovanie(4);

         CDialog::OnPaint();
     }
}

В нас вийшло 



Комментариев нет:

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

Root