Помогите разобраться с тулбаром

Тема в разделе "WASM.BEGINNERS", создана пользователем elestrago, 16 сен 2010.

  1. elestrago

    elestrago New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2009
    Сообщения:
    56
    Суть вот в чем, есть тулбар и пустое pop-up окно, навожу мышь, но не кликаю! на одну из кнопок тулбара , кнопка подсвечивается
    Затем нажимаю заранее забитую клавишу и меняю программно подсвеченную кнопку(TB_SETHOTITEM) не изменяя положения мыши и двигаю pop-up окно (MoveWindow). И вот тут начинатеся проблема программно подсвеченая кнопка на тулбаре теряет фокус и он возвращяется под мышь. Вопрос как это избежать? Я себе уже все мозги вынес не получается!
     
  2. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    да ты одним постом этим тут всем мозг вынес))
    4 раза читал
    думаю никак
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    elestrago
    Мусье знает толк в извращениях :)
    Наверно логичнее всего будет двигать мышь вслед за кнопкой (см. mouse_event) иначе если искусственно заставить тулбар сохранять фокус возникнет неразбериха какой из них настоящий тот что под мышью или тот что "запомнился" :)
    Хотя можно ещё субклассировать тулбар и после сдвига окна подсовывать ему ложное положение мыши до тех пор пока юзер её не переместит.
     
  4. elestrago

    elestrago New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2009
    Сообщения:
    56
    ладно опишу подробнее, пишу нестандартное меню, ребар - тулбар - меню, pop-up окно это и есть будущее меню, загвостка в том что допустим я кликнул на какую либо кнопку на тулбаре, развернулось окно-меню, дальше к примеру я хочу нажать на клаве стрелку влево или в право чтобы меню выскочило на соседней кнопке, но при этом мне необходимо чтобы курсор мыши оставался там где он есть. вот тут и начинается беда. Кликаю кнопку раскрывается меню, тыкнул стрелку влево(отсылается сообщение TB_PRESSBUTTON это чтобы нажать соседнюю кнопку, затем TB_SETHOTITEM чтобы отдать кнопке фокус, далее срабатывает обработчик события изменения фокуса тобиш TBN_HOTITEMCHANGE он все анализирует и перемещает окно функцией MoveWindow) все перемещается и работает нормально, проблема в том что Функция MoveWindow каким то образом заставляет тулбар очухаться и вернуть фокус под мышку и из за этого меню с соседней кнопки моментально возвращается под мышку, потому что срабатывает TBN_HOTITEMCHANGE.

    Я себе уже все мозги вынес =) прошу вашей помощи
     
  5. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    субклассируй и не отдавай это сообщение как будто его и нет(TBN_HOTITEMCHANGE.)
    зачем двигать окно таак и не понял
     
  6. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    elestrago
    Чесно говоря мне очень не нравится как M$ реализовало тулбар и ребар, имхо если уж делать "нестандартное меню, ребар - тулбар - меню" то лучше вообще отказаться от виндовых заготовок, а сделать их самому, в итоге это окажется проще чем бороться с их заморочками :)
     
  7. elestrago

    elestrago New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2009
    Сообщения:
    56
    punxer
    затем, чтобы меню переместилось под другую кнопку, субкластинг тут не нужен TBN_HOTITEMCHANGE приходит в тело главного окна

    Y_Mur я уже тоже подумываю над тем чтобы не только меню свое сделать, но и тулбар =)