It would appear that ML64 still uses the PROTO notation, even if it does not need it but if you declare a prototype, it will compare the procedure declaration to the prototype and show an error if they do not match.
With this PROTO,
WndProc PROTO :QWORD,:QWORD,:QWORD,:QWORD ;; ,:QWORD
and this procedure declaration,
WndProc proc hWin:QWORD,uMsg:QWORD,wParam:QWORD,lParam:QWORD
If you uncomment the last extra argument in the prototype you get a form of error checking,
window8.asm(135) : error A2111:conflicting parameter definition