Calling conventions are compiler specific, meaning they are specified by the compiler manufacturer like Microsoft, and not by the 8086 manufacturer like Intel. In case you program in Assembler or build your own compiler, you can apply your own method to pass function parameters.
Nevertheless, in the C/C++ world, there are mainly the __cdecl and the __stdcall ...
First make sure you are using correct calling convention, in 64-bit Windows most APIs expect parameters via registers not push.
An example of calling convention for 64-bit Windows:
lea r9d, uType ; uType
lea r8, Caption ; Caption
lea rdx, Text ; Text
mov rcx, hWnd ; hWnd
This is covered in more ...