На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (251) « Первая ... 245 246 [247] 248 249 ... Последняя »  ( Перейти к последнему сообщению )  
> Windows vs. Linux , Продолжение
    Цитата Qraizer @
    Не объяснил. Автору приложения могло быть важно, чтобы от открытия модального окна и до его закрытия доступ к родительскому был блокирован. Может быть он параллельной ниткой в фоне zipует его сериализированный образ. Вы вообще представляете, что значит "только изменить размер окна"? Какую лавину событий это вызовет и сколько кода - пользовательского! - в этом будет задействовано? И этот пользовательский код вот возьмёт и выполнит повторное вхождение в процедуры обрабтки событий, которые как бы уже залочены модальностью дочернего окна.

    Кто ж так GUI пишет? Я, конечно, в GUI плохо разбираюсь с точки зрения программирования, но все-таки это как-то странно...
      Цитата amk @
      В конце концов передвинуть окно можно и без перерисовки... Да, часть окна окажется пустым.

      Такое поведение обычно вызывает спам багзиллы :jokingly:
        Цитата D_KEY @
        Кто ж так GUI пишет?
        Модальное окно на то и модальное по дизайну WinAPI, что оно гарантирует отсутствие событий в родительском окне, которые могли бы потребовать исполнения пользовательского кода для их обслуживания. И да, amk, для диалогов сохранения обычно важно, чтобы контент окна не менялся от момента появления окна, и вплоть до сохранения документа. Не следует же напоминать, что не только пользователь может его изменить, SendMessage() из какого-нибудь трояна запросто прощемится за спиной у юзера, а тот ничего и не заметит. Важно, чтобы сохранён был именно тот контент, который он собрался сохранить.
        Если такой гарантии не требуется, есть немодальные окна, и если при этом автор сделал неверный выбор, то это его проблемы. Может быть ему так было просто проще, хотя это не аргумент, конечно. Если юзер напишет автору, мол, неудобно, сделай иначе, он может и переделать. Но вряд ли он будет переписывать ради одного-двух клиентов. Я вот лично не стал бы, однозначно. Ибо это значит, что ради одного-единственного короткого момента времени мне потребуется переписать всю оконную функцию, чтобы она фильтровала сообщения, обеспечивала транзакционность, может быть даже приплести к этому многопоточность и синхронизацию.

        Добавлено
        Вероятно дизайн GUIя в MacOSях таков, что модальность дочернего окна ничего не гарантирует. Ну что ж, мне немного жаль разработчиков приложений, вынужденных работать без гарантий (хотя если там всё инкапсулировано в библиотеки, то и фиг с ним).
        Сообщение отредактировано: Qraizer -
          Цитата Keepun @
          Такое поведение обычно вызывает спам багзиллы
          На самом деле модальное окно не блокирует работу лежащих под ним окон. Так, если приложение допускает фоновую обработку и выводит в окно, например прогресс-бар, то при открытии диалогов открытия/сохранения файлов перерисовка прогресс-бара не останавливается. Да и двигать само модальное окно можно. Так что полных гарантий не дают и модальные окна Windows. Видимо, единственное, что они делают - блокируют или перенаправляют сообщения пользовательского интерфейса. Включая системные сообщения окна.
            Цитата Qraizer @
            Цитата D_KEY @
            Кто ж так GUI пишет?
            Модальное окно на то и модальное по дизайну WinAPI, что оно гарантирует отсутствие событий в родительском окне, которые могли бы потребовать исполнения пользовательского кода для их обслуживания. И да, amk, для диалогов сохранения обычно важно, чтобы контент окна не менялся от момента появления окна, и вплоть до сохранения документа. Не следует же напоминать, что не только пользователь может его изменить, SendMessage() из какого-нибудь трояна запросто прощемится за спиной у юзера, а тот ничего и не заметит. Важно, чтобы сохранён был именно тот контент, который он собрался сохранить.
            Если такой гарантии не требуется, есть немодальные окна, и если при этом автор сделал неверный выбор, то это его проблемы. Может быть ему так было просто проще, хотя это не аргумент, конечно. Если юзер напишет автору, мол, неудобно, сделай иначе, он может и переделать. Но вряд ли он будет переписывать ради одного-двух клиентов. Я вот лично не стал бы, однозначно. Ибо это значит, что ради одного-единственного короткого момента времени мне потребуется переписать всю оконную функцию, чтобы она фильтровала сообщения, обеспечивала транзакционность, может быть даже приплести к этому многопоточность и синхронизацию.

            Добавлено
            Вероятно дизайн GUIя в MacOSях таков, что модальность дочернего окна ничего не гарантирует. Ну что ж, мне немного жаль разработчиков приложений, вынужденных работать без гарантий (хотя если там всё инкапсулировано в библиотеки, то и фиг с ним).

            Вероятно ты просто не понимаешь, что в иксах и макоси операции с окном (читай рамкой: изменение размеров, перемещение) никак не связаны с содержимым окна (виджетами), т.к. первым заведуют иксы и WM, а вторым тулкит (GTK, Qt).
              Короче. Про мордальные и немордальные окна. В винде я могу реализовать любое решение, если прикажет менеджер. Решать как будет удобно пользователю - не задача программиста, будем делать всё что угодно, возможности есть.
                Цитата Бобёр @
                В винде я могу реализовать любое решение, если прикажет менеджер. Решать как будет удобно пользователю - не задача программиста

                Но и не менеджера. А если исходить из того, что обычно дизайнеры чуть ли ни кипятком писают от продукции Apple, то подозреваю, что с этим там все в порядке.
                  Цитата D_KEY @
                  обычно дизайнеры чуть ли ни кипятком писают от продукции Apple

                  Здесь "обычно" и "чуть ли ни" абсолютно лишние...
                    Цитата korvin @
                    Ну дык, когда он тыкнет по виджету родительского окна, для него это станет очевидным, рамку-то зачем блокировать?

                    потому что рамка - это неотъемленная часть окна, по крайней мере так в ХП. Само модальное окно, порсто берет весь цикл обработки сообщений направленный родительскому окну - на себя. И все. Т.е. все сообщения направленные родителю будут посылаться модальному окну, оно их будет сжирать, просто это будут заглушки по сути выполнятся.

                    Цитата korvin @
                    спокойно смотреть фильм/играть в игру, серфить в интернете, работать. И ничего не мешает.

                    Я вот уже и не вспомню, когда же у меня выскакивали окна, постоянно мешая мне смотреть фильм и играть в игры. Вот хз. Вылетали только те оповещения, которые были очень нужными. Т.е. звоник со скайпа, или например что какая то задача, специально мною запущеная с оповещением выполнилась. А чтоб вот так как у тебя, что невозможно сидеть за компом и работать т.к. вылетают всякие оповещения об обновлении и т.д. у меня небыло :-? Поэтому я затрудняюсь помочь тебе. Попроси специалиста поставить и настроить тебе систему, возможно тогда ты изменишь свое представление об ОС.

                    Цитата korvin @
                    Сейчас (виста, семерка) может и да, как-то не пробовал, но еще недавно удалить что-то важное с диска C не составляло труда, особенно учитывая, что умолчальный аккаунт создается с админскими правами и пользователи так под ним и сидят.

                    Имеется ввиду, что винда не даст допустим отформатировать диск С, удалять с него можно, но вот чтобы всю систему стереть нельзя.

                    Цитата korvin @
                    Да ты тоже кандидат на нобелевку по логике.

                    :thanks:

                    Добавлено
                    Цитата D_KEY @
                    Кто ж так GUI пишет? Я, конечно, в GUI плохо разбираюсь с точки зрения программирования

                    ИМХО тут вопрос противоречит дальнешей фразе.... Значит вопрос не корректный :-?

                    Добавлено
                    Цитата D_KEY @
                    но все-таки это как-то странно...

                    Что странного? Модальное окно - оно на то и модальное окно, чтобы приостановить дальнейшую работу основного рпиложения, с какой либо целью, например чтобы запросить какие то данные. Какие то паралельные вычисления - ты можешь делать в других потоках, у тебя просто нет доступа к окну родителя, все сообщения которые посылаются окну родителя, перехватываются дочерним модальным диалогом. Что тут странного? :-?
                      Цитата KILLER @
                      Что странного? Модальное окно - оно на то и модальное окно, чтобы приостановить дальнейшую работу основного рпиложения, с какой либо целью, например чтобы запросить какие то данные. Какие то паралельные вычисления - ты можешь делать в других потоках, у тебя просто нет доступа к окну родителя, все сообщения которые посылаются окну родителя, перехватываются дочерним модальным диалогом. Что тут странного?
                      Не надо ля-ля. Ничего они не перехватываются. Просто у окна, показанного модально, свой цикл обработки очереди сообщений, в котором сообщения родительскому окну выбираются из очереди и диспетчеризуются его оконной процедуре так же, как и в "основном" цикле обработки сообщений. И у "модально перекрытого" окна также спокойно работает таймер на WM_TIMER, и обрабатываются WM_NCPAINT и WM_PAINT - иначе бы это окно не перерисовывалось при перекрытии другими окнами. И так же спокойно "модально перекрытое" окно обработает программно созданное WM_SIZE и т.д. - проверьте с помощью Spy++. Так что про какие гарантии говорят KILLER и Qraizer - мне не понятно. Гарантия то только одна - юзер ни хрена не может, и всё.
                        Цитата Adil @
                        И у "модально перекрытого" окна также спокойно работает таймер на WM_TIMER, и обрабатываются WM_NCPAINT и WM_PAINT - иначе бы это окно не перерисовывалось при перекрытии другими окнами. И так же спокойно "модально перекрытое" окно обработает программно созданное WM_SIZE и т.д. - проверьте с помощью Spy++

                        Это понятно, иначе бы при перетаскивании того же модального окна, оставался бы "след от него" на родительском.
                        Имелось ввиду, что сообщения направленные главному окну, во всяком случае фокус, тут же перенаправляется с родительского на дочернее. Видимо именно так оно и сделано, или подобно. Поэтому не поменяет оно размер, так как для того чтобы поменять размер, нужно чтобы фокус был на родительском окне, а этого не даст модальное.
                          Цитата KILLER @
                          потому что рамка - это неотъемленная часть окна, по крайней мере так в ХП.

                          Вот именно, а в иксах это не так.

                          Цитата KILLER @
                          Попроси специалиста поставить и настроить тебе систему, возможно тогда ты изменишь свое представление об ОС.

                          Зачем мне кого-то просить? Я поставил систему в которой меня все устраивает искаробки =)

                          Цитата KILLER @
                          Имеется ввиду, что винда не даст допустим отформатировать диск С, удалять с него можно, но вот чтобы всю систему стереть нельзя.

                          Ну, ЕМНИП, mkfs на примонтированном устройстве тоже нельзя сделать, завтра проверю в виртуалке.
                            Цитата korvin @
                            Вот именно, а в иксах это не так.

                            И что? В винде то что ты хочешь - реализуется с помошью обычных диалогов. Я хз из какой мухи ты слона раздул, но это реально спор ни о чем.

                            Цитата korvin @
                            Зачем мне кого-то просить? Я поставил систему в которой меня все устраивает искаробки =)

                            Ну так видимо ты не то ставил, какую нить хрень небось поставил или специально настроил так шобы тут возмущаца. У меня таких проблем небыло, хотя ставил я тоже просто так искаропки, ниче не настраивал практически, и ничего, доволен, таких проблем как у тебя у меня небыло :-?

                            Цитата korvin @
                            Ну, ЕМНИП, mkfs на примонтированном устройстве тоже нельзя сделать, завтра проверю в виртуалке.

                            ЕМНИП давно была об этом тема, там предоставляли команду под линуксом которая его сносила, возможно вру, но что то такое помню. Нужно будет поискать. Уточнить.
                              Цитата amk @
                              ... Так что полных гарантий не дают и модальные окна Windows. ...
                              Это действия самого программиста, и о подобных KILLER как раз и говорил. Программист сам по своей инициативе это сделал, и априори его код на это расчитан. Это явно не та ситуация, когда программист полагается на ОСь, а та его обманывает.
                              Цитата korvin @
                              ты просто не понимаешь, что в иксах и макоси операции с окном (читай рамкой: изменение размеров, перемещение) никак не связаны с содержимым окна (виджетами), т.к. первым заведуют иксы и WM, а вторым тулкит (GTK, Qt).
                              Это как раз попадает под
                              Цитата Qraizer @
                              хотя если там всё инкапсулировано в библиотеки...
                              ОС тут не запрещает абсолютно что-либо, она просто выполняет свои by design гарантии, а как ведут себя библиотеки, это их дело, и обеспечивать программисту "всё хорошо" уже их задача.
                              Цитата Adil @
                              И у "модально перекрытого" окна также спокойно работает таймер на WM_TIMER, и обрабатываются WM_NCPAINT и WM_PAINT - иначе бы это окно не перерисовывалось при перекрытии другими окнами. И так же спокойно "модально перекрытое" окно обработает программно созданное WM_SIZE и т.д. - проверьте с помощью Spy++. Так что про какие гарантии говорят KILLER и Qraizer - мне не понятно.
                              И те, и другие и неупомянутые остальные сообщения не имеют того влияния на пользовательский код, которые могут привести к нарушению данных ОСью гарантий. Точнее, не должны иметь. Не дураки же GUI API проектировали, что не запретили то, что можно было не запрещать. Читать мануалы программист таки обязан. И если там написано, что WM_PAINT должно только отрисовывать окно и ничего больше, то если там ещё реализован кусок бизнес-логики, ОСь тут бессильна.
                              Вообще что касается повторных входов в оконную функцию, то всё это подробно и внятно описано и даже с примерами, когда что может возникуть, когда нет. Как всегда спор о том, что кое-кому чего-то хочется, не смотря ни на что, и ему плевать на дизайн системы. Вот завтра - точно говорю, так и будет - мне восхочется, чтобы в линухе появился DirectX. там делов-то, библиотечку с thunk-ами вокруг OpenGL набросать.
                                Ну так, и правильно - вот только какую бизнес логику можно сунуть в обработчики WM_NCMOUSEMOVE, WM_NCMOUSEDOWN и WM_NCMOUSEUP, что микрософтовцы запретили перетаскивание родительского окна?

                                А какую цель они преследовали, делая окно msconfig с неизменяемыми размерами во всей линейке виндоуз? Доставить удовольствие юзеру в прохождении квеста, желающему посмотреть в каком ключе реестра прописан автозапуск проги?
                                Прикреплённая картинка
                                Прикреплённая картинка
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,2725 ]   [ 16 queries used ]   [ Generated: 19.05.24, 22:44 GMT ]