Re[2]: Сменна фокуса ввода в новигационном сообщении TVN_SELCHANGED
От: Melamed Россия  
Дата: 30.04.23 18:33
Оценка:
Здравствуйте, Carc, Вы писали:

C>Здравствуйте, Melamed, Вы писали:


M>>Здравствуйте

M>>Хотелось бы при выборе определенного узла в TreeView фокус ввода автоматически передавался бы на в другой контроль в этом же главном окне. Для этого в новигационом сообщении TVN_SELCHANGED, полученном от моего TreeView Control вызываю API функцию SetFocus(). Но она почему то не работает.
M>>Операционная система MS Windows 10.
M>>Подскажите пожалуйста, в чем тут дело.
M>>Заранее благодарен
C>Где фокус в момент получения TVN_SELCHANGED?
В Момент обработки сообщения фокус находился на TreeView, от которого пришло данное сообщения
C>Где обрабатывается TVN_SELCHANGED?
В Родительском окне
C>И вообще код в студию!

Обработка сообщения TVN_SELCHANGED следующая
    case IDC_TREEVIEW:
    {
        switch (pHdr->code)
        {
        case TVN_SELCHANGED:
        {
            LPNMTREEVIEW pNTV = (LPNMTREEVIEW)pHdr;
            CShFolder *pFolder = (CShFolder*)pNTV->itemNew.lParam;
            TCHAR szBuffer[MAX_PATH];
            pFolder->GetFullName(szBuffer, MAX_PATH);
            SendMessage(
                m_hwndStatusBar,
                SB_SETTEXT,
                0,
                (LPARAM)szBuffer
            );
            if (_tcslen(szBuffer) > 0)
            {
                Check_Win(SetCurrentDirectory(szBuffer));
                SendMessage(
                    m_hwndImageTable,
                    ITM_FILLFILEBYMASK,
                    (WPARAM)szBuffer,
                    0
                );
                int nImageCount = SendMessage(
                    m_hwndImageTable,
                    ITM_GETIMAGECOUNT,
                    0,
                    0
                );
                if (nImageCount > 0)
                {
                    SetFocus(m_hwndImageTable);
                }
            }
            break;
        }
        }
        break;
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.