}
Label1->Caption = CurrentStage+1;
n++;
//Сообщаем о перемещении программе контроля
if(hFileMapMassiv)
pMessToContr[PROGNUM] = CurrentStage;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::StartClick(TObject *Sender)
{
if(SelectedStage != CurrentStage)
{
//Закрываем двери - поехали!
open_flag = false;
DoorTimer->Enabled = true;
Moving(CurrentStage, SelectedStage);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DoorTimerTimer(TObject *Sender)
{
if(open_flag)
{
DoorPanel1->Width = DoorPanel1->Width - 10;
DoorPanel2->Left = DoorPanel2->Left + 10;
DoorPanel2->Width = DoorPanel2->Width - 10;
}
else
{
DoorPanel1->Width = DoorPanel1->Width + 10;
DoorPanel2->Left = DoorPanel2->Left - 10;
DoorPanel2->Width = DoorPanel2->Width + 10;
}
open_s++;
if(open_s == 9)
{
open_s = 0;
DoorTimer->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
Image5->Width = MainForm->Width;
Image5->Height = MainForm->Height;
// Определяем номер лифта (копии программы)
if(_argc > 1)
{
PROGNUM = StrToInt(_argv[1]);
AnsiString buf = MainForm->Caption;
buf += " ";
buf += PROGNUM+1;
MainForm->Caption = buf;
}
else PROGNUM = 1;
int len = sizeof(HOUSE);
// Открываем регион памяти для очереди сообщений основной программе
hFileMapMassiv = OpenFileMapping(FILE_MAP_ALL_ACCESS,
false,
"HOUSE");
if(!hFileMapMassiv)
{
ShowMessage("Не могу открыть отображение для очереди сообщений");
return;
}
// Отображаем в адресное пространство процесса (с явным преобразованием типа)
pMessToContr = (int*)MapViewOfFile(hFileMapMassiv,FILE_MAP_ALL_ACCESS,
0,0,len);
if(pMessToContr == NULL)
{
ShowMessage("Не могу отобразить а адресное пространство процесса");
CloseHandle(hFileMapMassiv);
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
if(hFileMapMassiv) CloseHandle(hFileMapMassiv);
if(pMessToContr) UnmapViewOfFile(pMessToContr);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt9Click(TObject *Sender)
{
if(CurrentStage != 8 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 8;
Bt9->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt1Click(TObject *Sender)
{
if(CurrentStage != 0 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 0;
Bt1->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt8Click(TObject *Sender)
{
if(CurrentStage != 7 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 7;
Bt8->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt7Click(TObject *Sender)
{
if(CurrentStage != 6 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 6;
Bt7->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt6Click(TObject *Sender)
{
if(CurrentStage != 5 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 5;
Bt6->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt5Click(TObject *Sender)
{
if(CurrentStage != 4 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 4;
Bt5->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt4Click(TObject *Sender)
{
if(CurrentStage != 3 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 3;
Bt4->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt3Click(TObject *Sender)
{
if(CurrentStage != 2 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 2;
Bt3->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Bt2Click(TObject *Sender)
{
if(CurrentStage != 1 )
{
ClearColor(SelectedStage, clCream);
SelectedStage = 1;
Bt2->Color = clYellow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClearColor(int Stage, TColor Cvet)
{
switch(Stage)
{
case 0: Bt1->Color = Cvet; break;
case 1: Bt2->Color = Cvet; break;
case 2: Bt3->Color = Cvet; break;
case 3: Bt4->Color = Cvet; break;
case 4: Bt5->Color = Cvet; break;
case 5: Bt6->Color = Cvet; break;
case 6: Bt7->Color = Cvet; break;
case 7: Bt8->Color = Cvet; break;
case 8: Bt9->Color = Cvet; break;
};
}
//---------------------------------------------------------------------------
Список литературы:
1. Программирование в C++ Builder. А.Я. Архангельский, Бином, Москва, 2003.- 1151 с.
2. Конспект лекций по курсу Операционные системы лектор Родников В.В. 2009г.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.