Хакер » 06.11.2009 (Пт) 4:49
То есть я имею в виду, что такой подход это нечто из книжки "Философия создания отвратительных программных продуктов". Никогда нельзя полагаться на внутренние детали реализации, которые тебе видны, но о которых ничего не говорится в документации.
То есть это наивный подход: думать, что раз класс окна Button, то и работать с окном можно как со стандартным Button-ом. Как минимум, в общем случае такой подход недопустим: класс окна ещё не говорит, что конкретно взятое окно будет обладать типичными свойствами данного класса. Потому что даже есть всем известный здесь механизм сабклассинга, который наделяет окно какого-то класса дополнительными свойствами. Я не знаю точно, но очень подозреваю, что кнопка пуск тоже сабклассится Проводником. И раз так, её реакция на сообщения может не соответствовать таковой для обычных нетронутых кнопок.
Более того, неправомерно вообще работать с кнопкой Пуск как с кнопкой. Это сейчас ты видишь в Spy++, что кнопка Пуск это действительно BUTTON. Теоретически нельзя отрицать, что в следующей версии Проводника кнопка Пуск перестанет быть обычной кнопкой класса BUTTON. (Особенно если учитывать, какие тенденции нынче наблюдаются в Microsoft по отношению к GUI...)
А значит, нельзя при создании приложения полгатаься на то, что кнопка Пуск это стандартная кнопка.
И даже то, что в проводниках Висты и Виены кнопка Пуск всё ещё обычная кнопка (хотя, я не в курсе, может быть уже и не кнопка, не видел), ничего не говорит и в расчёт браться не должно.
То есть даже доводы типа "Я пишу приложение исключительно для XP, а в проводнике XP кнопка Пуск пока ещё обычная кнопка" не катят. Завтра найдётся какая-нибудь мега-уязвимость, и логику работы этой кнопки перепишут. И те внутренние детали реализации, на которые ты положился, исчезнут.
И мы получим ещё одно отвратительное приложение, которое перестаёт работать после установки официального исправления.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.