比如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 为窗口的宽和高。
上面的语句将CurveTitle显示在了CurveTitleRect矩形的水平中间,当我把坐标原点映射到屏幕右边时,上面的语句输出就再也不居中了。
映射坐标程序如下:
SetMapMode(HDC, MM_ANISOTROPIC);
SetWindowExtEx(HDC, WIDTH, HEIGHT, 0);
SetViewportExtEx(HDC, -WIDTH, HEIGHT, 0);
SetViewportOrgEx(HDC, WIDTH, 0, 0);
其中 WIDTH 和 HEIGHT 为窗口的宽和高。
GetClientRect (hwnd, &rect) ;
DPtoLP(hdc, (PPOINT)&rect,2);
DrawText(hDC, CurveTitle, -1, &CurveTitleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
但是我发现DrawText的旗标好像只有在逻辑坐标的x,y方向与视口坐标的方向相同才可以,不信你可以试试看,我也不知道为什么。
我是问大家有没有简单的办法可以处理一下,这个问题绝对不是简单到DPtoLP吧?