Ejemplo n.º 1
0
//---------------------------------------------------------------------------
void __fastcall TTVPMainForm::ApplicationDeactivate(TObject *Sender)
{
	ApplicationActivating = false;

	TVPHideModalAtAppDeactivate();
	TVPHideFontSelectFormAtAppDeactivate();

	TVPMinimizeFullScreenWindowAtInactivation();


	// fire compact event
	TVPDeliverCompactEvent(TVP_COMPACT_LEVEL_DEACTIVATE);

	// set application-level stay-on-top state
	if(ApplicationStayOnTop)
		SetWindowPos(Application->Handle,HWND_TOPMOST ,0,0,0,0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE);
	else
		SetWindowPos(Application->Handle,HWND_NOTOPMOST ,0,0,0,0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE);

	// set sound volume
	TVPResetVolumeToAllSoundBuffer();

	// trigger System.onDeactivate event
	TVPPostApplicationDeactivateEvent();
}
Ejemplo n.º 2
0
//---------------------------------------------------------------------------
void __fastcall TTVPMainForm::ApplicationMinimize(TObject *Sender)
{
	// fire compact event
	ApplicationNotMinimizing = false;

	TVPDeliverCompactEvent(TVP_COMPACT_LEVEL_MINIMIZE);

	// set sound volume
	TVPResetVolumeToAllSoundBuffer();
}
Ejemplo n.º 3
0
void tTVPApplication::OnDeactivate( HWND hWnd )
{
	if( hWnd != GetMainWindowHandle() ) return;

	application_activating_ = false;
	
	TVPMinimizeFullScreenWindowAtInactivation();
	
	// fire compact event
	TVPDeliverCompactEvent(TVP_COMPACT_LEVEL_DEACTIVATE);

	// set sound volume
	TVPResetVolumeToAllSoundBuffer();

	// trigger System.onDeactivate event
	TVPPostApplicationDeactivateEvent();
}
Ejemplo n.º 4
0
//---------------------------------------------------------------------------
void __fastcall TTVPMainForm::SystemWatchTimerTimer(TObject *Sender)
{
	if(TVPTerminated)
	{
		// this will ensure terminating the application.
		// the WM_QUIT message disappears in some unknown situations...
		::PostMessage(TVPMainForm->Handle, WM_USER+0x31/*dummy msg*/, 0, 0);
		Application->Terminate();
		::PostMessage(TVPMainForm->Handle, WM_USER+0x31/*dummy msg*/, 0, 0);
	}

	// call events
	DWORD tick = GetTickCount();

	// push environ noise
	TVPPushEnvironNoise(&tick, sizeof(tick));
	TVPPushEnvironNoise(&LastCompactedTick, sizeof(LastCompactedTick));
	TVPPushEnvironNoise(&LastShowModalWindowSentTick, sizeof(LastShowModalWindowSentTick));
	TVPPushEnvironNoise(&MixedIdleTick, sizeof(MixedIdleTick));
	POINT pt;
	GetCursorPos(&pt);
	TVPPushEnvironNoise(&pt, sizeof(pt));

	// CPU clock monitoring
	{
		static bool clock_rough_printed = false;
		if(!clock_rough_printed && TVPCPUClockAccuracy == ccaRough)
		{
			tjs_char msg[80];
			TJS_sprintf(msg, TJS_W("(info) CPU clock (roughly) : %dMHz"), (int)TVPCPUClock);
			TVPAddImportantLog(msg);
			clock_rough_printed = true;
		}
		static bool clock_printed = false;
		if(!clock_printed && TVPCPUClockAccuracy == ccaAccurate)
		{
			tjs_char msg[80];
			TJS_sprintf(msg, TJS_W("(info) CPU clock : %.1fMHz"), (float)TVPCPUClock);
			TVPAddImportantLog(msg);
			clock_printed = true;
		}
	}

	// check status and deliver events
	DeliverEvents();

	// call TickBeat
	tjs_int count = TVPGetWindowCount();
	for(tjs_int i = 0; i<count; i++)
	{
		tTJSNI_Window *win = TVPGetWindowListAt(i);
		win->TickBeat();
	}

	if(!ContinuousEventCalling && tick - LastCompactedTick > 4000)
	{
		// idle state over 4 sec.
		LastCompactedTick = tick;

		// fire compact event
		TVPDeliverCompactEvent(TVP_COMPACT_LEVEL_IDLE);
	}

	if(!ContinuousEventCalling && tick > LastRehashedTick + 1500)
	{
		// TJS2 object rehash
		LastRehashedTick = tick;
		TJSDoRehash();
	}

	if(LastCloseClickedTick && tick - LastCloseClickedTick > 3100)
	{
		// display force suicide confirmation form
		if(TVPHaltWarnForm)
		{
			TVPHaltWarnForm->Visible = true;
		}
		else
		{
			TVPHaltWarnForm = new TTVPHaltWarnForm(Application);
			TVPHaltWarnForm->Visible = true;
		}
	}

	// ensure modal window visible
	if(tick > LastShowModalWindowSentTick + 4100)
	{
		//	::PostMessage(Handle, WM_USER+0x32, 0, 0);
		// This is currently disabled because IME composition window
		// hides behind the window which is bringed top by the
		// window-rearrangement.
		LastShowModalWindowSentTick = tick;
	}

}