Как работает не родной пользовательский интерфейс Windows? - PullRequest
0 голосов
/ 04 октября 2010

По опыту я обнаружил, что родные формы / компоненты окон не любят, когда их изменяют.Я знаю, что с помощью Delphi или Visual Studio вам предоставляются собственные компоненты Windows для заполнения формы или окна, а затем вы прикрепляете код к событиям, которые могут выполнять эти компоненты (например, onClick).

Однако как всеэти программы, такие как Word или браузер Google Chrome, изменяют стандартное окно Windows?Я думал, что он каким-то образом защищен?

Кажется, что в Chrome есть вкладки на рамке окна?

Я знаю, что вы также можете получить наборы инструментов, такие как Swing и QT, которые имеют свои собственные элементы управления / компоненты для заполненияформа.Как это работает?(Как операционная система / компьютер узнают, как должна работать неродная кнопка? Например; кнопки Chrome «назад» и «вперед» не являются нативными компонентами?).

Я могу понять, как OpenGL / DirectXокно будет работать, потому что вы точно указываете компьютеру, что рисовать полигонами / квадрами.

Надеюсь, этот вопрос понятен!

Ответы [ 5 ]

3 голосов
/ 04 октября 2010

Windows не защищает элементы графического интерфейса. Окна и элементы управления могут быть разделены на подклассы для обработки различных операций рисования по своему усмотрению. Например, окна могут переопределить и переопределить обработку сообщения WM_NCPAINT, чтобы нарисовать пользовательские заголовок и рамку:

http://msdn.microsoft.com/en-us/library/dd145212(VS.85).aspx

1 голос
/ 04 октября 2010

Некоторые элементы управления Windows имеют режим «рисования владельцем».Если вы воспользуетесь этим, вы начнете рисовать элемент управления (или, по крайней мере, жизненно важные части элемента управления), в то время как Windows позаботится о реагировании на ввод пользователя стандартным способом.

0 голосов
/ 04 октября 2010

Qt переместился на родные элементы управления некоторое время назад.Что касается Swing, он получает базовое окно от ОС.Затем, так же как и Opengl \ Directx, он выполняет весь рисунок в этом окне.Что касается расположения вещей, то это то, что делают менеджеры по расположению.У каждого менеджера есть стиль макета: горизонтальный, вертикальный, сетка, компоненты, которые он должен нарисовать, и часть окна, которую он должен заполнитьОттуда он делает довольно простую математику, чтобы распределить свое пространство для элементов управления.

0 голосов
/ 04 октября 2010

Нет волшебства: не родные элементы управления просто рисуются в пустом окне.Или вместо рисования они могут быть представлены как одно из нескольких растровых изображений на основе состояния (то есть: кнопка может быть представлена ​​как .png для нормального состояния, другая .png для нажатого состояния и т. Д.)

0 голосов
/ 04 октября 2010

Swing ant QT рисует свои собственные виджеты на низком уровне, используя базовые примитивы, но они также имеют движки тем, которые могут имитировать нативные элементы управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...