2009-05-15 29 views
3

この質問はrelated to this oneです。 CDockablePane派生クラスでCToolTipCtrlのツール矩形を変更する方法は?

私は(OnCreate関数にツールヒントを追加しているためCTreeCtrlのメンバを持っている):

int CMyPane::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
    if (CDockablePane::OnCreate(lpCreateStruct) == -1) 
     return -1; 

    const DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 
     TVS_CHECKBOXES | TVS_DISABLEDRAGDROP | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | 
     TVS_INFOTIP | TVS_NOHSCROLL | TVS_SHOWSELALWAYS; 

    if(!m_tree.Create(dwStyle, m_treeRect, this, TREECTRL_ID)) { return -1; } 

    m_pToolTip->AddTool(&m_tree, LPSTR_TEXTCALLBACK, &m_treeRect, TREECTRL_ID); 
    m_tree.SetToolTips(m_pToolTip); 


    return 0; 
} 

デフォルト値は勝ったので、私はオプションのパラメータのすべてにAddTool()を呼び出す必要がありますCDockablePaneで作業します。
m_treeRectは、CTorの(0, 0, 10000, 10000)に設定されたCRectメンバです。これは本当に醜いです。

m_treeのサイズが変更されるたびにツールの矩形を調整したいと思います。
だから私はCMyPane::OnSize()にいくつかのものを試してみましたが、それのどれも働いた:

  • が、それが意味しているどのようにm_pToolTip->SetToolRect()

を呼び出すSetToolInfo()

  • を呼び出し、その後、CToolInfoのRECTメンバーを変更m_pToolTip->GetToolInfo()を呼び出します行われなければ?

  • 答えて

    3

    私はあなたのOnSizeハンドラ内で再びAddTool、その後DelToolを呼び出すよりも、この他を行うには他の方法を知っていない:

    void CMyPane::OnSize(UINT nType, int cx, int cy) 
    { 
        CDockablePane::OnSize(nType, cx, cy); 
    
        if (m_pToolTip != NULL) 
        { 
         m_pToolTip->DelTool(&m_tree, TREECTRL_ID); 
    
         CRect treeRect; 
         m_tree.GetClientRect(treeRect); 
    
         m_pToolTip->AddTool(&m_tree, LPSTR_TEXTCALLBACK, &treeRect, TREECTRL_ID); 
        } 
    } 
    
    1
    int CMyPane::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    { 
        if (CDockablePane::OnCreate(lpCreateStruct) == -1) 
         return -1; 
    
        const DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 
         TVS_CHECKBOXES | TVS_DISABLEDRAGDROP | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | 
         TVS_INFOTIP | TVS_NOHSCROLL | TVS_SHOWSELALWAYS; 
    
        if(!m_tree.Create(dwStyle, m_treeRect, this, TREECTRL_ID)) { return -1; } 
    
        m_pToolTip->AddTool(&m_tree, LPSTR_TEXTCALLBACK, &m_treeRect, TREECTRL_ID); 
        m_tree.SetToolTips(m_pToolTip); 
    
    
        return 0; 
    } 
    
    +1

    あなたが投稿したコードの違いは何を?私はそれを見ない... – foraidt

    関連する問題