Вам необходимо запустить его из того же потока, которому принадлежит окно, к которому прикреплено меню.
Правило потоков в Windows гласит, что окна имеют сходство с потоком, который создает окно.Поскольку TrackPopupMenu получает дескриптор окна, вы можете предположить, что он должен вызываться из потока этого окна.
На практике в Windows (и во всех платформах GUI, с которыми я когда-либо сталкивался), все, что связано с GUI, должно происходитьв основной теме.