Comments 10
С учётом всех переделок, не проще ли создать окно полностью вручную через WinAPI? Оно не такое уж сложное.
Ну и исходный поиск окна по заголовку выглядит костылем, так как вдруг есть другие, не наши, окна с таким заголовком.
Мне кажется, вопрос должен стоять "не правильнее ли... ?"
Помнится, я со времён WinXP первым делом переключался на классический интерфейс. И мне тоже нравились подобные изощрения: изменить стиль элемента или цвет где не предусмотрено, всякие SetWindowLong и т.п. Хитрожопость 80lvl, ага. А потом Win10 и "Привет, я лажа". Стыдно.
С одной стороны, я понимаю восторг, который испытываешь, когда проделываешь подобные вещи; с другой, если делаешь продукт не для себя, лучше без крайней необходимости не изощряться, ИМХО.
Не правильнее. Потому что гарантированно не выбиваться из стиля это будет лишь в текущей версии Windows.
Так что или использовать штатные окна, или делать полностью своё, красивое, информативное, но намеренно отличающееся от штатного.
Т. е. правильнее использовать методы описанные в статье?
Функционал "штатных окон" сильно ограничен, поэтому кастомные диалоги есть у многих приложений сложнее калькулятора. И делать такие диалоги лучше полностью вручную через WinAPI, чем обкладывать костылями существующие. И тут будет меньше проблем с соблюдением стиля на разных версиях ОС.
Правильней, если вам кровь из носу надо получать максимально штатно выглядящее окно прогресса.
Функционал ограничен, потому что это узкоспециализированные инструменты. Пользователям не надо выносить мозги неожиданным для них поведением привычных окон и/или элементов управления.
Если вам не хватает штатного - делайте своё. Но позаботьтесь о пользователе, дайте ему понять, что это не штатное окно/элемент управления, чтобы он не ждал привычного поведения.
В моём понимании "правильно" означает использовать или создать изначально полностью подконтрольную сущность, нежели брать нечто не вполне подходящее и не предназначенное для "обширной кастомизации", а потом изощряться. Ну, или работать с тем, что есть в штатном режиме. Тут ведь не исходный код модифицируется под свои нужды, а уже готовый "объект", который не предоставляет штатных средств. Да и имеющиеся штатные средства приходится подпинывать (обновление прогресса), потому что они не расчитаны на работу в кастомизированном режиме.
Если создать диалог из стандартных элементов ОС, то из стиля ничего и не выбьется. А точную копию делать я и не предлагал.
Я восхищаюсь пытливостью и изобретательностью, сам ещё не забыл каково это. За это и плюсанул. Но я бы возражал против такого решения "в проде".
В статье не просто используют штатное окно, но и кастомизируют его ломая инкапсуляцию напрямую модифицируя свойства внутренних окон. Это не очень надёжно, так как может сломаться на других версиях ОС и просто в каких-то особых условиях. Например, само диалоговое окно вообще ищется по заголовку, а никаких гарантий, что не будет другого окна с таким же заголовком - нет.
Тут как раз правильно либо укладываться в функционал стандартного интерфейса, либо делать своё окно. Простенькое окно с текстом и стандартным прогресс-баром будет вполне органично смотреться на любой версии Windows. Мало кто из пользователей наизусть знает все вариации диалоговых окон конкретной версии винды, тем более что у половины приложений они свои "+- похожие на системные".
Если не использовать какие-то нестандартные цвета и т. п., а оставить системные дефолты, то никто ничего не поймёт.
Тоже об этом подумал. Помню, купил и почитал книжку Зубкова (обложка ниже) и бегом создавать окна в ассемблере. После этого стало понятно наполнение описателя ресурсов окна *.dfm у Борландов...
А ещё, игры со Spy++ тоже увлекали, узнать хэндл таскбара или кнопки "Пуск", чтобы послать ему WM_CLOSE, это же так весело!
С учётом всех переделок, не проще ли ©KivApple открыть консоль и "рисовать" символами по-олдскульному.
Да, и в вашей теме это будет выглядеть как-то более сурово и уважительно.
Dolus creates decoys on your PC to discourage malware attacks.
15-20% of malware checks system characteristics before activating. Dolus uses this behavior against them, rendering these threats inert on your PC.
Постыдились бы такое в блоге компании писать, наихудший хак-говнокод, буквально, а они гордятся, лол. Как можно покупать у таких что-то связанное с безопасностью?
Кастомизация окна прогресса в оболочке Windows