Пользовательская библиотека Windows GUI - PullRequest
3 голосов
/ 28 апреля 2010

Мне всегда было интересно, как такие программы, как iTunes, Winamp и т. Д. Могут создавать свой собственный пользовательский интерфейс.

Как это достигается на платформе Windows? Есть ли в сети какой-нибудь код, объясняющий, как можно создать свой собственный графический интерфейс?

Ответы [ 2 ]

3 голосов
/ 28 апреля 2010

WinAmp обычно вообще не предоставляет свой собственный графический интерфейс - он делегирует его «скину». Вы можете скачать десятки примеров, и если память не подведет меня особенно сильно, документация также довольно легко доступна.

Судя по всему, iTunes использует своего рода слой перевода, чтобы позволить тому, что в основном написано как собственный пользовательский интерфейс Mac, работать под Windows (то же самое, что Apple недавно решила, было настолько злым, что они теперь запрещено на iPhone и, видимо, на iPad).

Поскольку все, что может быть истолковано как негативное в отношении Apple, часто воспринимается как ересь, я укажу на все файлы .xib, которые включены в iTunes для Windows. Файл .XIB (по крайней мере, обычно) создается Интерфейсным Разработчиком Apple для хранения ресурсов для программ OS / X и компилируется в файл .NIB перед развертыванием. Windows обычно вообще не использует файлы .XIB или .NIB, и мне кажется, что Apple включает слой совместимости, чтобы использовать их в Windows (хотя я никогда не тратил время на выяснение того, в каком файле он хранится) или что-то в этом роде.

Редактировать: (ответ на последний комментарий Маттиаса). Оказание это утомительно, но довольно просто. В основном вы берете входные данные из обложки (например) и создаете элемент управления рисования владельца (например, кнопку) и визуализируете кнопку на основе этого ввода.

Самый простой способ сделать это - иметь фиксированные позиции для ваших элементов управления и требовать, чтобы пользователь рисовал / включал растровые изображения для фона и элементов управления. В этом случае вы просто загружаете фоновое растровое изображение и отображаете его, покрывая всю клиентскую область вашего приложения (и вы, вероятно, будете использовать окно без полей, так что это все, что показано). Вы будете указывать все свои элементы управления как нарисованные владельцем, и для каждого вы будете загружать их растровое изображение и перетаскивать его на экран для этого элемента управления. Поскольку не будет (обычно) видимой строки заголовка, вам часто придется обрабатывать WM_NCHITTEST (или эквивалент в других системах), чтобы позволить пользователю перетаскивать окно вокруг.

Если вы хотите немного усложнить ситуацию, вы можете добавить такие вещи, как разрешение им также указывать размер и положение для каждого элемента управления, а также указание, что некоторые элементы управления вообще не будут отображаться. Опять же, это не очень сложно управлять - например, в Windows большинство элементов управления являются окнами, и вы можете указать размер и положение при создании окна. Если пользователь загружает другой скин во время выполнения, вы можете позвонить MoveWindow, чтобы переместить / изменить размер каждого элемента управления по мере необходимости.

1 голос
/ 28 апреля 2010

Я предполагаю, что вы имеете в виду создание приложения с графическим интерфейсом, а не с графическим интерфейсом.

Для Windows доступно множество каркасов с графическим интерфейсом.

Некоторые из них

Если вам нужен более полный список, посмотрите статью в Википедии для MFC (http://msdn.microsoft.com/en-us/library/d06h2x6e%28VS.90%29.aspx) и прокрутите вниз.

Каждая из этих структур GUI подробно документирована в Интернете.

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