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获取)