воскресенье, 9 апреля 2017 г.

Program3in1


Мы создаем 3 программы RadioBurron Спектор и Цветные спекторы .
Код:
  • fg = true;

    c[0] = 0x000000FF;
    c[1] = 0x00008CFF;
    c[2] = 0x0000FFD0;
    c[3] = 0x00008000;
    c[4] = 0x00CEE23A;
    c[5] = 0x00FF0000;
    c[6] = 0x008B0B8B;

    SetWindowTextW(L"Program");
    DDX_Control(pDX, IDC_RADIO1, RD1);
    DDX_Control(pDX, IDC_RADIO2, RD2);
    }

    BEGIN_MESSAGE_MAP(CProgramDlg, CDialog)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_RADIO1, &CProgramDlg::OnBnClickedRadio1)
    ON_BN_CLICKED(IDC_RADIO2, &CProgramDlg::OnBnClickedRadio2)
    ON_WM_RBUTTONDOWN()
    END_MESSAGE_MAP()


    // обработчики сообщений CProgramDlg

    BOOL CProgramDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    // Задает значок для этого диалогового окна. Среда делает это автоматически,
    // если главное окно приложения не является диалоговым
    SetIcon(m_hIcon, TRUE); // Крупный значок
    SetIcon(m_hIcon, FALSE); // Мелкий значок

    // TODO: добавьте дополнительную инициализацию
    RD1.SetCheck(0);
    RD2.SetCheck(1);

    CDialog1 dlg;
    dlg.DoModal();

    return TRUE; // возврат значения TRUE, если фокус не передан элементу управления
    }

    // При добавлении кнопки свертывания в диалоговое окно нужно воспользоваться приведенным ниже кодом,
    // чтобы нарисовать значок. Для приложений MFC, использующих модель документов или представлений,
    // это автоматически выполняется рабочей областью.

    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
    {

    Risovanie(2);

    CDialog::OnPaint();
    }
    }

    // Система вызывает эту функцию для получения отображения курсора при перемещении
    // свернутого окна.
    HCURSOR CProgramDlg::OnQueryDragIcon()
    {
    return static_cast<HCURSOR>(m_hIcon);
    }



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

    Risovanie(3);

    }


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

    Risovanie(2);
    }


    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);
    }


    }


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

    void CProgramDlg::OnRButtonDown(UINT nFlags, CPoint point)
    {
    // TODO: Add
  • your message handler code here and/or call default

    CDialog1 dlg;
    dlg.DoModal();

    CDialog::OnRButtonDown(nFlags, point);
    }

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

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

Моя літня практика 2017 Практика в моїй школі проводиться з 29.05 по 02.06. Початок у 8:30, закінчення у 13:30. Розклад: Посила...