Is there any way to control mouse cursor by c++?

I managed to implemented moving mouse cursor from c++ code, but still cannot generate mouse click events without Windows- specific code, like below.

#if PLATFORM_WINDOWS
	auto Client = GetGameInstance()->GetGameViewportClient();
	FIntPoint MousePoint;
	Client->Viewport->GetMousePos( MousePoint, false );
	INPUT Input = { 0 };
	Input.type = INPUT_MOUSE;
	Input.mi.dx = MousePoint.X; // If you need to set the position
	Input.mi.dy = MousePoint.Y; // If you need to set the position

	Input.mi.dwFlags = 
		bRight 
		? bDown ? MOUSEEVENTF_RIGHTDOWN : MOUSEEVENTF_RIGHTUP 
		: bDown ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_LEFTUP;
	SendInput( 1, &Input, sizeof( INPUT ) );
#endif

It seems there’s software cursor, then I guess that there might be some way to control it by wrapped- API.

Is it? or not?