把IE里的一个url超链接拖到自己窗口里,如何知道这个赵链接的url?

解决方案 »

  1.   

    IE的URL能拖吗?我这里不行,如果可以你去看看OLE GRAG范围的东西,可能会有用.
      

  2.   

    #define WM_TL_DragEnter (WM_USER + 4)
    #define WM_TL_DragOver (WM_USER + 5)
    #define WM_TL_DragLeave (WM_USER + 6)
    #define WM_TL_Drop (WM_USER + 7)typedef struct 
    {
    COleDataObject* pDataObject;
    DWORD dwKeyState;
    CPoint point;
    DROPEFFECT dropEffect;
    } TlDragParam;class CMyOleDropTarget : public COleDropTarget
    {
    public:
    TlDragParam m_DragParam;
    public:
    virtual DROPEFFECT OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point)

    m_DragParam.pDataObject = pDataObject;
    m_DragParam.dwKeyState = dwKeyState;
    m_DragParam.point = point;
    return pWnd->SendMessage(WM_TL_DragEnter, (WPARAM)&m_DragParam, 0);
    };
    virtual DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point)

    m_DragParam.pDataObject = pDataObject;
    m_DragParam.dwKeyState = dwKeyState;
    m_DragParam.point = point;
    return pWnd->SendMessage(WM_TL_DragOver, (WPARAM)&m_DragParam, 0);
    };
    virtual BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point)

    m_DragParam.pDataObject = pDataObject;
    m_DragParam.dropEffect = dropEffect;
    m_DragParam.point = point;
    return pWnd->SendMessage(WM_TL_Drop, (WPARAM)&m_DragParam, 0);
    };
    virtual void OnDragLeave(CWnd* pWnd)
    {
    pWnd->SendMessage(WM_TL_DragLeave,0,0);
    };
    };class CMyDlg : public CDialog
    {
      ....
    private:
       CMyOleDropTarget m_drop;
      ....
    }BOOL CMyDlg::OnInitDialog()
    {
      CDialog::OnInitDialog();
      m_drop.Register(this);
    }LRESULT CMyDlg::OnDrop(WPARAM wParam, LPARAM lParam)
    {
    TlDragParam *pDragParam = (TlDragParam *)wParam;
    if (!pDragParam->pDataObject->IsDataAvailable(CF_TEXT))
    return FALSE;
    HGLOBAL hmem = pDragParam->pDataObject->GetGlobalData(CF_TEXT);
    if(!hmem)
    return DROPEFFECT_NONE;
    DROPFILES * pDropFiles = (DROPFILES *)::GlobalLock(hmem);
    LPBYTE lpBuffer = (BYTE *)pDropFiles;
    CString strUrl;
    strUrl.Format(_T("%S"),(LPCWSTR)lpBuffer);
    return 0;
    }
      

  3.   

    LRESULT CMyDlg::OnDrop(WPARAM wParam, LPARAM lParam)
    {
    TlDragParam *pDragParam = (TlDragParam *)wParam;
    if (!pDragParam->pDataObject->IsDataAvailable(CF_TEXT))
    return FALSE;
    HGLOBAL hmem = pDragParam->pDataObject->GetGlobalData(CF_TEXT);
    if(!hmem)
    return DROPEFFECT_NONE;
    LPBYTE lpBuffer = (LPBYTE)::GlobalLock(hmem);
    CString strUrl;
    strUrl.Format(_T("%S"),(LPCWSTR)lpBuffer);
    return 0;
    }