Exemple #1
0
//----按坐标查找窗口中的子窗口(控件)----------------------------------------------
//描述: 该函数为内部调用.
//参数:hwnd:窗口句柄
//     pt: 坐标点
//返回:查找到的子窗口(控件)句柄.
//------------------------------------------------------------------------------
HWND    GetChildWindowFromPoint(HWND hwnd,POINT *pt)
{
    RECT rc;

    if(NULL!=hwnd)
    {
        hwnd =GetWindow(hwnd,GW_CHILD);
        while(NULL!=hwnd)
        {
            if(NULL!=hwnd->Child)
            {
                GetChildWindowFromPoint(hwnd->Child,pt);
            }
            GetWindowRect(hwnd,&rc);

            if(PtInRect(&rc,pt))
            {
                return hwnd;
            }
            hwnd =GetWindow(hwnd,GW_HWNDNEXT);
        }
    }

    return NULL;
}
Exemple #2
0
//----按坐标查找窗口(主窗口或子窗口)----------------------------------------------
//描述: 略.
//参数:pt:坐标点
//返回:查找到的窗口句柄.
//------------------------------------------------------------------------------
HWND    GetWindowFromPoint(POINT *pt)
{
    HWND hwnd;
    HWND wnd=NULL;;

    hwnd =GetMainWindowFromPoint(pt);
    if(hwnd != GetDesktopWindow())
    {
        wnd =GetChildWindowFromPoint(hwnd,pt);
        if(wnd != NULL)
        {
            hwnd =wnd;
        }
    }

    return hwnd;
}
Exemple #3
0
COXToolTipInfo* COXToolTipCtrl::FindToolFromPoint(POINT& pt)
{
    ASSERT(m_pParentWnd);

    CWnd* pWnd = GetChildWindowFromPoint(pt);
    if (!pWnd /*||
         pWnd->GetSafeHwnd() == m_pParentWnd->GetSafeHwnd()*/)
        return NULL;

    OXTOOLINFO ti;
    BOOL bHitTest = HitTest(pWnd->GetSafeHwnd(), pt, &ti);

    if (bHitTest)
        return GetToolInfoPtr(CWnd::FromHandle(ti.hwnd), ti.uId);
    else
        return NULL;
}