3

この質問はこれに関連しています。

CDockablePane 派生クラスには、OnCreate() で ToolTip を追加する 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;
}

CDockablePane では既定値が機能しないため、すべてのオプション パラメーターを指定して AddTool() を呼び出す必要があります。CTor で設定され
m_treeRectたメンバです。これは本当に醜いです。CRect(0, 0, 10000, 10000)

m_treeのサイズが変わるたびに、ツールの長方形を調整したいと思います。
だから私はいくつかのものを試しましCMyPane::OnSize()たが、どれもうまくいきませんでした:

  • を呼び出してからrect メンバーm_pToolTip->GetToolInfo()を変更し、次に呼び出しますCToolInfoSetToolInfo()
  • 通話中m_pToolTip->SetToolRect()

それはどのように行われることを意味しますか?

4

2 に答える 2

3

ハンドラーでもう一度呼び出す以外に、これを行う方法はわかりませんDelToolAddToolOnSize

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);
    }
}
于 2009-09-18T21:18:00.443 に答える
0
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;
}
于 2012-03-07T11:35:43.627 に答える