Это перевод When I select multiple files in the File Open dialog, why does the last item come first? Автор: Реймонд Чен.
Если у вас есть диалог открытия файла, который поддерживает множественный выбор, и вы выбираете несколько файлов, вы можете заметить, что файл, выбранный последним, указывается первым. Это раздражает, если порядок файлов при выборе является важным (прим. пер.: например, при добавлении фото в альбом). Почему последний выбранный элемент становится первым в списке?
...when altering one's mind becomes as easy as programming a computer, what does it mean to be human?..
Показаны сообщения с ярлыком окна. Показать все сообщения
Показаны сообщения с ярлыком окна. Показать все сообщения
четверг, 16 января 2020 г.
вторник, 13 января 2015 г.
Интерфейс пользователя + многопоточный апартмент = смерть
Это перевод User interface code + multi-threaded apartment = death. Автор: Реймонд Чен.
Существуют однопоточные апартменты (single-threaded apartment) и многопоточные апартменты (multi-threaded apartment). Ну, сначала существовали только однопоточные... Нет, давайте начнём по-другому.
Существуют однопоточные апартменты (single-threaded apartment) и многопоточные апартменты (multi-threaded apartment). Ну, сначала существовали только однопоточные... Нет, давайте начнём по-другому.
вторник, 6 января 2015 г.
Drag&drop - это модель переноса данных общего назначения, не привязанная к каталогам Проводника
Это перевод Drag and drop is a general purpose transfer model, not exclusive to Explorer directories. Автор: Реймонд Чен.
Если вы спроектировали свою программу таким образом, что она подразумевает, что пользователь может перетаскивать ваш объект только в каталог файловой системы, то вы уже проиграли.
Если вы спроектировали свою программу таким образом, что она подразумевает, что пользователь может перетаскивать ваш объект только в каталог файловой системы, то вы уже проиграли.
воскресенье, 1 апреля 2012 г.
Возможности окон Windows
Это перевод Window Features. Автор: MSDN.
В этом обзоре рассматриваются особенности и возможности окон Windows - типы, состояния, размеры и положение.
В этом обзоре рассматриваются особенности и возможности окон Windows - типы, состояния, размеры и положение.
пятница, 16 марта 2012 г.
Об окнах Windows
Это перевод About Windows. Автор: MSDN.
Эта статья описывает программные элементы, которые приложения могут использовать для создания и управления окнами; управления отношениями между окнами; изменения размера, перемещения и отображения окон.
Эта статья описывает программные элементы, которые приложения могут использовать для создания и управления окнами; управления отношениями между окнами; изменения размера, перемещения и отображения окон.
четверг, 25 августа 2011 г.
Нет, а почему именно 160x31?
Это перевод No, really, why is it 160x31? Автор: Реймонд Чен.
Когда я ранее пояснял, почему свёрнутые (минимизированные) окна имеют размер 160x31, я не пояснил, почему размером выбрано именно ровно 160 и 31.
Когда я ранее пояснял, почему свёрнутые (минимизированные) окна имеют размер 160x31, я не пояснил, почему размером выбрано именно ровно 160 и 31.
четверг, 18 августа 2011 г.
Свойства оконных классов применяются ко всем окнам этого класса
Это перевод Window class properties apply to all windows that belong to the class. Автор: Реймонд Чен.
Свойства оконных классов применяются ко всем окнам этого класса. Именно поэтому они и называются классовыми свойствами. Это выглядит как очевидная вещь, когда её облекают в слова, но я видел множество "решений", которые теряют из вида этот простой факт.
Свойства оконных классов применяются ко всем окнам этого класса. Именно поэтому они и называются классовыми свойствами. Это выглядит как очевидная вещь, когда её облекают в слова, но я видел множество "решений", которые теряют из вида этот простой факт.
вторник, 16 августа 2011 г.
Блуждая в темноте и спотыкаясь о неверное решение
Это перевод Fumbling around in the dark and stumbling across the wrong solution. Автор: Реймонд Чен.
Я не хотел придираться к этой серии записей, но она иллюстрирует интересный шаблон спотыкания на неверном "решении".
Эта серия пытается запустить системный триггер неактивности монитора отправкой сообщения окну рабочего стола (desktop window).
Я не хотел придираться к этой серии записей, но она иллюстрирует интересный шаблон спотыкания на неверном "решении".
Эта серия пытается запустить системный триггер неактивности монитора отправкой сообщения окну рабочего стола (desktop window).
понедельник, 15 августа 2011 г.
Помните, что происходит, когда вы делаете широковещательную рассылку
Это перевод Remember what happens when you broadcast a message. Автор: Реймонд Чен.
Иногда я вижу, как люди делают вещи вроде широковещательной рассылки (broadcasting) сообщения
Иногда я вижу, как люди делают вещи вроде широковещательной рассылки (broadcasting) сообщения
WM_COMMAND всем окнам верхнего уровня (top-level windows). Это одна из вещей, которые настолько очевидно неправильные, что я не понимаю, как кому-то вообще может приходить в голову идея, что это будет работать.воскресенье, 14 августа 2011 г.
Забытые элементы управления: функция MenuHelp
Это перевод The forgotten common controls: The MenuHelp function. Автор: Реймонд Чен.
Функция
Функция
MenuHelp - это одна из самых запутывающих функций в библиотеке общих элементов управления. К счастью, вам почти никогда не придётся её использовать, и когда вы узнаете её историю - вы не захотите её использовать.вторник, 9 августа 2011 г.
Забытые элементы управления: прокрутка страниц
Это перевод The forgotten common controls: The page scroller. Автор: Реймонд Чен.
Элемент управления "pager" был впервые представлен в библиотеке общих элементов управления (common controls library), которая поставлялась с Internet Explorer 4.0. Он был предназначен для реализации прокручивающихся меню в меню Пуск и меню Избранное (меню Пуск и Избранное не являются меню в смысле Win32 API. Они представляют собой пользовательские элементы управления, которые ведут себя аналогично классическим меню; пример fakemenu показывает эту основную идею). Меню было завёрнуто в элемент pager, и он предоставляет меню поведение прокрутки.
Элемент управления "pager" был впервые представлен в библиотеке общих элементов управления (common controls library), которая поставлялась с Internet Explorer 4.0. Он был предназначен для реализации прокручивающихся меню в меню Пуск и меню Избранное (меню Пуск и Избранное не являются меню в смысле Win32 API. Они представляют собой пользовательские элементы управления, которые ведут себя аналогично классическим меню; пример fakemenu показывает эту основную идею). Меню было завёрнуто в элемент pager, и он предоставляет меню поведение прокрутки.
четверг, 2 июня 2011 г.
Почему бы оконному менеджеру просто не взять на себя некоторые действия, которые раньше выполнялись приложениями?
Это перевод Why doesn't the window manager just take over behavior that used to be within the application's purview? Автор: Реймонд Чен.
Комментатор Al интересуется почему менеджер окон не может просто взять на себя ответственность, которая принадлежала приложению (вроде перерисовывания неклиентской области), чтобы избежать проблем с задержкой ответа приложений. Если оконный менеджер переписать, то, возможно, он мог бы так делать. Но тогда это принесёт много новых проблем совместимости.
Комментатор Al интересуется почему менеджер окон не может просто взять на себя ответственность, которая принадлежала приложению (вроде перерисовывания неклиентской области), чтобы избежать проблем с задержкой ответа приложений. Если оконный менеджер переписать, то, возможно, он мог бы так делать. Но тогда это принесёт много новых проблем совместимости.
воскресенье, 8 мая 2011 г.
Почему у элемента управления up-down стрелочки инвертированы?
Это перевод Why do up-down controls have the arrows backwards? Автор: Реймонд Чен.
Когда вы создаёте элемент управления up-down (некоторые люди называют его "spinner"-ом), то в его конфигурации по умолчанию стрелка вверх уменьшает значение, а стрелка вниз - увеличивает его. Большинство людей ожидает, что стрелка вверх будет увеличивать, а стрелка вниз - уменьшать. Почему же он работает наоборот?
Когда вы создаёте элемент управления up-down (некоторые люди называют его "spinner"-ом), то в его конфигурации по умолчанию стрелка вверх уменьшает значение, а стрелка вниз - увеличивает его. Большинство людей ожидает, что стрелка вверх будет увеличивать, а стрелка вниз - уменьшать. Почему же он работает наоборот?
понедельник, 28 февраля 2011 г.
В чём разница между HWND_TOP и HWND_TOPMOST?
Это перевод What's the difference between HWND_TOP and HWND_TOPMOST? Автор: Реймонд Чен.
Специальные значения HWND_TOP и HWND_TOPMOST имеют похожие имена, но делают совершенно разные вещи, когда их передают в параметре
Специальные значения HWND_TOP и HWND_TOPMOST имеют похожие имена, но делают совершенно разные вещи, когда их передают в параметре
hWndInsertAfter функции DeferWindowPos (или её аналога, к примеру, SetWindowPos). Для начала вам следует почитать обсуждение в MSDN, которое достаточно точно. Здесь я хочу обсудить это различие с точки зрения исторической перспективы в надежде, что взгляд с другой перспективы может улучшить ваше понимание.суббота, 19 февраля 2011 г.
Почему у нас есть специальная функция PostQuitMessage?
Это перевод Why is there a special PostQuitMessage function? Автор: Реймонд Чен.
Почему есть специальная функция
Почему есть специальная функция
PostQuitMessage? Потому что WM_QUIT в действительности не является отправленным (posted) сообщением.понедельник, 3 января 2011 г.
Существует реализация WM_SETREDRAW по умолчанию, но вы можете сделать и лучше
Это перевод There's a default implementation for WM_SETREDRAW, but you might be able to do better. Автор: Реймонд Чен.
Если ваше окно не имеет обработчика для сообщения
Хотя реализация по умолчанию работает отлично для простых элементов управления, более сложные элементы управления могут делать эту работу и лучше - и, вообще-то, они должны делать лучше, ибо в этом и заключается смысл WM_SETREDRAW.
Если ваше окно не имеет обработчика для сообщения
WM_SETREDRAW, то DefWindowProc даст вам поведение по умолчанию, которое подавляет сообщения WM_PAINT для вашего окна, пока перерисовка отключена, и начинает пропускать WM_PAINT (плюс вызывает полное обновление), когда перерисовка снова включается (внутренне это реализуется, делая окно псевдо-невидимым, но это деталь реализации, на которую вам не нужно ориентироваться).Хотя реализация по умолчанию работает отлично для простых элементов управления, более сложные элементы управления могут делать эту работу и лучше - и, вообще-то, они должны делать лучше, ибо в этом и заключается смысл WM_SETREDRAW.
суббота, 25 декабря 2010 г.
Что делает CS_SAVEBITS?
Это перевод What does CS_SAVEBITS do? Автор: Реймонд Чен.
Если вы указываете стиль класса
Если вы указываете стиль класса
CS_SAVEBITS, то оконный менеджер будет стараться сохранять биты, закрытые окном. Но настоящий вопрос здесь - почему. Т.к. ответ на этот вопрос позволит вам использовать эту силу для добра, а не зла.среда, 17 ноября 2010 г.
Как общие элементы управления конвертируют строки между ANSI и Unicode?
Это перевод How do the common controls convert between ANSI and Unicode? Автор: Реймонд Чен.
Комментатор Chris Becke спросил, как common controls конвертируют ANSI параметры в Unicode. Ведь все common controls внутренне реализованы как Unicode.
Комментатор Chris Becke спросил, как common controls конвертируют ANSI параметры в Unicode. Ведь все common controls внутренне реализованы как Unicode.
четверг, 2 сентября 2010 г.
Когда зацикливают обычные сообщения удаления окна
Это перевод When the normal window destruction messages are thrown for a loop. Автор: Реймонд Чен.
В последний раз я сослался на "странности", которые могут привести к тому, что обычный порядок доставки сообщений оказывается нарушен, и сообщения приходят в беспорядке.
Комментатор Adrian заметил, что сообщение WM_GETMINMAXINFO приходит до WM_NCCREATE для top-level окон. Это, в самом деле, неудачное поведение, но (баг это или нет) так было вот уже пятнадцать лет, и "исправление" этого имеет большие риски по обратной совместимости.
Но это не та странность, что я имел ввиду.
В последний раз я сослался на "странности", которые могут привести к тому, что обычный порядок доставки сообщений оказывается нарушен, и сообщения приходят в беспорядке.
Комментатор Adrian заметил, что сообщение WM_GETMINMAXINFO приходит до WM_NCCREATE для top-level окон. Это, в самом деле, неудачное поведение, но (баг это или нет) так было вот уже пятнадцать лет, и "исправление" этого имеет большие риски по обратной совместимости.
Но это не та странность, что я имел ввиду.
среда, 1 сентября 2010 г.
В чём разница между WM_DESTROY и WM_NCDESTROY?
Это перевод What is the difference between WM_DESTROY and WM_NCDESTROY? Автор: Реймонд Чен.
Существует два оконных сообщения, тесно связанных с уничтожением окна: сообщение WM_DESTROY и сообщение WM_NCDESTROY. В чём между ними разница?
Существует два оконных сообщения, тесно связанных с уничтожением окна: сообщение WM_DESTROY и сообщение WM_NCDESTROY. В чём между ними разница?
Подписаться на:
Сообщения (Atom)