Змінюй хід війни! Допомагай ЗСУ!

Windows 8

  • Автор теми Автор теми anis
  • Дата створення Дата створення

несколько дней - ставил и тестил mono + WinForms для онного :)

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

щас затестим :D
 
несколько дней - ставил и тестил mono + WinForms для онного :)
:)
Дальше он Линукс не трогает — только когда приходят пацаны, он перезагружается в него. Ну или еще проще — удалить этот непонятный Линукс вообще, мотивируя это тем, что он какой-то глючный, непонятный и в нём не идёт контер страйк.

Ну или FPS в кризисе маленький :підстолом:
 
WM_MINIMIZE только информирует окно о том что его сворачивают, система свернет окно даже если поток прокачивающий сообщения вообще завис и не обрабатывает сообщения ;)
Я больше скажу - в играх как правило используется игровой цикл, не обрабатывающий оконные сообщения, так вот любую игру можно без проблем свернуть даже из полноэкранного режима

Сообщение WM_SYSCOMMAND хоть уведомляющее, но оно, блин, не асинхронное. Рихтера я читал.

PS. Как вы представляете себе работу SC_CLOSE, если WM_SYSCOMMAND была бы асинхронной?

PPS Под синхронным/асинхронным сообщением я имел в виду метод его отправки и получение результата.
 
начить так, докладываю :D

после подвисания потока качающего месаджи 5 секунд окно не реагирует на нажатия системных кнопок в углу (minimize, maximize, close), .
Через пять секунд система начинает соображать что окну плоховато и добавляет в в заголовок окна строчку "(not responding)", после этого прекрасно начинают работать кнопочка minimize :)

Единственное ошибся - анимация сворачивания такого окна не работает - сворачивается мгновенно, зато разворачивается с анимацией :D

Тестовое приложение приколачиваю, тестил на Win7 :)


Добавлено: Сорри, да ошибся - Win+D работает только через 5 секунд после зависания, ну 5 сек подождать не проблема :)
 
:підстолом:

Особо новая задумка M$, так же известная как «семка», призывающая на помощь свистелки и перделки линупсоидных Compiz Fusion и KDE 4.1 для привлечения большего количества Гламурных Кис, среднестатистического ***** и прочих школьников. Алсо привлекает и других, в основном быстротой работы (хотя быстрей compiz у них не вышло, но до уровня ХР после висты они вернулись), но так же некоторой полезностью функций отдельных свистелок и перделок, например, Aero Peek. На данный момент финальная версия уже спижжена.
 
нет винды под рукой. Завтра, может, вплотную займусь даным вопросом.

начить так, докладываю :D

после подвисания потока качающего месаджи 5 секунд окно не реагирует на нажатия системных кнопок в углу (minimize, maximize, close), но прекрасно реагирует на Win+D, после этого можно развернуть нужную другую прогу - зависшая останется свернутой.
Через пять секунд система начинает соображать что окну плоховато и добавляет в в заголовок окна строчку "(not responding)", после этого прекрасно начинают работать кнопочка minimize :)

Тестовое приложение приколачиваю, тестил на Win7 :)

Исходники почему не прилепил? За бинарник можно быть обруганным нехорошими словами.
 
Исходники почему не прилепил? За бинарник можно быть обруганным нехорошими словами.

не боись, бинарник дотнетный :D


исходник вот :D (мусор от дизайнера выкинул):

Код:
using System;
using System.Windows.Forms;
using System.Threading;


    public class FormMain : Form
    {
        public FormMain()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            this.button1.Location = new System.Drawing.Point(12, 12);
            this.button1.Size = new System.Drawing.Size(260, 34);
            this.button1.Text = "Halt Message Pumping";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            this.ClientSize = new System.Drawing.Size(284, 140);
            this.Controls.Add(this.button1);
            this.Text = "FormMain";
            this.ResumeLayout(false);
        }

        private System.Windows.Forms.Button button1;

        private void button1_Click(object sender, EventArgs e)
        {
            while (true) Thread.Sleep(100);
        }

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FormMain());
        }
    }

нет винды под рукой. Завтра, может, вплотную займусь даным вопросом.

ты пока на mono попробуй :ги:

Не SuspendLayout зови, а хотя бы аналог Посилання видалено. Чтоб поток стопорился, а не какой-то, хрен знает как реализованный, "layout logic for the control"

та при чем тут SuspendLayout :D Ты конструктор не смотри, там просто всякая фуета размещающая кнопку на форме, задающая размеры окна и кнопки... ;)
Сам обработчик смотри чуть ниже - в методе button1_Click ;)

упс... сообщение твое пропало :)
 
Останнє редагування:
моно не при делах. В линухе ж оконный менеджер отрисовывает рамки с кнопками "системными".

Да нету его у меня. :D
 
моно не при делах. В линухе ж оконный менеджер отрисовывает рамки с кнопками "системными".

а что в линухе свою кнопку нельзя засандалить на рамку окна?

Да нету его у меня. :D

а ты поставь, интересно проверить :D
 
да какая разница, всеравно while(true) :)
можно заменить на:
Код:
Thread.Sleep(Timeout.Infinite);

Какой наивность :D А где гарантия того, что не вызовется WindowProc?

всеравно сворачивается :)

Вот так и появились гомосексуалисты.

Кстати, зачем пихать свою кнопку в заголовок окна?:confused:

а что в линухе свою кнопку нельзя засандалить на рамку окна?
Сам понял, что спросил? :) В Линухе можно все ;) Если что-то не реализовано или закрытый код (крайне редко бывает такое), то есть исходники.
 
Какой наивность :D А где гарантия того, что не вызовется WindowProc?

button1_Click( вызывается из WndProc, пока не отработает, не вызовется, если явно Application.DoEvents не сделать

для надежности можно добавить еще немного кода :D:
Код:
        private bool stop = false;

        private void button1_Click(object sender, EventArgs e)
        {
            stop = true;
            Thread.Sleep(Timeout.Infinite);
        }

        protected override void WndProc(ref Message m)
        {
            if (stop) Thread.Sleep(Timeout.Infinite);
            base.WndProc(ref m);
        }
 
Сделай еще окно развернутым на весь экран и поверх всех окок и тащись :)
Вернемся к Жабе. Какой нахрен кайф от такой свистопляски? Почему Посилання видалено не сделали нормально, чтоб окно можно было свернуть нажатием на кнопку сворачивания при любых обстоятельствах?
Сообщение пропало потому, что sleep в твоем коде проморгал.:rolleyes:
 
Сделай еще окно развернутым на весь экран и поверх всех окок и тащись :)

вот:

Код:
        private void button1_Click(object sender, EventArgs e)
        {
            TopMost = true;
            WindowState = FormWindowState.Maximized;
            stop = true;
            Thread.Sleep(Timeout.Infinite);
        }

через 5 секунд окно можно спокойно свернуть, переместить или закрыть :)
 
Ключевое слово пять секунд :D

Вернемся к Жабе. Какой нахрен кайф от такой свистопляски? Почему программисты из Microsoft не сделали нормально, чтоб окно можно было свернуть нажатием на кнопку сворачивания при любых обстоятельствах?
 
Ключевое слово пять секунд :D

пять секунд система дает окну на реакцию, если окну плохо, тогда в ход идет тяжелая артилерия :) Я думаю этот интеравал можно поменять гдето в реестре, но думаю выбран он не случайно а хорошо подобран на основе статистики. Если его сильно уменьшать, может пострадать плавность анимации, быстродействие и т.п.
 
пять секунд система дает окну на реакцию, если окну плохо, тогда в ход идет тяжелая артилерия :) Я думаю этот интеравал можно поменять гдето в реестре, но думаю выбран он не случайно а хорошо подобран на основе статистики. Если его сильно уменьшать, может пострадать плавность анимации, быстродействие и т.п.

Ояебу :D Рассмотрим ситуацию:
* у меня на рабочем столе расположено пару окон, одно из которых Жабы
* в Жабе я запускаю запрос, который будет предположительно выполняться сервером 30-60 минут
* я хочу во время ожидания жабой результатов заниматься другими вещами, проверяя доступность оной каждую минуту

Предлагаешь мне каждую минуту ждать по пять секунд, когда винда решит, что окно не отвечает на сообщения (это ж млять
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
за меня всё давно подумали и решили как мне лучше будет) и свернет окно. Или прикажешь свернуть все окна, а потом как ******* выдергивать каждое по одному (кстати бывают случаи когда сам explorer к куям виснет)? И так повторять каждую минуту? :D

PS
Вернемся к Жабе. Какой нахрен кайф от такой свистопляски? Почему программисты из Microsoft не сделали нормально, чтоб окно можно было свернуть нажатием на кнопку сворачивания при любых обстоятельствах?
 
Вернемся к Жабе. Какой нахрен кайф от такой свистопляски? Почему программисты из Microsoft не сделали нормально, чтоб окно можно было свернуть нажатием на кнопку сворачивания при любых обстоятельствах?

что касается цикла выборки сообщений, да в Win есть тут кое-какие проблемы с временем реакции если произошел не типовой сценарий, в Win7 с этим кстати стало получше. Но такие ситуации возникают достаточно редко.
Я не думаю что 5 секундный лаг из-за неправильной программы на жабе (или самой жабы) - это повод для расстройства. С такими случаями редко сталкиваешься...
 
что касается цикла выборки сообщений, да в Win есть тут кое-какие проблемы с временем реакции если произошел не типовой сценарий, в Win7 с этим кстати стало получше. Но такие ситуации возникают достаточно редко

Ну что ты чешешь? Я каждый день с жабой работаю. И эта редкая ситуация меня за..бала уже по самое не могу.

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