这个函数好像就是对应于视口的,获取视口的宽高

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("坐标") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc= WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor= LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, TEXT ("坐标尺寸"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
HPEN hPen,hOldPen;
hPen=CreatePen(PS_SOLID,1,RGB(0,12,255));
hOldPen=(HPEN)SelectObject(hdc,hPen);
//1 Ellipse(hdc,-100, -100, 100, 100); GetClientRect(hwnd,&rect);
// MoveToEx(hdc,rect.right/2,0,NULL);
// LineTo(hdc,rect.right/2,rect.bottom);
// MoveToEx(hdc,rect.left,rect.bottom/2,NULL);
// LineTo(hdc,rect.right,rect.bottom/2); //2 Ellipse(hdc,-50,-50,50,50);
// MoveToEx(hdc,0,0,NULL);
// LineTo(hdc,100,100); //3 SetViewportOrgEx(hdc,200,150,NULL);
// Ellipse(hdc,-50,-50,50,50);
// MoveToEx(hdc,0,0,NULL);
// LineTo(hdc,100,100); //3.1 SetViewportOrgEx(hdc,rect.right/2,rect.bottom/2,NULL);
// Ellipse(hdc,-50,-50,50,50);
// MoveToEx(hdc,0,0,NULL);
// LineTo(hdc,100,100); //3.2 SetViewportOrgEx(hdc,rect.right/2,rect.bottom/2,NULL);
// Ellipse(hdc,-100,-100,100,100);
// MoveToEx(hdc,rect.left,0,NULL);
// LineTo(hdc,rect.right,0);
// MoveToEx(hdc,0,rect.top,NULL);
// LineTo(hdc,0,rect.bottom); //4 SetMapMode(hdc,MM_ANISOTROPIC);
// SetViewportOrgEx(hdc,380,220,NULL);
// Ellipse(hdc,-100,-100,100,100);
// MoveToEx(hdc,-380,0,NULL);
// LineTo(hdc,380,0);
// MoveToEx(hdc,0,-220,NULL);
// LineTo(hdc,0,220); // MoveToEx(hdc,0,0,NULL);
// LineTo(hdc,120,120); LOGBRUSH logbrush;
HBRUSH hBrush,hOldBrush;
logbrush.lbStyle=BS_SOLID;
logbrush.lbColor=RGB(128,128,128);
logbrush.lbHatch=HS_HORIZONTAL;
hBrush=CreateBrushIndirect(&logbrush);
hOldBrush=(HBRUSH)SelectObject(hdc,hBrush);
Rectangle(hdc,-100,-100,100,100);
MoveToEx(hdc,0,0,NULL);
LineTo(hdc,200,200); DeleteObject(hPen);
DeleteObject(hBrush);
SelectObject(hdc,hOldPen);
SelectObject(hdc,hOldBrush);
EndPaint (hwnd, &ps) ;
break;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

文章相关链接  http://www.ucancode.net/faq/Coordinate-SetViewportOrg-SetWindowExt-SetViewportExt-SetMapMode.htm

GetClientRect的更多相关文章

  1. GetWindowRect() GetClientRect() ScreenToClient() MoveWindow()

    CWnd.GetWindowRect 参照坐标系:屏幕坐标系,原点为屏幕左上角(0,0)的位置 功能:取得调用窗口CWnd在屏幕坐标系下的RECT坐标 CWnd.GetClientRect 参照坐标系 ...

  2. GetClientRect()和GetWindowRect()

    GetClientRect()   是得到客户区坐标系下客户区的RECT GetWindowRect()是得到屏幕坐标系下整个窗口的RECT GetSystemMetrics()是获得屏幕分辨率大小 ...

  3. GetWindowRect和GetClientRect的区别详解

    一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的? ...

  4. GetWindowRect和GetClientRect的异同

    由于项目需要,需要学习CGridCtrl控件的使用,测试控件时发现了一个问题,我无法将控件放在对话框的制定位置. 该问题的原因很容易发现,其实就是GetWindowRec()函数和GetClientR ...

  5. GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen

    GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置. GetClientRect取得窗口客户区(不包括非客 ...

  6. GetWindowRect和GetClientRect的注意事项

    发现GetClientRect()函数取值不正确,特此找来了些资料以供参考,具体如下,就可以明白怎么回事了. 一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClie ...

  7. MFC 中GetClientRect、ClientToScreen、GetWindow、RectScreenToClient的使用

    CWnd* pWnd = GetDlgItem(IDB_BUT_RECOGNIZE); pWnd->GetClientRect(&rect);   //指该控件自身客户区的矩形,原点为控 ...

  8. VC:GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen

    GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置. GetClientRect取得窗口客户区(不包括非客 ...

  9. GetWindowRect和GetClientRect比较学习

    一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的? ...

随机推荐

  1. PHP中使用CURL(二)

    https不需要进行ca认证和证书中域名认证 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_SSL_VE ...

  2. iOS相关教程

    Xcode Xcode 7中你一定要知道的炸裂调试神技 Xcode 6和Swift中应用程序的国际化和本地化 iOS新版本 兼容iOS 10 资料整理笔记 整理iOS9适配中出现的坑(图文) Swif ...

  3. erlang调试技术之etop

    etop是erlang进程信息查看工具,类似于UNIX的top. 一.配置参数 node The measured node. Value: atom() Mandatory setcookie Co ...

  4. D - 小晴天老师系列——晴天的后花园

    D - 小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Oth ...

  5. why do we need virtual methods in C++?

    http://stackoverflow.com/questions/2391679/why-do-we-need-virtual-methods-in-c Basic idea: when mark ...

  6. 利用Ajax实现前端与.net后端实现数据交互

    使用场景和需求:用户在地址栏输入请求地址,先.net服务器发送页面请求,该页面包含Echart图表,在页面中向.net后端发送数据请求,获取数据后,将数据填充到Echart图表中.其中包含带参与不带参 ...

  7. Redis4- llist的操作

    数据类型List链表(1)介绍list类型其实就是一个双向链表.通过push,pop操作从链表的头部或者尾部添加删除元素.这使得list既可以用作栈,也可以用作队列.该list链表类型应用场景:获得最 ...

  8. 把excel数据导入mysql中

    适用:每列的数据都不是以逗号分隔. 1.在mysql建表,全部字段与表头相同且顺序一致 2.将excel另存为csv格式,用Editplus把CSV文件另存为UTF-8编码格式 3.执行load da ...

  9. Xbox360自制系统GOD包安装教程

    1.准备工作 U盘或移动硬盘一个,已下载好的GOD包,本教程用一个32G的U盘和游戏<猎天使魔女>为例. 右击U盘,属性,查看你的U盘是否为FAT32格式. 如果是FAT32格式,则可直接 ...

  10. python常用函数年初大总结

    1.常用内置函数:(不用import就可以直接使用) help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(obj) 得到o ...