Министерство образования и науки Российской Федерации
ГОУВПО «Комсомольский–на–Амуре
государственный технический университет»
Кафедра математического обеспечения и применения ЭВМ
Лабораторная работа №5
по дисциплине «ЧМВ»
тема «ОРГАНИЗАЦИЯ ИНТЕРФЕЙСА В WINDOWS»
Группа: 5ВТ-1
Студент:
Преподаватель: А,
Комсомольск-на-Амуре
2007
Задание
Создание пользовательского интерфейса в среде визуального программирования BORLAND C++ BUILDER 6.0.
ПРИМЕР 1 (Нахождение корней уравнение методом касательных):
Шаг 1:
Создание самого интерфейса:
Рис.1
На рис.1. Показаны элементы, за счет которых пользователь осуществляет диалог с компьютером.
Исходный код программы:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float f(float x)
{
int a,b,c,d;
a=StrToInt(Form1->Edit3->Text);
b=StrToInt(Form1->Edit4->Text);
c=StrToInt(Form1->Edit5->Text);
d=StrToInt(Form1->Edit6->Text);
return (a*x*x*x+b*x*x+c*x+d);
}
float fpro(float x)
{ int e,f,g,h;
e=StrToInt(Form1->Edit3->Text);
f=StrToInt(Form1->Edit4->Text);
g=StrToInt(Form1->Edit5->Text);
return (e*3*x*x+f*2*x+g);}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Form1->Edit3->Text==""||Form1->Edit4->Text==""||Form1->Edit5->Text==""||Form1->Edit6->Text=="")
{
MessageBox(NULL,"Внимание, вам необходимо/nввести значения констант!","Error",MB_ICONINFORMATION);
}
float eps=0.001, m=3.03;
float x0=0, x_current, x_next;
x_current=x0;
do {
x_next=x_current-f(x_current)/fpro(x_current);
x_current=x_next;
}while(fabs(f(x_next))>=m*eps);
Form1->Edit1->Text=x_next;
Form1->Edit2->Text=f(x_next);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
MessageBox(NULL,"Action + (c)\n . Р.Н.\nКнАГТУ\n2007-2008","About...",MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
Результат:
Пример 2 (Закраска области методом простого ЦДА с использованием XOR):
В данном примере пользователь задает параметры выводимой фигуры сам:
Исходный код программы:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <SysUtils.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
TCanvas *DC;
int maxX, maxY;
void pcda(int, int, int, int);
void __fastcall TForm1::ReSize(TObject *Sender)
{
DC = Form1->Image1->Canvas;
int i, j;
maxX = Form1->Image1->Width, maxY = Form1->Image1->Height;
DC->Pen->Width = 3;
DC->Pen->Mode = pmXor;
int a1,a2,a3;
a1=StrToInt(Edit19->Text);
a2=StrToInt(Edit20->Text);
a3=StrToInt(Edit21->Text);
DC->Pen->Color = RGB(a1, a2, a3);
TRect rect;
rect.left = 0;
rect.right = maxX;
rect.top = 0;
rect.bottom = maxY;
DC->FillRect(rect);
}
//---------------------------------------------------------------------------
void pcda(int x0, int y0, int x1, int y1)
{
int n, curx = x0, cury = y0, i;
float dx, dy, mem = 0.5;
n = abs(x1 - x0);
if (n < abs(y1 - y0))
n = abs(y1 - y0);
dx = (0. + x1 - x0) / n;
dy = (0. + y1 - y0) / n;
if (dx == 1 || dx == -1)
{
for (i = 0; i < n; ++i)
{
DC->MoveTo(curx, cury);
DC->LineTo(curx, cury);
curx += dx;
mem += dy;
DC->Pen->Width = 1;
if (mem >= 1)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.