Да, свич, там нужные типы сообщений. Разбираешь их состав.
Вызывать или не вызывать родной WindowProc - это зависит от задачи: если ты только "наблюдаешь", логгируешь что-то, то конечно же вызвать с неизменёнными параметрами. Если хочешь поменять параметры - меняешь и вызываешь. Если хочешь абсолютно новое поведение - то вместо вызова делаешь своё. Как вариант - сначала вызов родного обработчика, затем делаешь своё поверх (уже не вызывая в конце)
Лабиринт - я не в курсе про какой лабиринт речь
А на рисунке вижу вообще только один тип сообщения - WM_COMMAND. Но и его можно разобрать безо всяких лабиринтов
В общем - столкнёшься, там поглядим