比如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 为窗口的宽和高。

解决方案 »

  1.   

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

  2.   

    只要两个窗口的X坐标方向不一致,就会有问题。
    我是问大家有没有简单的办法可以处理一下,这个问题绝对不是简单到DPtoLP吧?