Visual c++ 在MFC中,如何增加工具提示保持可见的时间

Visual c++ 在MFC中,如何增加工具提示保持可见的时间,visual-c++,mfc,Visual C++,Mfc,我使用下面的代码创建工具提示 m_ctrlToolTip.Create(this, TTS_ALWAYSTIP|TTS_BALLOON); m_ti.cbSize = sizeof(TOOLINFO); m_ti.uFlags = TTF_IDISHWND|TTF_TRACK|TTF_TRANSPARENT|TTF_ABSOLUTE; m_ti.hwnd = m_hWnd; m_ti.hinst = NULL; m_ti.uId = (UINT)1; m_ti.lpszText = "";;

我使用下面的代码创建工具提示

m_ctrlToolTip.Create(this, TTS_ALWAYSTIP|TTS_BALLOON);

m_ti.cbSize = sizeof(TOOLINFO);
m_ti.uFlags = TTF_IDISHWND|TTF_TRACK|TTF_TRANSPARENT|TTF_ABSOLUTE;
m_ti.hwnd = m_hWnd;
m_ti.hinst = NULL;
m_ti.uId = (UINT)1;
m_ti.lpszText = "";;
m_ti.rect=CRect(0,0,0,0);

m_ctrlToolTip.SetMaxTipWidth(SHRT_MAX);
m_ctrlToolTip.SetDelayTime(TTDT_AUTOPOP,5000);
m_ctrlToolTip.Activate(TRUE);

void CLadIOView::OnMouseMove(UINT nFlags, CPoint point)
{
    static CPoint prevPoint =0;
    static CLadRemoteIOModule* pLastIO=NULL;

    CLadRemoteIOModule* pLastIO1=pLastIO;
    pLastIO=NULL;

    bool bToolTipSet = false;
    // Go thru each module already added
    POSITION pos = gobjEztouchApp.m_objLadderLogic.m_objSysAttr.m_objRemoteIOModuleLst.GetHeadPosition();
    for( ; pos != NULL; )
    {
        CLadRemoteIOModule* pIO = gobjEztouchApp.m_objLadderLogic.m_objSysAttr.m_objRemoteIOModuleLst.GetNext(pos);

        // Get the rectangle for the module
        CRect rectModule = GetIOModuleRect(pIO->m_nModulePosition);
        if(!rectModule.PtInRect(pt)) continue;
        pLastIO=pIO;
        if(pLastIO1==pIO)  break;       
        if(!m_bMouseDown && !m_bPlacingANewModule && prevPoint != pt)
        {           
            CString sDescription, sPartNumber, sAddressRange;
            GetIOModuleText2(pIO,sDescription, sPartNumber, sAddressRange);
            sPartNumber.Remove('[');
            sPartNumber.Remove(']');

            CString sModuleDetails;
            sModuleDetails.Format(_T("Position: M%d\nModule Type: %s\nModule Part No: %s"), pIO->m_nModulePosition+1, sDescription,sPartNumber);
            if(pIO->GetIPSize() > 0)
                sModuleDetails+=_T("\nInput Address: ")+ pIO->GetInputAdr()+_T(" - ")+pIO->GetEndInputAdr();
            if(pIO->GetOPSize() > 0)
                sModuleDetails+=_T("\nOutput Address: ")+ pIO->GetOutputAdr()+_T(" - ")+pIO->GetEndOutputAdr();

            CPoint pp = pt-GetScrollPosition();
            ClientToScreen(&pp);

            m_ctrlToolTip.UpdateTipText(sModuleDetails,this,1);
            m_ctrlToolTip.SendMessage(TTM_TRACKPOSITION, 0, (LPARAM)MAKELPARAM(pp.x, pp.y+16));//+16 to move the tooltip stem down
            m_ctrlToolTip.SendMessage(TTM_TRACKACTIVATE, TRUE, (LPARAM)&m_ti);


            //to track mouse leave abd there we can remove tooltip
            TRACKMOUSEEVENT tk;
            tk.cbSize = sizeof(tk);
            tk.dwFlags = TME_LEAVE;
            tk.hwndTrack = m_hWnd;
            _TrackMouseEvent(&tk);

            prevPoint = pt;

            bToolTipSet = true;
        }
        bToolTipSet = true;
        break;
    }


if(!bToolTipSet)
{
    m_ctrlToolTip.SendMessage(TTM_TRACKACTIVATE, FALSE, (LPARAM)&m_ti);
    m_ctrlToolTip.UpdateTipText("",this,1);
    m_ctrlToolTip.Pop();
}
工具提示在几秒钟内保持可见,然后消失。我发现这段时间太短,无法阅读一些较长的工具提示。有没有办法延长它们保持可见的时间

我尝试使用setdelaytime函数来增加时间,但它对我没有帮助


提前谢谢。

您能告诉我它的显示时间吗?一旦工具提示出现,它就会立即消失。自动弹出时间有帮助吗?你能告诉我它的可视时间是多少秒吗?一旦工具提示立即出现,它就会消失。自动操作时间有帮助吗?