-->

Меню

вторник, 11 апреля 2017 г.

Программа "Шахматная доска по-украински"



Простое создание этой программы заключается в что:


  1. Скачать файл Program2015.rar 
  2. Запустить его 
  3. Открываем View->Solution Explorer->Program->Source Files->ProgramDlg.cpp , удаляем содержимое и копируем вместо него код приведённый ниже.

    // 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(IDD_PROGRAM_DIALOG, pParent)
    {
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }

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


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

    dx = abs(rc.right - rc.left) / 5;
    dy = abs(rc.bottom - rc.top) / 5;
    c[0] = 0x0000F9FF;
    c[1] = 0x0000F9FF;
    c[2] = 0x00FFC72D;
    c[3] = 0x00FFC72D;

    int x1,y1, x2, y2;
    int p, pp;
    pp = 0; p = 0;
    for (k = 0; k < 5; k++)
    {
    for (i = 0; i < 5; i++)
    {
    x1 = rc.left + k*dx;
    y1 = rc.top + i*dy;
    x2 = rc.left + (k + 1)*dx;
    y2 = rc.top + (i + 1)*dy;
    if (pp %2 == 0)
    {
    p = 0;
    }
    else
    {
    p = 2;
    }
    // HPEN hPenOxy, hOldPen;
    hPenOxy = CreatePen(PS_SOLID, 8, c[p]);
    hOldPen = (HPEN)SelectObject(dc, hPenOxy);

    m = CreateSolidBrush(c[p]);
    oldm = (HBRUSH)dc.SelectObject(m);

    dc.Rectangle(x1, y1, x2, y2);
    pp++;
    }
    }


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

    CDialog::OnPaint();
    }
    }

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



  1. Запускаем программу и получаем 
  2. Программа работает 
Источник сайт