Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С++_навч_пос14_new.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.86 Mб
Скачать

Створення сервера corba

Перед початком роботи установіть Borland VisiBroker for C++ 4.5 в папку c:\Inprise\vbroker

1 Закрийте існуючі проекти: File/Close All

2 Вибрати прапорці на View/Toolbars/CORBA і Tools/VisiBroker SmartAgent

3 Створіть CORBA сервер: File/New/Other/Multitier/CORBA Server

4 Виберіть тип серверу: Console Applcation та добавте новий IDL файл: Add New IDL File

5 У файл з розширенням .idl вставте код:

module MyModule

{

interface My

{

float f(in float x);

};

};

6 Збережіть усе: File Save All, назвіть файл .idl MyServ, а проект Server

7 Вкажіть шлях до бібліотек vboker: Project/Options/Directories|Conditionals

Натисніть кнопку "..." справа від Include Path і виправте $(VBROKERDIR)\include на C:\Inprise\vbroker\include

Натисніть кнопку "..." справа від Library Path і виправте $(VBROKERDIR)\lib на C:\Inprise\vbroker\lib

8 Натисніть кнопку New CORBA Object Implementation

9 Виберіть Interface Name: MyModule::My, та виберіть Show Updates

10 У вікні Project Updates натисніть Ok

11 Змініть реалізацію функції f наступним чином:

CORBA::Float MyImpl::f(CORBA::Float _x)

{

return (_x*_x);

}

12 Скомпілюйте проект: Project/Build Server

Створення клієнта corba

Послідовність виконання:

1 Закрийте існуючі проекти: File/Close All

2 Створіть CORBA клієнт: File/New/Other/CORBA Client

3 Виберіть Application Type: Windows Application, добавте файл (Add IDL Files) MyServ.idl

4 Добавте на форму компоненти поле Edit і кнопку Button

5 File/Save All

6 Вкажіть шлях до бібліотек vboker

7 Натисніть кнопку Use CORBA Object (при помилці добавте в файл idl пустий рядок)

8 Виберіть Interface Name: MyModule::My

9 Добавте обробник події OnClick для Button1:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Edit1->Text=my->f(StrToFloat(Edit1->Text));

}

10 Скомпілюйте проект: Project/Build Project1

11 Виконайте програму Server.exe і, не закриваючи її, програму Project1.exe

Наприклад, при вводі в поле числа 2 і натиску кнопки повинен появитись результат: 4

12 Бібліотека основних класів Microsoft mfc cEdit - поле редагування (1)

//обробник події BN_CLICKED (виконано натиск на кнопці)

void CMy2Dlg::OnBnClickedButton1()

{

double a,b,c;//дійсні змінні

CString s;//рядок

m_edit1.GetWindowTextW(s);//отримати текст з поля редагування

a=_wtof(s);//конвертувати в дійсне

m_edit2.GetWindowTextW(s); );//отримати текст з поля редагування

b=_wtof(s); //конвертувати в дійсне

c=a+b;

s.Format(_T("%.3f"),c);//конвертувати дійсне в рядок

m_edit3.SetWindowTextW(s);//вивести текст у поле редагування

}

CEdit - поле редагування (2)

//обробник події BN_CLICKED

void CMy4Dlg::OnBnClickedButton2()

{

double x;//дійсна змінна

UpdateData();//помістити дані з поля редагування у рядок s1 типу CString

x=_wtof(s1); //конвертувати в дійсне

x+=1;//добавити 1

s1.Format(_T("%10.3f"),x);//конвертувати дійсне в рядок

UpdateData(false);//помістити дані з рядка s1 у поле редагування

}

CButton - прапорець

//обробник події BN_CLICKED

void CMy5Dlg::OnBnClickedButton1()

{

UpdateData();//помістити дані з елементів керування у змінні

if (chk1) chk1=false;//якщо прапорець установлений то забрати його

else chk1=true;//інакше установити його

UpdateData(false);//помістити дані зі змінних у елементи керування

}

CButton - кнопка (1)

//обробник події BN_CLICKED

void CMy2Dlg::OnBnClickedButton1()

{

m_button1.SetWindowTextW(L"hello");//змінити надпис на кнопці m_button1 класу CButton

}

CButton - кнопка (2)

//обробник події BN_CLICKED

void CMy2Dlg::OnBnClickedButton1()

{

wchar_t s2[64];//рядок типу wchar_t

static int i=0;//статична змінна цілого типу

_itow(i++,s2,10);//збільшити на 1 і конвертувати в рядок

CString s=L"Click ";//рядок типу CString

s+=s2;//добавити до рядка s рядок s2

m_button1.SetWindowTextW(s);//установити надпис на кнопці

}

CButton - перемикач

//обробник події BN_CLICKED

void CMy5Dlg::OnBnClickedButton1()

{

CButton *b=(CButton*)GetDlgItem(IDC_RADIO1);//отримати вказівник типу CButton * на об’єкт з ідентифікатором IDC_RADIO1

if (b->GetCheck()==BST_UNCHECKED)//якщо перемикач b не вибрано

{

b->SetCheck(BST_CHECKED);//вибрати його

b->SetWindowTextW(L"Checked");//установити надпис на перемикачі

}

else //інакше

{

b->SetCheck(BST_UNCHECKED);//установити невибраний стан

b->SetWindowTextW(L"Unchecked");}//установити надпис на перемикачі

}

//обробник події BN_CLICKED

void CMy5Dlg::OnBnClickedRadio1()

{

CWnd *w=GetDlgItem(IDC_STATIC); //отримати вказівник типу CWnd * на об’єкт з ідентифікатором IDC_STATIC (Group Box)

w->SetWindowTextW(L"1");//установити надпис на IDC_STATIC

}

//обробник події BN_CLICKED

void CMy5Dlg::OnBnClickedRadio2()

{

CWnd *w=GetDlgItem(IDC_STATIC); //отримати вказівник типу CWnd * на об’єкт з ідентифікатором IDC_STATIC (Group Box)

w->SetWindowTextW(L"2");//установити надпис на IDC_STATIC

}