Crie um processo em segundo plano com o ícone da bandeja do sistema

Eu estou tentando fazer um aplicativo do Windows que verifica algumas coisas em segundo plano e informar o usuário através de um ícone systray.

O aplicativo é feito com o C ++ não gerenciado e não há opção para alternar para .net ou Java.

Se o usuário quiser interromper o aplicativo, ele usará o ícone da bandeja.

O aplicativo não pode ser um serviço por causa do lado systray e porque ele deve ser executado sem instalar nada no computador do usuário (é um único .exe)

Usando a estrutura típica do programa Win32 (RegisterClass, WndProc e assim por diante) eu não sei como posso colocar algum código para separar o loop de mensagem de janela. Talvez eu tenha que usar CreateProcess () ou CreateThread ()? É a maneira correta de lidar com o ambiente Multithreading?

Se eu tiver que usar CreateProcess () / CreateThread (), como posso comunicar entre os dois segmentos?

Obrigado ;)