学习windows编程 day4 之 映射模式

时间:2021-07-30 16:49:14
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, , , L"MM_TEXT", ); 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, , -, L"MM_LOMETRIC", );//10cm //MM_HIMETRIC x向右 y向上 单位0.01mm
SetMapMode(hdc, MM_HIENGLISH);
TextOut(hdc, , -, L"MM_HIMETRIC", );//1cm //恢复默认模式
SetMapMode(iOldMap);
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage();
return ;
} return DefWindowProc(hwnd, message, wParam, lParam);
}

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

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