На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Закрытие диалога при потере фокуса
    О как! Вообще у меня контрол порожденный от CEdit c кнопкой. У меня просто в нем дофига доп функций, типа ввода по маске и т.д. Вот и хочу по кнопке вызывать календарь и закрывать если мимо ткнул мышкой. В 6-й студии все работало, правда там я извратился с таймером, если окно не в фокусе больше секунды то закрываем диалог, коряво согласен, но тогда меня устроило. А сейчас захотелось библиотеку перенести в 2013 студию и хочется сделать правильно. Вот как-то так.
      Цитата Sander @
      Вообще у меня контрол порожденный от CEdit c кнопкой. У меня просто в нем дофига доп функций, типа ввода по маске и т.д. Вот и хочу по кнопке вызывать календарь и закрывать если мимо ткнул мышкой.


      Т.е. что-то типа комбо-бокса? Там диалог не нужен, создавай календарь через CreateWindow(...WS_POPUP...), сразу делай для него SetCapture и т.д.
        Не пойму а как тогда в контроле определить состояние курсора? Вывести его на экран положим не проблема, а как организовать взаимодействие, я что-то затрудняюсь :)
          Цитата Sander @
          Не пойму а как тогда в контроле определить состояние курсора? Вывести его на экран положим не проблема, а как организовать взаимодействие, я что-то затрудняюсь

          Что значит "определить состояние курсора" и что значит "организовать взаимодействие"?
            Ну контрол должен как-то узнать что он не активен и самоуничтожиться
              Цитата Sander @
              если окно не в фокусе больше секунды то закрываем диалог,

              А ты возьми и сделай так - если тайм-аут наступил, начинай
              плавно увеличивать прозрачность этого окошка.
              Вплоть до почти полной невидимости.
              А когда поверх пройдёт мышь, сделай окошко 100% видимым.

              Добавлено
              Цитата Sander @
              У меня просто в нем дофига доп функций, типа ввода по маске и т.д.

              Не обязательно делать дополнительный контрол в отдельном диалоге.
              Размести на основном диалоге мааааленькую кнопочку. С номером страницы.
              Это будет переключатель страниц.
              Переключил страницу - увидел календарь. (Или основной диалог.)
              Время прошло, таймер переключил страницу назад.
                Цитата Sander @
                Ну контрол должен как-то узнать что он не активен и самоуничтожиться

                Ты же вроде уже сделал, через SetCapture. Здесь ещё проще, окно только одно, можно сразу после CreateWindow сделать SetCapture, а при нажатии мышки за переделами окна - ReleaseCapture и DestroyWindow

                Добавлено
                Или ты имеешь ввиду, что это не твой контрол и ты не знаешь как обрабатывать его сообщения? Там можно как-то переопределить процедуру окна, SubclassWindow или что-то типа того.
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0281 ]   [ 16 queries used ]   [ Generated: 28.03.24, 08:34 GMT ]