1,2) DispatchMessage не вызывает оконную ф-ю, т.к. это ф-я обратного вызова (её вызывает операционная система).
3) В том то и дело, что сообщение передается в ф-ю DispatchMessage, а в оконной ф-ии уже нет части информации.
Так что пока не вижу логики существующего подхода.