Ejemplo n.º 1
0
LRESULT CALLBACK Ctrl::OverwatchWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(msg == WM_USER) {
		ELOGW("WM_USER");
		PostQuitMessage(0);
	}
	if(msg == WM_QUERYENDSESSION) {
		static BOOL (WINAPI *ShutdownBlockReasonCreate)(HWND hWnd, LPCWSTR pwszReason);
		static BOOL (WINAPI *ShutdownBlockReasonDestroy)(HWND hWnd);
		ONCELOCK {
			if(HMODULE hDLL = LoadLibrary ("user32")) {
				AutoCast(ShutdownBlockReasonCreate, GetProcAddress(hDLL, "ShutdownBlockReasonCreate"));
				AutoCast(ShutdownBlockReasonDestroy, GetProcAddress(hDLL, "ShutdownBlockReasonCreate"));
			}
		}
		if(ShutdownBlockReasonCreate)
			ShutdownBlockReasonCreate(hwnd, ~WString(t_("waiting for user response")));
		EndSession();
		ELOGW("WM_QUERYENDSESSION 1");
		OverwatchEndSession.Wait();
		if(ShutdownBlockReasonDestroy)
			ShutdownBlockReasonDestroy(hwnd);
		ELOGW("WM_QUERYENDSESSION 2");
		return TRUE;		
	}
	if(msg == WM_ENDSESSION) {
		EndSession();
		ELOGW("WM_ENDSESSION 1");
		ExitLoopEvent.Set();
		ELOGW("WM_ENDSESSION 2");
	}
	return DefWindowProc(hwnd, msg, wParam, lParam);
}
Ejemplo n.º 2
0
void PerformanceMonitor::UnblockShutdown() {
  if (!block_)
    return;

  block_ = false;

  SetThreadExecutionState(ES_CONTINUOUS);
  ShutdownBlockReasonDestroy(message_window_);
}
Ejemplo n.º 3
0
LRESULT	CALLBACK CGameGirlProc(HWND hw, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	//コールバック受付け

	switch(iMsg) {
    case WM_CREATE:
	    DragAcceptFiles(hw, gxTrue);
		break;

	case WM_DROPFILES:
		{
			HDROP hDrop = (HDROP) wParam;
			Sint32 sNum = DragQueryFile(hDrop , 0xffffffff , NULL , NULL );

			gxChar str[512];

			for(Sint32 ii=0;ii<sNum;ii++)
			{
				wchar_t wStr[512];

				DragQueryFile(hDrop , ii , (LPWSTR)wStr , sizeof(wStr) );

				Uint32 uLen = wcslen(wStr);
				WideCharToMultiByte( CP_ACP , 0 ,(LPCWSTR)wStr , uLen+1 , str, uLen*2 ,NULL,NULL);

				//DragQueryFile(hDrop , ii , str , sizeof(str) );

				gxBool DragAndDrop(char* szFileName);
				DragAndDrop( str );
			}
		}
		break;

	case WM_CLOSE:
		DragAcceptFiles(hw, gxFalse);
		CGameGirl::GetInstance()->SetExitWindow();
		break;

	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;

	case WM_SYSCOMMAND:
		//スクリーンセーバー抑制
		if ( wParam == SC_SCREENSAVE )
	    {
	        return 1;
	    }
		if ( wParam == SC_MONITORPOWER )
	    {
	        return 1;
	    }
	    return (DefWindowProc(hw, iMsg, wParam, lParam));

	case WM_COMMAND:
		InputShortCutCheck( LOWORD(wParam) );
		return 0;

	case WM_SIZE:
		g_pWindows->m_uScreenWidth  = LOWORD(lParam);
		g_pWindows->m_uScreenHeight = HIWORD(lParam);
		::Resume();
		break;

	case WM_QUERYENDSESSION:
		ShutdownBlockReasonCreate( hw ,L"gxLib running" );
		return false;

 	case WM_ENDSESSION:
		CGameGirl::GetInstance()->SetExitWindow();
		ShutdownBlockReasonDestroy( hw );
		break;

	default:
		InputKeyCheck( iMsg , wParam , lParam );
		break;
	}

	return DefWindowProc( hw, iMsg, wParam, lParam);
}