Transparent tooltip gets focus with the manifest-style under Windows XP


J

Johannes Ody

A Tooltip with TTF_TRANSPARENT and TTF_TRACK tool gets the focus, if I used
under Windows XP the
manifest-style and click with the mouse on the tooltip. But I want, that the
tooltip dispaths
the messages to the window, that is under the tooltip. I have searched in
the world wide web about
this problem, but did not found other persons with the same problem. I have
tested other
example-applications from www.codeproject.com, with a litle modification
(the tooltip was only
shown, but not hidden) and the tested applications have the same problem. I
don't know, how Microsoft
use in the VC6.0 in the Workarea-Window also an tooltip-window, because they
haven't the same problem.

The following source-code is from my test-application. The program is a
simple MFC-dialog-program,
the dialog includes an OK- and Cancel-button. m_wndToolTip is from
CToolTipCtrl.
void CTooltiptestDlg::OnOK()
{
TOOLINFO TI;
char caText[1024];
static long nIndex = 0;
CRect rectTemp;
CFont* pfont;
CWnd* pwndOK;

memset(&TI, 0, sizeof(TI));
TI.cbSize = sizeof(TI);
sprintf(caText, "nIndex=%d", nIndex);
TI.lpszText = caText;

if(IsWindow(m_wndToolTip) == FALSE)
{
m_wndToolTip.Create(this, TTS_ALWAYSTIP | TTS_NOPREFIX);
m_wndToolTip.SetMaxTipWidth(SHRT_MAX);

//Add tool
TI.uFlags = TTF_TRACK | TTF_TRANSPARENT;

m_wndToolTip.SendMessage(TTM_ADDTOOL, 0, (LPARAM)&TI);
}
else
{
//Modify the text of the tooltip.
m_wndToolTip.SendMessage(TTM_UPDATETIPTEXT, 0, (LPARAM)&TI);
}

//Take over the font from the dialog.
pfont = GetFont();
if(pfont != NULL)
{
m_wndToolTip.SetFont(pfont);
}

//Set the position of the tooltip.
pwndOK = GetDlgItem(IDOK);
pwndOK->GetWindowRect(&rectTemp);
m_wndToolTip.SendMessage(TTM_TRACKPOSITION,
0, (LPARAM)MAKELONG(rectTemp.left, rectTemp.top));

//Show tooltip
memset(&TI, 0, sizeof(TI));
TI.cbSize = sizeof(TI);
m_wndToolTip.SendMessage(TTM_TRACKACTIVATE, TRUE, (LPARAM)&TI);

//Increment the static index
nIndex++;
}
I haven't called the CToolTipCtrl::RelayEvent-function in
CWnd::preTranslateMessage, because the tool
is added with TTF_TRANSPARENT and TTF_TRACK, position with TTM_TRACKPOSITION
and showed with
TTM_TRACKACTIVATE.

Can anybody help me???
Johannes Ody
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top