我做了一个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);
}
{
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);
}
#define WINVER 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif#ifndef _WIN32_WINNT // 指定要求的最低平台是 Windows Vista。
#define _WIN32_WINNT 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif 你是不是这样的?
#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
WINVER
_WIN32_WINNT
_WIN32_IE
_WIN32_WINDOWS
四项都要设置一下看看。你是ActiveX控件可能更应该关注这一项: _WIN32_IE
#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
我的控件是用在excel中的
不是网页中的
#define _WIN32_IE 0x0600 // 将此值更改为相应的值,以适用于 IE 的其他版本。
#endif 其他的不要动谢谢各位,分不多,望笑纳 ^_^