学习windows编程 day4 之 映射模式

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    int iOldMap;
    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);
        GetClientRect(hwnd, &rect);
//映射模式:改变xy轴方向,长度度量单位
        //默认MM_TEXT x向右  y向下 单位px
        TextOut(hdc, 100, 100, L"MM_TEXT", 7);

        iOldMap=GetMapMode(hdc);

//改变映射模式 setmapmode
        //MM_LOMETRIC    x向右 y向上 单位0.1mm
        //MM_HIMETRIC     x向右 y向上 单位0.01mm
        //MM_LOENGLISH   x向右 y向上 单位0.01in
        //MM_HIENGLISH   x向右 y向上 单位0.001in
        //MM_TWIPS         x向右 y向上 单位1/1440in    1/20个打印点    少
        //MM_ISOTROPIC   x向右 y向上 任意x=y    可选    各向同性
        //MM_ANISOTROPIC x向右 y向上 任意x!=y    可选    各向异性

        //MM_LOMETRIC x向右 y向上 单位0.1mm
        SetMapMode(hdc, MM_LOMETRIC);
        TextOut(hdc, 1000, -1000, L"MM_LOMETRIC", 11);//10cm

        //MM_HIMETRIC     x向右 y向上 单位0.01mm
        SetMapMode(hdc, MM_HIENGLISH);
        TextOut(hdc, 1000, -1000, L"MM_HIMETRIC", 11);//1cm

        //恢复默认模式
        SetMapMode(iOldMap);
        EndPaint(hwnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }


    return DefWindowProc(hwnd, message, wParam, lParam);
}

1. 注意无论映射模式是哪一种:所获得的信息都是以像素为单位的

2.客户区设备坐标是指客户区左上角,全窗口坐标是指窗口左上角(包括标题栏等getwindowsdc获取)

原文地址:https://www.cnblogs.com/ssyfj/p/8511131.html