среда, 15 марта 2017 г.

         Моделювання. Математичне моделювання




// ProgramDlg.cpp : файл реализации
//

#include "stdafx.h"
#include "Program.h"
#include "ProgramDlg.h"
#include "afxdialogex.h"




#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// диалоговое окно CProgramDlg

CProgramDlg::CProgramDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CProgramDlg::IDD, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CProgramDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);

    c[0] = 0xFF00FF;
    c[1] = 0xFFA500;
    c[2] = 0xFFFF;
    c[3] = 0x0C7800;
    c[4] = 0x005690;
    c[5] = 0xFFFF0000;
    c[6] = 0xCC00AA;
    c[7] = 0xAA5600;
    c[8] = 0xAAAA;
    c[9] = 0x00CC00;
    c[10] = 0x090056;
    c[11] = 0xF0F0F0;

    fg = true;

    SetWindowTextW(L"Program");

}

BEGIN_MESSAGE_MAP(CProgramDlg, CDialog)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
END_MESSAGE_MAP()

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

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

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

    // TODO: добавьте дополнительную инициализацию

    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
    {
       CClientDC dc(this);
       GetClientRect(&rc);

       w.left = rc.left+200;
       w.right = rc.right-150;
       w.top = rc.top + 100;
       w.bottom = rc.bottom-20;

       dc.FillSolidRect(&w, RGB(255, 255, 255));

       kw[0].left = w.left + 50;
       kw[0].top = w.top + 25;
       kw[0].right = w.right - 90;
       kw[0].bottom = w.bottom - 30;

       hPenOxy = CreatePen(PS_SOLID, 2, 0x008B0000);//создаем кисть цветом "crOxy"
       hOldPen = (HPEN)SelectObject(dc, hPenOxy);

       //dc.FillSolidRect(&kw[0], RGB(0, 0, 0));
       dc.Rectangle(&kw[0]);
       dc.Ellipse(&kw[0]);


       //hbk = (HFONT)::GetStockObject(SYSTEM_FONT);
       //hNew = CreateFont(44, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Penta");

       //t = "Эта именно ТА САМАЯ фраза";

       //hold = (HFONT)SelectObject(dc, hNew);
       //SetTextColor(dc, c[5]);
       //dc.TextOutW(75, 80, t, t.GetLength());

       //hold = (HFONT)SelectObject(dc, hbk);

       SelectObject(dc, hOldPen);
       DeleteObject(hPenOxy);
      
       CDialog::OnPaint();
    }
}

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


 HPEN hPenOxy, hOldPen








// ProgramDlg.cpp : файл реализации
//

#include "stdafx.h"
#include "Program.h"
#include "ProgramDlg.h"
#include "afxdialogex.h"




#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// диалоговое окно CProgramDlg



CProgramDlg::CProgramDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CProgramDlg::IDD, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CProgramDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);

    c[0] = 0xFF00FF;
    c[1] = 0xFFA500;
    c[2] = 0xFFFF;
    c[3] = 0x0C7800;
    c[4] = 0x005690;
    c[5] = 0xFFFF0000;
    c[6] = 0xCC00AA;
    c[7] = 0xAA5600;
    c[8] = 0xAAAA;
    c[9] = 0x00CC00;
    c[10] = 0x090056;
    c[11] = 0xF0F0F0;

    fg = true;

    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)
END_MESSAGE_MAP()


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

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

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

    // TODO: добавьте дополнительную инициализацию
    RD1.SetCheck(0);
    RD2.SetCheck(1);
    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
    {
       CClientDC dc(this);
       GetClientRect(&rc);

       w.left = rc.left+200;
       w.right = rc.right-150;
       w.top = rc.top + 100;
       w.bottom = rc.bottom-20;

       dc.FillSolidRect(&w, RGB(255, 255, 255));

       kw[0].left = w.left + 50;
       kw[0].top = w.top + 25;
       kw[0].right = w.right - 90;
       kw[0].bottom = w.bottom - 30;

       hPenOxy = CreatePen(PS_SOLID, 2, 0x00E29897);
       hOldPen = (HPEN)SelectObject(dc, hPenOxy);
       m = CreateSolidBrush(0x003CD8FF);
       oldm = (HBRUSH)dc.SelectObject(m);

       dc.Rectangle(&kw[0]);
        //dc.Ellipse(&kw[0]);


       SelectObject(dc, hOldPen);
       DeleteObject(hPenOxy);
       DeleteObject(m);
       SelectObject(dc, oldm);
      
       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);

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

    w.left = rc.left + 200;
    w.right = rc.right - 150;
    w.top = rc.top + 100;
    w.bottom = rc.bottom - 20;

    dc.FillSolidRect(&w, RGB(255, 255, 255));

    kw[0].left = w.left + 50;
    kw[0].top = w.top + 25;
    kw[0].right = w.right - 90;
    kw[0].bottom = w.bottom - 30;

    hPenOxy = CreatePen(PS_SOLID, 2, 0x00E29897);
    hOldPen = (HPEN)SelectObject(dc, hPenOxy);
    m = CreateSolidBrush(0x003CD8FF);
    oldm = (HBRUSH)dc.SelectObject(m);

    //dc.Rectangle(&kw[0]);
    dc.Ellipse(&kw[0]);


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


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 + 100;
    w.bottom = rc.bottom - 20;

    dc.FillSolidRect(&w, RGB(255, 255, 255));

    kw[0].left = w.left + 50;
    kw[0].top = w.top + 25;
    kw[0].right = w.right - 90;
    kw[0].bottom = w.bottom - 30;

    hPenOxy = CreatePen(PS_SOLID, 2, 0x00E29897);
    hOldPen = (HPEN)SelectObject(dc, hPenOxy);
    m = CreateSolidBrush(0x003CD8FF);
    oldm = (HBRUSH)dc.SelectObject(m);

    dc.Rectangle(&kw[0]);
    //dc.Ellipse(&kw[0]);


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


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

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