我想取得对话框中某个按钮控件的位置
我想判断鼠标位置是否在该按钮区域内
请问如何判断?
谢谢!

解决方案 »

  1.   

    我要是使用 CWnd::GetWindowRect得到的并不是按钮的位置
    我是如下使用的:
    CWnd *pwnd = GetDlgItem(IDC_BUTTON1);
    CRect rc;
    pwnd->GetWindowRect(&rc);
    CPen pen;
    pen.CreatePen(PS_SOLID, 2, RGB(255,255,0);
    CClientDC ClientDC(this);
    ClientDC.SelectObject(&pen);
    ClientDC.Rectangle(rc);
    结构并不是得到按钮的位置
      

  2.   

    从CButton派生类
    是不是通过那个DrawItem函数得到的那个位置啊?
    请指点一二
      

  3.   

    CRect rect;
    GetDlgItem(ID_BUTTONCTRL)->GetWindowRect(rect);后面怎么判断鼠标位置就看着办吧~
      

  4.   

    CWnd *pwnd = GetDlgItem(IDC_BUTTON1);
    CRect rc;
    pwnd->GetWindowRect(&rc);
    pwnd->ClientToWindow(&rc);
    CPen pen;
    pen.CreatePen(PS_SOLID, 2, RGB(255,255,0);
    CClientDC ClientDC(this);
    ClientDC.SelectObject(&pen);
    ClientDC.Rectangle(rc);
      

  5.   

    BOOL ScreenToClient(
      HWND hWnd,        // handle to window
      LPPOINT lpPoint   // screen coordinates
    );
      

  6.   

    CWnd *pwnd = GetDlgItem(IDC_BUTTON1);
    CRect rc;
    pwnd->GetWindowRect(&rc);
    ScreenToClient(&rc);//这样
      

  7.   

    正如楼上兄弟所说,使用转换函数ScreenToClient()就行了。
      

  8.   

    判断鼠标位置很方便,使用函数PtInRect()就行了。
      

  9.   

    不行
    起码ScreenToClient()不行
    那样那个位置就跑到最左上角了
    CWnd *pwnd = GetDlgItem(IDC_BUTTON1);
    CRect rc;
    pwnd->GetWindowRect(&rc);
    pwnd->ScreenToClient(&rc);
    CPen pen;
    pen.CreatePen(PS_SOLID, 2, RGB(255,255,0);
    CClientDC ClientDC(this);
    ClientDC.SelectObject(&pen);
    ClientDC.Rectangle(rc);
    所画出的矩形跑到左上角了
      

  10.   

    去掉pwnd->ScreenToClient(&rc);
    前面的pwnd->
      

  11.   

    天啊
    终于对了
    谢谢谢谢谢谢!
     abe_w() 非常非常谢谢所有进来的兄弟姐妹们,谢谢谢谢你们请问是按Top 给分吗?
    所有来的人都送分
    再次谢谢!
     
      

  12.   

    老兄,你怎么不看清楚,ScreenToClient(&rc);前的pwnd->应该有吗?没有!