Как установить всплывающую подсказку во время выполнения в MFC Treeview? - PullRequest
0 голосов
/ 29 октября 2010

Как установить всплывающую подсказку во время выполнения в MFC Treeview?

Я создаю дерево как это:

                        m_pTreeview->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |                     
            TVS_SINGLEEXPAND,CRect(38, 82, 220 ,250), this, IDC_NDS_TREEVIEW);

Любая помощь приветствуется.

Ответы [ 4 ]

0 голосов
/ 21 мая 2015

Ответ Панкаджа работает, если вы получаете собственный контроль от CTreeControl.Ответ Кассабланки правильный, только код отсутствует.

Итак, вот несколько советов из моего собственного опыта.

  • Если вы не создаете элемент управления явно, стиль GETINFOTIP можно указать в файле ресурсов, в котором определяется элемент управления.

  • в противном случаестиль можно изменить во время выполнения, получив дескриптор окна дерева

    HWND htreectrl = m_TreeCtrl.GetSafeHwnd ();LONG nOldStyle = GetWindowLong (htreectrl, GWL_STYLE);LONG nNewStyle = nOldStyle & TVS_INFOTIP;SetWindowLong (htreectrl, GWL_STYLE, nNewStyle);

  • Чтобы иметь возможность обрабатывать GETINFOTIP:

    Если вы используете TreeControl как элемент управления внутри диалога:

    ON_NOTIFY (TVN_GETINFOTIP, IDC_TREE, OnMyTreeGetInfoTip)

    Иначе, если вы извлекаете свой собственный элемент управления из CTreeControl, используйте следующее:

    ON_NOTIFY_REFLECT (TVN_GETINPYPINGFINIPTFIPTFITIPTFITP)

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 29 октября 2010

Используйте стиль TVS_INFOTIP для просмотра в виде дерева и обрабатывайте уведомление TVN_GETINFOTIP с помощью обработчика ON_NOTIFY. Введите тип NMHDR ptr в NMTVGETINFOTOOLTIP ptr как (NMTVGETINFOTOOLTIP *) pnmhdr, а затем установите строку всплывающей подсказки в этой структуре.

0 голосов
/ 29 октября 2010

Вот код: - В .H файле

afx_msg void OnMyTreeGetInfoTip(NMHDR pNMHDR, LRESULT pResult);

В блок BEGIN MESSAGE MAP добавьте -

ON_NOTIFY_REFLECT (TVN_GETINFOTIP, OnMyTreeGetInfoTip)

И используйте обработчик

void CMyTreeView::OnMyTreeGetInfoTip(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMTVGETINFOTIP pGetInfoTip = (LPNMTVGETINFOTIP)pNMHDR;   
    CString strItemTxt = m_TreeCtrl.GetItemText(pGetInfoTip->hItem);
    strcpy(pGetInfoTip->pszText, strItemTxt);  
    *pResult = 0;   
}
0 голосов
/ 29 октября 2010

Если вы обращаетесь к всплывающим подсказкам для элементов в древовидном элементе управления, вам нужно добавить TVS_INFOTIP к стилям окна в Create (см. список стилей древовидного представления ).Вам также придется обработать уведомление TVN_GETINFOTIP, чтобы получить текст всплывающей подсказки в зависимости от элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...