Where are the program change messages?

When developing the VST3 plugin, I put a breakpoint in the ProcessMidiMsg procedure. Pressing a key on the midi controller triggers breakpoints, however, if I try to change the program, no breakpoints are triggered. It feels like the program change message is “missing” somewhere on the way from the midi controller to the plug-in.
But if I build an AU format plugin, then when switching the program on the midi controller, the breakpoint is triggered.
Does VST3 not support program change messages, or is it a flaw in the framework?

VST3 redirects PgmChng to Factory Presets.
I suppose one could make 128 Factory Presets with just one parameter and 128 distinctive values which trigger specific behaviors.