GetClientRect(&rect)得到的是哪个区域的坐标?

zteclx 2009-06-22 10:12:03
是当前窗口区域吗?
...全文
697 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
restgame 2010-12-19
  • 打赏
  • 举报
回复
的确是误导人啊
Lin 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 schoolers 的回复:]
引用 2 楼 Ryanwen 的回复:
当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域


同意
[/Quote]


错,那是想当然,误导人。

你可以用GetClientRect获得的矩形与是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域相比较看看他们是否一致。
new_lee 2009-06-28
  • 打赏
  • 举报
回复
当前窗口的
apchy_apchy 2009-06-28
  • 打赏
  • 举报
回复
和this->xxxx
效果一样,你说是那个窗口呢?
akuyw 2009-06-26
  • 打赏
  • 举报
回复
客户区的!!
ggmfc 2009-06-24
  • 打赏
  • 举报
回复
UP!
oldCanISoftware 2009-06-23
  • 打赏
  • 举报
回复
UP
teleinfor 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Ryanwen 的回复:]
当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域
[/Quote]

补充下:具体就是当前可见窗口内的区域,视口区域吧。
Eleven 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 kofts 的回复:]
其实理解了是谁调用的 按照字面意思 Client 就是指当前窗口的客户区大小
[/Quote]

是的,看看调用GetClientRect的对象是谁?
kofts 2009-06-23
  • 打赏
  • 举报
回复
其实理解了是谁调用的 按照字面意思 Client 就是指当前窗口的客户区大小
wxshao 2009-06-23
  • 打赏
  • 举报
回复
嗯, 返回的rect坐标是基于当前窗口的, 即左上为(0,0)
具体的说:当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域

如果要转换为屏幕坐标,需要使用ClientToScreen(&rect)
rembo_ysw 2009-06-23
  • 打赏
  • 举报
回复
得到的是客户区的坐标,不包括工具条,边框,状态栏,菜单栏等
zteclx 2009-06-23
  • 打赏
  • 举报
回复
如果是在precreatewindow中调用呢?就是当前窗口还没有创建了
dengxuxing 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Ryanwen 的回复:]
当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域
[/Quote]


同意!
huqinglu123 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Ryanwen 的回复:]
当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域
[/Quote]
同意...
popahqiu 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Ryanwen 的回复:]
当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域
[/Quote]

同意
mvpme82 2009-06-22
  • 打赏
  • 举报
回复
HelloDan 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Ryanwen 的回复:]
当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域
[/Quote]

是这样的,如果要返回整个窗口的,可以用GetWindowRect
某某9 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Ryanwen 的回复:]
当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域
[/Quote]

同意
Ryanwen 2009-06-22
  • 打赏
  • 举报
回复
当前窗口的客户区,以一个完整的窗口来说,是除去窗口边框、标题栏、状态栏、工具栏、菜单栏后的区域
加载更多回复(1)
图像的增强/////////////////////////////////直方图对话框构造函数; ZFT::ZFT(CWnd* pParent /*=NULL*/) : CDialog(ZFT::IDD, pParent)//ZFT为定义的用来显示直方图的对话框类; {  Width=Height=0;//对话框初始化阶段设置图像的宽和高为"0"; } ////////////////////////对话框重画函数; void ZFT::OnPaint() {  CRect rect;//矩形区域对象;  CWnd *pWnd;//得到图片框的窗口指针;  pWnd=GetDlgItem(IDC_Graphic);//得到ZFT对话框内的"Frame"控件的指针;  file://(IDC_Graphic为放置在对话框上的一个"Picture"控件,并讲类型设置为"Frame")。  pWnd->GetClientRect(&rect);//得到"Frame"控件窗口的"视"区域;  int i;  CPaintDC dc(pWnd);//得到"Frame"控件的设备上下文;  file://画直方图的x、y轴;  dc.MoveTo(0,rect.Height());  dc.LineTo(rect.Width(),rect.Height());  dc.MoveTo(0,rect.Height());  dc.LineTo(0,0);  file://画直方图,num[]是"ZFT"的内部数组变量,存放的是图像各个灰度级出现的概率;该数组的各个分量在  显示具体图像的直方图时设置;  for(i=0;i<256;i++)//根据图像上的各个灰度级出现的概率,在坐标上对应的画出一根直线,从而各个表示各灰度级出现概率的直线构成了图像的直方图;  {   dc.MoveTo(i+1,rect.Height());   dc.LineTo (i+1,(rect.Height()-rect.Height()*num[i]*30));   file://此处num分量乘以"30"是为了放大个灰度级上对应的出现概率直线,增强显示效果;  } } //////////////////////////////////////////////////////// void ZFT::OnMouseMove(UINT nFlags, CPoint point) {//OnMouseMove函数处理鼠标消息,显示当前鼠标所在直方图上的灰度值等信息;  CWnd *pWnd,*pWndText;//定义两个窗口对象;  CPoint point1;//定义个一个点对象;  point1=point;//存放当前鼠标的位置信息;  CRect rect;//矩形对象;  CString string ;//字符串对象;  pWnd=GetDlgItem(IDC_Graphic);//得到显示直方图的框架窗口对象指针;  pWndText=GetDlgItem(IDC_NUM);//得到指向文本框对象(IDC_NUM)窗口的指针;  pWnd->GetWindowRect(&rect);//获取pWnd窗口对象窗口区域位置;  file://屏幕坐标转换为客户区坐标;  ScreenToClient(&rect);  file://判断当前鼠标是否指在直方图内;  if(rect.PtInRect (point))  {   int x=point1.x-rect.left;   file://当前鼠标位置减去区域的起始位置恰好为当前鼠标所指位置所表示的灰度级;   string.Format("%d",x);   file://显示当前位置对应的图像的灰度级;   pWndText->SetWindowText((LPCTSTR)string);  }  CDialog::OnMouseMove(nFlags, point); } //////////////////////////////////////// void CDibView::OnImagehorgm() file://在程序的"视"类对象内处理显示图像直方图的函数; {  CDibDoc *pDoc=GetDocument();  HDIB hdib;  hdib=pDoc->GetHDIB();  BITMAPINFOHEADER *lpDIBHdr;//位图信息头结构指针;  BYTE *lpDIBBits;//指向位图像素灰度值的指针;  lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(hdib);//得到图像的位图头信息  lpDIBBits=(BYTE*)lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);  file://获取图像像素值  ZFT dialog;//直方图对话框模板对象;  int i,j;  int wImgWidth=lpDIBHdr->biWidth;  int wImgHeight=lpDIBHdr->biHeight;  file://a[]数组用来存放各个灰度级出现的概率;  float a[256];  for(i=0;i<256;i++)//初始化数组;  {     a[i]=0;  }  file://统计各个灰度级出现的次数;  for(i=0;i得到每个灰度级的出现概率;    memcpy(dialog.num,a,256*sizeof(float));   }  }   dialog.DoModal();//显示直方图对话框;  }  return; }

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧