Скачиваний:
26
Добавлен:
01.05.2014
Размер:
5.16 Кб
Скачать
/*  Project first

		Copyright © 1997 by US. All Rights Reserved.

		SUBSYSTEM:    first.exe Application
		FILE:         txsetupb.cpp
		AUTHOR:       US


		OVERVIEW
		========
		Source file for implementation of TXSetupC (TDialog).
*/

#include <owl\owlpch.h>
#pragma hdrstop

#include "txsetupc.h"
#include "tools.h"


//
// Build a response table for all messages/commands handled
// by the application.
//
DEFINE_RESPONSE_TABLE1(TXSetupC, TDialog)
//{{TXSetupCRSP_TBL_BEGIN}}
		EV_BN_CLICKED(IDC_NEXT-1000, NextBNClicked),
		EV_BN_CLICKED(IDC_BACK-1000, BackBNClicked),
//{{TXSetupCRSP_TBL_END}}
END_RESPONSE_TABLE;

//{{TXSetupC Implementation}}


TXSetupC::TXSetupC (TWindow* parent, FirstSetupList &results, TResId resId, TModule* module):
		TDialog(parent, resId, module),
		w_data(results), result(SetupStopped)
{

	XIIBox = new TComboBox(this, IDC_INTERTIMETYPE, NoiseGeneratorNameLength, 0);
	XIDBox = new TComboBox(this, IDC_DURATIONTYPE, NoiseGeneratorNameLength, 0);
	XIFBox = new TComboBox(this, IDC_FORCE, NoiseGeneratorNameLength, 0);
	XIFTBox = new TComboBox(this, IDC_FORCETYPE, NoiseGeneratorNameLength, 0);

	XII_EEdit = new TEdit(this, IDC_INTERTIME_E, SetupNumbersLength, 0);
	XII_DEdit = new TEdit(this, IDC_INTERTIME_D, SetupNumbersLength, 0);
	XID_EEdit = new TEdit(this, IDC_DURATION_E, SetupNumbersLength, 0);
	XID_DEdit = new TEdit(this, IDC_DURATION_D, SetupNumbersLength, 0);
	XIF_EEdit = new TEdit(this, IDC_FORCE_E, SetupNumbersLength, 0);
	XIF_DEdit = new TEdit(this, IDC_FORCE_D, SetupNumbersLength, 0);

	BackButton = new TOwnerButton(this, IDC_BACK-1000, 0);
	NextButton = new TOwnerButton(this, IDC_NEXT-1000, 0);
}


TXSetupC::~TXSetupC ()
{
		Destroy();
}

void TXSetupC::NextBNClicked ()
{
		result = SetupContinue;
		CloseWindow(IDOK);
}


void TXSetupC::BackBNClicked ()
{
		result = SetupBack;
		CloseWindow(IDCANCEL);
}


BOOL TXSetupC::CanClose ()
{
		if (!TDialog::CanClose())
			return FALSE;

		if (result == SetupContinue)
		{
			if (CheckFloatEditor(this, XII_EEdit, SetupNumbersLength, &w_data.Root->XI_Interval_E, "Мат. ожидание должно") ||
					CheckFloatEditor(this, XII_DEdit, SetupNumbersLength, &w_data.Root->XI_Interval_D, "Дисперсия должна") ||
					CheckFloatEditor(this, XID_EEdit, SetupNumbersLength, &w_data.Root->XI_Duration_E, "Мат. ожидание должно") ||
					CheckFloatEditor(this, XID_DEdit, SetupNumbersLength, &w_data.Root->XI_Duration_D, "Дисперсия должна") ||
					CheckFloatEditor(this, XIF_EEdit, SetupNumbersLength, &w_data.Root->XI_Type_E, "Мат. ожидание должно") ||
					CheckFloatEditor(this, XIF_DEdit, SetupNumbersLength, &w_data.Root->XI_Type_D, "Дисперсия должна"))
				return FALSE;

			w_data.Root->XI_IntervalRule = (NoiseType)XIIBox->GetSelIndex();
			w_data.Root->XI_DurationRule = (NoiseType)XIDBox->GetSelIndex();
			w_data.Root->XI_TypeRule = (NoiseType)XIFTBox->GetSelIndex();
		}

		return TRUE;
}


BOOL TXSetupC::EvInitDialog (HWND hWndFocus)
{
		BOOL result;
		FirstSetup *p = w_data.Root;
		unsigned index;
		char buffer[22];

		result = TDialog::EvInitDialog(hWndFocus);


		sprintf(buffer, "%lf", p->XI_Interval_E);
		killZeros(buffer);
		XII_EEdit->Clear();
		XII_EEdit->Insert(buffer);
		sprintf(buffer, "%lf", p->XI_Interval_D);
		killZeros(buffer);
		XII_DEdit->Clear();
		XII_DEdit->Insert(buffer);

		sprintf(buffer, "%lf", p->XI_Duration_E);
		killZeros(buffer);
		XID_EEdit->Clear();
		XID_EEdit->Insert(buffer);
		sprintf(buffer, "%lf", p->XI_Duration_D);
		killZeros(buffer);
		XID_DEdit->Clear();
		XID_DEdit->Insert(buffer);

		sprintf(buffer, "%lf", p->XI_Type_E);
		killZeros(buffer);
		XIF_EEdit->Clear();
		XIF_EEdit->Insert(buffer);
		sprintf(buffer, "%lf", p->XI_Type_D);
		killZeros(buffer);
		XIF_DEdit->Clear();
		XIF_DEdit->Insert(buffer);

		XIIBox->AddString("Гауссовская");
		XIIBox->AddString("Показательная");
		XIIBox->AddString("Равномерная");
		XIIBox->SetSelIndex(w_data.Root->XI_IntervalRule);
		XIDBox->AddString("Гауссовская");
		XIDBox->AddString("Показательная");
		XIDBox->AddString("Равномерная");
		XIDBox->SetSelIndex(w_data.Root->XI_DurationRule);
		XIFBox->AddString("Белый шум");
		XIFBox->SetSelIndex(0);
		XIFTBox->AddString("Гауссовская");
		XIFTBox->AddString("Показательная");
		XIFTBox->AddString("Равномерная");
		XIFTBox->SetSelIndex(w_data.Root->XI_TypeRule);

		SetDefaultId(IDC_NEXT-1000);

		return result;
}


void TXSetupC::SetupWindow ()
{
		TDialog::SetupWindow();

		// Position window to the center of desktop
		TRect dialog_pos;
		RECT desktop_pos;
		unsigned dcx, dcy, sx, sy;
		GetWindowRect(dialog_pos);
		::GetWindowRect(GetDesktopWindow(), &desktop_pos);
		dcx = desktop_pos.left + desktop_pos.right;
		dcy = desktop_pos.top + desktop_pos.bottom;
		sx = dialog_pos.right - dialog_pos.left;
		sy = dialog_pos.bottom - dialog_pos.top;
		dialog_pos.left = (dcx - sx) >> 1;
		dialog_pos.right = (dcx + sx) >> 1;
		dialog_pos.top = (dcy - sy) >> 1;
		dialog_pos.bottom = (dcy + sy) >> 1;
		MoveWindow(dialog_pos, FALSE);
}

Соседние файлы в папке SOURCE