Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

субота, 22 квітня 2017 р.

Програма "Мішень"


Наша мета зробити програму, яка намалює ось це:


Запускаємо






1) Відкриваємо ProgramDlg.h та опускаємось до самого низу

2)Після "};" пишемо: 


protected:
HICON m_hIcon;


virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()

private:

HPEN hPenOxy, hOldPen;
HBRUSH m, oldm, brush;
HPEN pen;

COLORREF cf, c[25];


CPen d, oldd;

CBitmap pic;
CRect rc, w, kw[12];

CString ms, t, z;


int Matrix[50][50];

int RH, RW, k, i, j, cx, cy, dx, dy;
bool fg;


3)Відкриваємо файл ProgramDlg.cpp

4) Після "CDialog::DoDataExchange(pDX);" пишемо код:

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


fg = true;



5)Під "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) / 7;

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

  float h;

  h = 9 / 2;


  for (k = 0; k < 7; k++)

  {
   hPenOxy = CreatePen(PS_SOLID, 2,c[6-k]);
   hOldPen = (HPEN)SelectObject(dc, hPenOxy);
   m = CreateSolidBrush(c[6-k]);
   oldm = (HBRUSH)dc.SelectObject(m);
   //dc.Rectangle(rc.left+k*dx, rc.top, rc.left + (k+1)*dx, rc.bottom);
   dc.Rectangle(150+rc.left+k*dx/h,60+ rc.top + k*dy/h, rc.right-k*dx/h-150, rc.bottom - k*dy/h-60);
  }
 
  hPenOxy = CreatePen(PS_SOLID, 6, RGB(255,255,255));
  hOldPen = (HPEN)SelectObject(dc, hPenOxy);
  /*
  for (k = 0; k < 6; k++)
  {
   dc.MoveTo(rc.left + (k + 1)*dx, rc.top);
   dc.LineTo(rc.left + (k + 1)*dx, rc.bottom);
   dc.MoveTo(rc.left, rc.top + (k + 1)*dy);
   dc.LineTo(rc.right, rc.top + (k + 1)*dy);
  }
  */

  DeleteObject(m);

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



Дякую за увагу!!!

Немає коментарів:

Дописати коментар