SetWindowOrgEx specifies which logical point maps to the device point (0,0). It has the effect of shifting the axes so that the logical point (0,0) no longer refers to the upper-left corner.
Generally, you will use one function or the other, but not both. Regardless of your use of SetWindowOrgEx and SetViewportOrgEx, the device point (0,0) is always the upper-left corner.
//map the logical point (xWinOrg, yWinOrg) to the device point (0,0)
SetWindowOrgEx (hdc, xWinOrg, yWinOrg, NULL)
SetViewportOrgEx specifies which device point maps to the logical point (0,0). It has the effect of shifting the axes so that the logical point (0,0) no longer refers to the upper-left corner.
//map the logical point (0,0) to the device point (xViewOrg, yViewOrg)
SetViewportOrgEx (hdc, xViewOrg, yViewOrg, NULL)
Regardless of your use of SetWindowOrgEx and SetViewportOrgEx, the device point (0,0) is always the upper-left corner.
The viewport refers to the device coordinate system of the device space(与之对应的是window对应逻辑坐标点).The extent is the maximum value of an axis. This function sets the maximum values for the horizontal and vertical axes of the viewport in device coordinates (or pixels). When mapping between page space and device space, SetWindowExtEx andSetViewportExtEx determine the scaling factor between the window and the viewport.
BOOL SetViewportExtEx( _In_ HDC hdc, _In_ int nXExtent, _In_ int nYExtent, _Out_ LPSIZE lpSize );
如果 nYExtent为负数,则表示Y轴方向反转