我做了一个ActiveX控件,在上面加了个气泡提示,在WindowsXP、2003下都没问题,但是vista下气泡显示不出来,请各位能帮忙看看?谢谢了。代码如下: CToolTipCtrl *m_ttip; int OnCreate(LPCREATESTRUCT lpCreateStruct) 

    if (COleControl::OnCreate(lpCreateStruct) == -1) 
        return -1;     m_ttip = new CToolTipCtrl; 
    RECT rectToolTip; 
    rectToolTip.bottom = 15; 
    rectToolTip.left = 20; 
    rectToolTip.right = 20; 
    rectToolTip.top = 15; 
    if(!m_ttip->Create(this)) 
    { 
        return -1; 
    } 
    else 
    { 
        m_ttip->SetMargin(&rectToolTip); 
        if(!m_ttip->AddTool(this, _T("1212rqwre43143"))) 
        { 
            return -1; 
        } 
        else 
        { 
            m_ttip->Activate(m_bShowToolTip); 
        } 
    } 
    return 0; 
} void RelayEvent(UINT message, WPARAM wParam, LPARAM lParam) 
{  
    if(NULL != m_ttip->m_hWnd) 
    { 
        MSG msg; 
        msg.hwnd = m_hWnd; 
        msg.message = message; 
        msg.wParam = wParam;
        msg.lParam = lParam; 
        msg.time = 0; 
        msg.pt.x = LOWORD(lParam); 
        msg.pt.y = HIWORD(lParam);
        m_ttip->RelayEvent(&msg); 
    } 
} void OnMouseMove(UINT nFlags, CPoint point)
{
if (m_bMouseDown)
{
if (!m_bAllowMove)
{
::SetCursor(AfxGetApp()->LoadCursor(IDC_MYCURN));
}
else
{ ::SetCursor(AfxGetApp()->LoadCursor(IDC_MYCUR));
}
}
RelayEvent(WM_MOUSEMOVE, (WPARAM)nFlags, 
MAKELPARAM(LOWORD(point.x), LOWORD(point.y)));
COleControl::OnMouseMove(nFlags, point);
}

解决方案 »

  1.   

    #ifndef WINVER        // 指定要求的最低平台是 Windows Vista。
    #define WINVER 0x0501    // 将此值更改为相应的值,以适用于 Windows 的其他版本。
    #endif#ifndef _WIN32_WINNT    // 指定要求的最低平台是 Windows Vista。
    #define _WIN32_WINNT 0x0501  // 将此值更改为相应的值,以适用于 Windows 的其他版本。
    #endif      你是不是这样的?
      

  2.   

    我的是:
    #ifndef WINVER // 允许使用特定于 Windows 95 和 Windows NT 4 或更高版本的功能。
    #define WINVER 0x0400 // 将此更改为针对于 Windows 98 和 Windows 2000 或更高版本的合适的值。
    #endif#ifndef _WIN32_WINNT // 允许使用特定于 Windows NT 4 或更高版本的功能。
    #define _WIN32_WINNT 0x0400 // 将此更改为针对于 Windows 2000 或更高版本的合适的值。
    #endif #ifndef _WIN32_WINDOWS // 允许使用特定于 Windows 98 或更高版本的功能。
    #define _WIN32_WINDOWS 0x0410 // 将此更改为针对于 Windows Me 或更高版本的合适的值。
    #endif#ifndef _WIN32_IE // 允许使用特定于 IE 4.0 或更高版本的功能。
    #define _WIN32_IE 0x0400 // 将此更改为针对于 IE 5.0 或更高版本的合适的值。
    #endif
      

  3.   

    #define 的值不正确
    WINVER 
    _WIN32_WINNT 
    _WIN32_IE 
    _WIN32_WINDOWS
    四项都要设置一下看看。你是ActiveX控件可能更应该关注这一项: _WIN32_IE
      

  4.   

    #ifndef _WIN32_IE    // 允许使用特定于 IE 6.0 或更高版本的功能。
    #define _WIN32_IE 0x0600 // 将此值更改为相应的值,以适用于 IE 的其他版本。
    #endif
    #include <afx.h>
    #include <afxwin.h>         // MFC 核心组件和标准组件
    #include <afxext.h>         // MFC 扩展
    #ifndef _AFX_NO_OLE_SUPPORT
    #include <afxdtctl.h>   // MFC 对 Internet Explorer 4 公共控件的支持
    #endif
    #ifndef _AFX_NO_AFXCMN_SUPPORT
    #include <afxcmn.h>    // MFC 对 Windows 公共控件的支持
    #endif // _AFX_NO_AFXCMN_SUPPORT
      

  5.   

    补充一点
    我的控件是用在excel中的
    不是网页中的
      

  6.   

    4楼 5楼正解,刚才我弄错了#ifndef _WIN32_IE    // 允许使用特定于 IE 6.0 或更高版本的功能。
    #define _WIN32_IE 0x0600 // 将此值更改为相应的值,以适用于 IE 的其他版本。
    #endif 其他的不要动谢谢各位,分不多,望笑纳 ^_^