singlepost

Window TreeView << На главную или назад  

Уже всё в мсдн по ссылкам перекопал, не могу понять, почему не приходят сообщения в оконную процедуру от дочернего окна TreeView.

В WinMain создаю окно со стилями: WS_OVERLAPPEDWINDOW|WS_VISIBLE,
Дочернее окно тривью со стилями WS_VISIBLE | WS_CHILD | TVS_HASLINES|TVS_LINESATROOT| TVS_HASBUTTONS| WS_THICKFRAME,

из БД достаю запросом данные из таблички для заполнения дерева, оно заполняется нормально, после этого входим в цикл обработки сообщений.

И в оконную процедуру главного окна не доходят сообщения (месседжбоксы не появляются)
case TVN_KEYDOWN:
MessageBox(hwnd,"TVN_KEYDOWN","Treeview",0);
return FALSE;
case TVN_SELCHANGED:
MessageBox(hwnd,"TVN_SELCHANGED","Treeview",0);
return FALSE;
case TVN_SELCHANGING:
//LPNMHDR lpnmh = (LPNMHDR) lParam;
MessageBox(hwnd,"TVN_SELCHANGING","Treeview",0);
return FALSE;
case NM_CLICK:
//LPNMHDR lpnmh = (LPNMHDR) lParam;
MessageBox(hwnd,"NM_CLICK","Treeview",0);
return FALSE;

При этом другие сообщения для родительского окна нормально обрабатываются (WM_COMMAND, WM_PAINT).

Подскажите куда копнуть, что я мог пропустить?

2 ответов в теме “Window TreeView”

  1. 2
    Сергей Герниченко ответил:

    Кажись, я уже разобрался… я просто неправильно понял фразу "This notification message is sent in the form of a WM_NOTIFY message".

    МСДН лайбрери читаю локально… с сайта ссылка в данный момент почему-то не открывается…

    в общем, насколько я понял из найденных экзамплов, надо так:

    switch (msg)
    {
    case WM_NOTIFY:
    switch ((LPNMHDR) lParam -> code){
    case TVN_SELCHANGED:
    ………..
    }
    }

    ну и если контролов несколько, то различать их по ID, в той же code поле idFrom.

    Как-то не очевидно эт в MSDN описано просто, видать нада чаще программированием заниматься, а не (подставить по вкусу)….

  2. 1
    Андрей Горбоконь ответил:

    > case TVN_KEYDOWN:
    для этого условия switch от какой переменной берешь?

    мм.. что-то мне кажется, что мы разные msdn'ы читаем..
    //msdn.microsoft.com/en-us/library/bb773540(VS.85).aspx

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.