Если вы действительно хотите невидимого, то вы можете просто очистить бит WS_VISIBLE в стиле окна. Переопределите PreCreateWindow и убедитесь, что этот флаг очищен.
Или же вы можете создать окно, которое обрабатывает только сообщения, указав HWND_MESSAGE в качестве родительского hwnd в вызовах CreateWindow.