Difference of SDL_CreateWindowFrom and SDL_CreateWindow

My workspace is Windows / MSVC / SDL2.

What I need is just catching the joystick actions in my application window (without OpenGL rendering).

When I use SDL_CreateWindow to create a new window in a worker thread, like this:

ThreadProc()
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_CreateWindow(…)
SDL_JoystickOpen(…)
while(1)
{
SDL_WaitEvent(…)
switch(event.type)
{
case SDL_JOYAXISMOTION:
case SDL_JOYBUTTONDOWN:
case SDL_JOYBUTTONUP:
}
}
}

It works well. But when I use SDL_CreateWindowFrom instead of SDL_CreateWindow, I just want to attach the event pumping to a window of myself.
It looks strange that I can only get SDL_JOYBUTTONUP event, and the SDL_JOYAXISMOTION and SDL_JOYBUTTONDOWN are missing.

As a stranger of SDL, I wonder if I was using SDL improperly, or SDL2 does not support Windows well?

Any help is appreciated.