有人说:PreTranslateMessage可以将消息映射为全局--------------------------------------1 是否正确?
2 是这么实现的?

解决方案 »

  1.   

    可以这样用,用于判断鼠标所悬停的位置下边的控件是什么 
    BOOL COneDlg::PreTranslateMessage(MSG* pMsg) 
    {
    HCURSOR hCursor;
    if( pMsg->message == WM_MOUSEMOVE ){     //鼠标移动消息
    POINT pt = pMsg->pt;
    ScreenToClient( &pt );
    CWnd* pWnd = ChildWindowFromPoint(pt);
    UINT nCtrlID = pWnd->GetDlgCtrlID();//获取鼠标下的控件ID号

    CString sText;
    switch(nCtrlID)
    {//这里根据控件的不同进行判断并修改鼠标指针的形态
    case IDC_STATIC_PHOTO:
    hCursor = AfxGetApp()->LoadCursor(IDR_ANICURSOR_ARR);
    ::SetCursor(hCursor); break;
    case IDC_BUTTON_OPEN:
    hCursor = AfxGetApp()->LoadCursor(IDR_ANICURSOR_ARR);
    ::SetCursor(hCursor);
    break;

    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }