Sorry just read this after my last post.
I read it in a book that i should not call the window function directly (e.g. return mf->wndProc(hwnd,message,wParam,lParam); ) becausewhat you actually want to do is call the function directly as you had done. After that you need to call DefWindowProc to get the default action for messages you don't handle.
This is because a message may require additional processing as it is sent to a window procedure. It also accounts for the fact that only on some platforms, or under some conditions, there may be additional processing required to call a window procedure. In win32, this may involve Unicode translations.