MFC-GetClientRect获取窗口客户区的坐标

Posted 天子骄龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC-GetClientRect获取窗口客户区的坐标相关的知识,希望对你有一定的参考价值。

 

win32API

    RECT rect;
    CWnd* pWnd = GetDlgItem(IDC_LIST1);
    HWND hWnd = pWnd->GetSafeHwnd();
    
    BOOL b = ::GetClientRect(hWnd, &rect);//获取窗口客户区的坐标
    /*
    参数1:HWND hWnd   窗口句柄
    参数2:LPRECT lpRect   返回客户区坐标
            该结构有四个LONG字段,分别为left、top、right和bottom
            GetClientRect将这四个字段设定为窗口显示区域的尺寸。
            left和top字段通常设定为0。right和bottom字段设定为显示区域的宽度和高度(像素点数)
            也可以是一个CRect对象指针。CRect对象有多个参数,与RECT用法相同
    返回值:如果函数成功,返回一个非零值。如果函数失败,返回零

    */

 

MFC

    RECT rect;
    CWnd* pWnd = GetDlgItem(IDC_LIST1);
    pWnd->GetClientRect(&rect);

 

 

 

 

 

 

EVT_NC_PAINT 窗口非客户区的绘制

说明

    NC就是non client意思,非客户区主要包括标题栏,状态栏,工具栏和边框等区域,目前wxwidgets只是提供了EVT_NC_PAINT 唯一的一个非客户区的事件,在MFC中,还有提供WM_NCLBUTTONDOWN WM_NCLBUTTONUP WM_NCMOUSEMOVE等事件操作,如果需要关联这些事件,就必须要过滤该事件,或者在源码中实现该类事件

    目前需要拖动边框的时候,客户区域不变,只是边框变大,等到边框拖动到合适的地方,鼠标弹起,客户区域重绘


以上是关于MFC-GetClientRect获取窗口客户区的坐标的主要内容,如果未能解决你的问题,请参考以下文章

博客2

如何用delphi得到指定窗口的坐标

EVT_NC_PAINT 窗口非客户区的绘制

VC编程中遇到的窗口大小和窗口客户区大小的问题

bos 第5天(定区的添加定区的分页查询hessian远程调用实现获取客户信息)

2019-11-29-WPF-非客户区的触摸和鼠标点击响应