Fool's Garden

Talking about Windows Mobile and Embedded gadgets...Web counter

导航

Repositioning Tooltip Control

Posted on 2004-09-28 16:19  Levins Dai  阅读(910)  评论(0)    收藏  举报

Tooltip是一个很常见的Control,在MFC里面也提供了便利和丰富的支持。Tooltip显示的时候缺省是在所关联的控件的下方,但是在某些情况下,我们可能需要重新定位Tooltip的显示位置。一般来说(对于使用MFC内置Tooltip机制),Tooltip在显示之前会发送TTN_NEEDTEXTA / TTN_NEEDTEXTW给其关联的父窗口,请求Tooltip的字串内容,这个时候,可以通过发送一个TTM_ADJUSTRECT消息,然后调用SetWindowPos来重新定位Tooltip的位置,代码就像这样:

BOOL CPicViewPage::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
   // need to handle both ANSI and UNICODE versions of the message
   TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
   TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;

    // set pTTTA or pTTTW's szText field to tell Tooltip the text that are expected.
    // ...........

    
   ::SendMessage(pTTTA->hdr.hwndFrom, TTM_ADJUSTRECT, TRUE, (LPARAM)&rc);
   ::SetWindowPos(pTTTA->hdr.hwndFrom, HWND_TOPMOST, rc.left, rc.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
   
    
return TRUE;    // message was handled
}

btw, 现在博客园的功能是越来越多了,真是不错。提个小建议,能否在“插入代码”功能里加上对C++代码的支持~照顾一下C++程序员,呵呵。