映射坐标后,GDI字符串输出函数统统需要重新计算坐标,有没有简单点的处理办法?解决办法

映射坐标后,GDI字符串输出函数统统需要重新计算坐标,有没有简单点的处理办法?
比如DrawText、TextOut这些函数:

DrawText(hDC,   CurveTitle,   -1,   &CurveTitleRect,   DT_CENTER   |   DT_VCENTER   |   DT_SINGLELINE);
上面的语句将CurveTitle显示在了CurveTitleRect矩形的水平中间,当我把坐标原点映射到屏幕右边时,上面的语句输出就再也不居中了。
映射坐标程序如下:
SetMapMode(HDC,   MM_ANISOTROPIC);
SetWindowExtEx(HDC,   WIDTH,   HEIGHT,   0);
SetViewportExtEx(HDC,   -WIDTH,   HEIGHT,   0);
SetViewportOrgEx(HDC,   WIDTH,   0,   0);
其中   WIDTH   和   HEIGHT   为窗口的宽和高。

------解决方案--------------------
DPtoLP
------解决方案--------------------
Avoid(千金散尽还复来),不要乱误导人,另外没试过,就别信口开河

GDI函数大都使用逻辑坐标,所以好像只要将其转化为逻辑坐标就可以,例:
GetClientRect (hwnd, &rect) ;
DPtoLP(hdc, (PPOINT)&rect,2);
DrawText(hDC, CurveTitle, -1, &CurveTitleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
但是我发现DrawText的旗标好像只有在逻辑坐标的x,y方向与视口坐标的方向相同才可以,不信你可以试试看,我也不知道为什么。