You mean like this ?
.text:000000014000140c 488B4D10 mov rcx, qword ptr [rbp+0x10]
.text:0000000140001410 488D55B0 lea rdx, [rbp-0x50]
.text:0000000140001414 FF150A140000 call qword ptr [GetClientRect]
.text:000000014000141a 488B0D5F160000 mov rcx, qword ptr [0x140002a80]
.text:0000000140001421 48C7C200000000 mov rdx, 0x0
.text:0000000140001428 49C7C000000000 mov r8, 0x0
.text:000000014000142f 448B4DB8 mov r9d, dword ptr [rbp-0x48]
.text:0000000140001433 8B45BC mov eax, dword ptr [rbp-0x44]
.text:0000000140001436 89442420 mov dword ptr [rsp+0x20], eax
.text:000000014000143a 48C744242801000000 mov qword ptr [rsp+0x28], 0x1
.text:0000000140001443 FF15E3130000 call qword ptr [MoveWindow]
The invoke style macro does it automatically, IE puts the right size data in the right place. I know what you are after but I see size optimisation through register size as pointless as the savings are small. The target I am after with Win64 is /LARGEADDRESSAWARE type applications where Win64 has a large advantage. For size optimisation Win32 does it better.