Хелпикс

Главная

Контакты

Случайная статья





Лабораторная работа №7. Работа с блоками диалога c помощью библиотеки MFC. Подключение ресурсов.. Пример.. Условие задачи.



Лабораторная работа №7

Работа с блоками диалога c помощью библиотеки MFC

 

Цель работы:приобрести навыки в использовании блоков диалога с помощью библиотеки MFC.

 

Задание.К лабораторной работе №6 добавить вызовы блоков диалога: одного пользовательского и двух стандартных. Блоки диалога должны вызываться по нажатию на клавиши. Элементы управление на пользовательском блоке диалога можно создавать как программно, так и с помощью редактора ресурсов. Обрабатываемые клавиши и действия блоков диалога определить по варианту.

 

Подключение ресурсов.

 

1. Добавляем в проект файл ресурсов

 

2. Вставляем новый ресурс

 

 

3. На блок диалога можно помещать элементы управления с помощью инструментов из закладки Toolbox.

 

 

4. Подключаем в тексте программы заголовочный файл resource.h, который создаётся вместе с файлом ресурсов.

 

Пример.

Условие задачи.

Пользовательский блок диалога 1) вызывается по клавише ...; 2) выполняет действия … Первый стандартный блок диалога 1) вызывается по клавише …; 2) выполняет действия … Второй стандартный блок диалога 1) вызывается по клавише …; 2) выполняет действия …
  1) F2; 2) вводит координаты начала и длину отрезков полилинии с помощью текстовых полей (предполагается, что отрезки полилинии все одинаковой длины). 1) стрелка вниз; 2) стандартный блок диалога выбора цвета вводит цвет пера полилинии. 1) delete; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.

#include <afxwin.h>

#include <afxdlgs.h>

#include "resource.h"

 

 

class CDial : public CDialog {

double x,y,len;

public:

CDial():CDialog(IDD_DIALOG1, NULL) {

       x=1;

       y=1;

       len=10;

}

void SetValue(double, double, double);

void GetValue(double *, double *, double *);

void DoDataExchange(CDataExchange* pDX);

};

 

void CDial::SetValue(double x, double y, double len) {

this->x=x;

this->y=x;

this->len=len;

}

 

void CDial::GetValue(double *x, double *y, double *len) {

*x=this->x;

*y=this->y;

*len=this->len;

}

 

void CDial::DoDataExchange( CDataExchange* pDX) {

CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDX, x);

DDX_Text(pDX, IDC_EDY, y);

DDX_Text(pDX, IDC_EDLENGTH, len);

}

 

class CWin: public CFrameWnd

{

LOGFONT lf;

COLORREF colfont,colpen;

double x,y,len;

public:

CWin();

void OnPaint();

void OnKeyDown(UINT nChar,UINT nRepCnt, UINT nFlags);

DECLARE_MESSAGE_MAP();

};

 

BEGIN_MESSAGE_MAP(CWin,CFrameWnd)

ON_WM_PAINT()

ON_WM_KEYDOWN()

END_MESSAGE_MAP()

 

CWin::CWin()

{

CRect rt;

GetClientRect(&rt);

Create(0,"Заголовок");

ZeroMemory(&lf,sizeof(lf));

lf.lfHeight=20;

lf.lfItalic=1;

lf.lfWeight=FW_BOLD;

strcpy(lf.lfFaceName,"Arial");

colfont=RGB(255,0,0);

colpen=RGB(0,255,0);

x=rt.Width()/2.0;

y=rt.Height()/2.0;

len=10;

}

 

 

void CWin::OnKeyDown(UINT nChar,UINT nRepCnt, UINT nFlags)

{

CDial dlg;

CColorDialog cd(colpen);

CFontDialog fd(&lf);

switch(nChar)

{

case VK_F2:

           

       dlg.SetValue(x,y,len);

       if (dlg.DoModal()==IDOK)

       {

             dlg.GetValue(&x,&y, &len);

             Invalidate();

       }

       break;

case VK_DOWN:

       if (cd.DoModal()==IDOK) {

             colpen=cd.GetColor();

             Invalidate();

       }

 

       break;

case VK_DELETE:

       fd.m_cf.rgbColors=colfont;

       if (fd.DoModal()==IDOK) {

             fd.GetCurrentFont(&lf);

             colfont=fd.GetColor();

             Invalidate();

       }

       break;

}

}

void CWin::OnPaint()

{

CPaintDC dc(this);

CRect rt;

CPoint p[5];

CPen pen;

CFont font;

TEXTMETRIC tm;

GetClientRect(&rt);

pen.CreatePen(PS_SOLID,2,colpen);

dc.SelectObject(pen);

p[0].x=rt.Width()/2;

p[0].y=rt.Height()/2;

p[1].x=rt.Width()/2-long(len);

p[1].y=rt.Height()/2;

p[2].x=rt.Width()/2;

p[2].y=rt.Height()/2+long(len);

p[3].x=rt.Width()/2-long(len);

p[3].y=rt.Height()/2;

p[4].x=rt.Width()/2;

p[4].y=rt.Height()/2-long(len);

dc.Polyline(p,5);

font.CreateFontIndirect(&lf);

dc.SelectObject(font);

dc.SetTextColor(colfont);

dc.GetTextMetrics(&tm);

dc.TextOut(rt.Width()-tm.tmAveCharWidth*4,rt.Height()-tm.tmHeight,"text",4);

font.DeleteObject();

pen.DeleteObject();

 

 

}

 

class CApp: public CWinApp

{

public:

BOOL InitInstance();

};

 

BOOL CApp::InitInstance()

{

CWin *pWnd=new CWin;

pWnd->ShowWindow(SW_SHOW);

m_pMainWnd=pWnd;

return TRUE;

}

 

CApp app;

Содержание отчёта

 

1. Титульный лист.

2. Условие лабораторной работы.

3. Текст программы.

4. Экранные формы с примерами работы программы.

 

 

Варианты заданий.

 

Пользовательский блок диалога 1) вызывается по клавише ...; 2) выполняет действия … Первый стандартный блок диалога 1) вызывается по клавише …; 2) выполняет действия … Второй стандартный блок диалога 1) вызывается по клавише …; 2) выполняет действия …
1) F4; 2) вводит ширину и высоту прямоугольника с помощью текстовых полей. 1) стрелка вверх; 2) стандартный блок диалога выбора цвета вводит цвет кисти прямоугольника 1) insert; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F5; 2) вводит координаты левого верхнего угла битового массива с помощью двух текстовых полей 1) стрелка вниз; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие координаты левого верхнего угла битового массива. 1) стрелка вверх; 2) стандартный блок открытия файла диалога определяет имя и путь к текстовому файлу, из которого надо загрузить координаты левого верхнего угла битового массива и переместить его в указанное место.
1) F1; 2) вводит координаты правого нижнего угла прямоугольника с закруглёнными углами помощью текстовых полей. 1) стрелка влево; 2) стандартный блок диалога выбора цвета вводит цвет пера прямоугольника с закруглёнными углами 1) стрелка вправо; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F2; 2) вводит координаты первого отрезка полилинии с помощью текстовых полей. 1) insert; 2) стандартный блок диалога выбора цвета вводит цвет пера полилинии 1) delete; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F3; 2) вводит координаты первой точки линии с помощью текстовых полей 1) F4; 2) стандартный блок диалога выбора цвета вводит цвет пера линии 1) F5; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F6; 2) вводит координаты левого верхнего угла прямоугольника, в который в писан эллипс, частью которого является сектор, с помощью текстовых полей 1) F7; 2) стандартный блок диалога выбора цвета вводит цвет пера для сектора 1) F8; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F9; 2) вводит ширину и высоту битового массива с помощью двух текстовых полей (битовый массив рисовать с помощью функции StretchBlt) 1) стрелка влево; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие ширину и высоту битового массива. 1) стрелка вправо; 2) стандартный блок открытия файла диалога определяет имя и путь к текстовому файлу, из которого надо загрузить ширину и высоту битового массива и перерисовать его с указанными размерами.
1) F1; 2) вводит координаты нижнего конца линии с помощью двух текстовых полей. 1) insert; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие координаты нижнего конца линии. 1) delete; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F4; 2) вводит координаты правого нижнего угла прямоугольника с помощью текстовых полей. 1) стрелка вверх; 2) стандартный блок диалога выбора цвета вводит цвет пера прямоугольника 1) insert; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F8; 2) вводит стиль штриховки сектора с помощью списка. 1) стрелка вправо; 2) стандартный блок диалога выбора цвета вводит цвет кисти сектора. 1) стрелка влево; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F9; 2) вводит стиль пера для рисования хорды с помощью комбинированного списка. 1) стрелка вниз; 2) стандартный блок диалога выбора цвета вводит цвет пера хорды. 1) стрелка вверх; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F2; 2) вводит стиль пера для рисования линии с помощью списка. 1) F4; 2) стандартный блок диалога выбора цвета вводит цвет пера линии. 1) F6; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущий стиль пера.
1) F3; 2) вводит координаты правого нижнего  угла битового массива с помощью двух текстовых полей 1) F7; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие координаты правого нижнего угла битового массива. 1) F9; 2) стандартный блок открытия файла диалога определяет имя и путь к текстовому файлу, из которого надо загрузить координаты правого нижнего угла битового массива и переместить его в указанное место.
1) F1; 2) вводит стиль штриховки для рисования хорды с помощью списка. 1) F2; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущий стиль кисти. 1) F3; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F4; 2) вводит стиль пера для рисования полилинии с помощью группы радиокнопок. 1) F5; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущий стиль пера. 1) F6; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F7; 2) вводит стиль штриховки для рисования прямоугольника с помощью группы радиокнопок. 1) F8; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущий стиль штриховки. 1) F9; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F2; 2) вводит координаты верхнего конца линии с помощью двух текстовых полей. 1) стрелка вниз; 2) стандартный блок диалога выбора цвета вводит цвет пера линии. 1) стрелка вверх; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие координаты верхнего конца линии.
1) F1; 2) вводит координаты правого верхнего  угла битового массива с помощью двух текстовых полей 1) F2; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие координаты правого верхнего угла битового массива. 1) F3; 2) стандартный блок открытия файла диалога определяет имя и путь к текстовому файлу, из которого надо загрузить координаты правого верхнего угла битового массива и переместить его в указанное место.
1) F2; 2) вводит левого нижнего угла прямоугольника с помощью текстовых полей. 1) стрелка влево; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие координаты левого нижнего угла прямоугольника. 1) стрелка вправо; 2) стандартный блок открытия файла диалога определяет имя и путь к текстовому файлу, из которого надо загрузить координаты левого прямоугольника угла битового массива и переместить его в указанное место.
1) F9; 2) вводит стиль штриховки для рисования пяти угольника с помощью группы радиокнопок. 1) F8; 2) стандартный блок диалога выбора цвета вводит цвет пера пятиугольника. 1) F7; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущий стиль кисти.
1) F2; 2) вводит координаты центра эллипса с помощью двух текстовых полей. 1) delete; 2) стандартный блок диалога выбора цвета вводит цвет кисти эллипса 1) стрелка вверх; 2) стандартный блок диалога выбора шрифта вводит шрифт для надписи.
1) F6; 2) вводит координаты левого нижнего угла битового массива с помощью двух текстовых полей 1) стрелка вниз; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие координаты левого нижнего угла битового массива. 1) стрелка вверх; 2) стандартный блок открытия файла диалога определяет имя и путь к текстовому файлу, из которого надо загрузить координаты левого нижнего угла битового массива и переместить его в указанное место.
1) F2; 2) вводит координаты длины полуосей эллипса с помощью двух текстовых полей. 1) стрелка влево; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущие длины полуосей эллипса. 1) стрелка вправо; 2) стандартный блок открытия файла диалога определяет имя и путь к текстовому файлу, из которого надо загрузить длины полуосей эллипса и перерисовать его с указанными размерами.
1) F4; 2) вводит стиль пера для рисования линии с помощью группы радиокнопок. 1) F2; 2) стандартный блок диалога выбора цвета вводит цвет пера линии. 1) F3; 2) стандартный блок диалога сохранения файла определяет имя и путь к текстовому файлу, в котором надо сохранять текущий стиль пера. Правый верхний угол


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.