GetWindowRectで得た値から計算して
MoveWindowに使うとズレるんですがこれは仕様なんですか?

例えばGetWindowRectで
left=100  right=200
top=100  bottom=200
だったとして、これだと幅と高さが
101になるので
MoveWindow(hwnd,100,100,101,101,TRUE)
としたら幅と高さが1ドットずつ膨らんでしまいます