Подтвердить что ты не робот

Создание графического интерфейса с нуля в С++ или сборке

У меня было много плохого опыта с библиотекой GUI

поэтому я хотел бы знать, как создать окно с нуля в С++ Я не говорю о win32, я имею в виду, что в основном создаю его самостоятельно без какой-либо внешней библиотеки

есть ли какой-либо способ, возможно, использовать картинку или что-то, чтобы создать окно да, я знаю, как это будет тяжело.

также я где-то читал, что библиотека может быть создана для С++ в сборке

Есть ли способ создать пользовательский gui в сборке или С++

EDIT: Я нацелен только на окна

PS: Еще одна причина, по которой я хочу узнать, как это сделать, состоит в том, что

Возможно, мне захочется создать ОС. поэтому я бы хотел GUI с этим...

4b9b3361

Ответ 1

Чтобы создать окно, вам нужно будет взаимодействовать с любой системой окон, которая в настоящее время присутствует в вашей операционной системе. Это потребует системных вызовов, если диспетчер окон работает в пространстве ядра (как в случае с Windows) или какой-то межпроцессный обмен для диспетчеров окон пользовательского пространства (например, X). Чтобы создать окно с нуля, вам нужно будет узнать, как работают эти оконные менеджеры и какие протоколы они используют. В случае X не должно быть слишком сложно найти ресурсы о том, как работает протокол. В случае Windows единственным вариантом может быть использование API, так как внутренняя часть оконного менеджера является собственностью.

Ответ 2

Вы можете попробовать прочитать исходный код MenuetOS - я считаю, что он полностью написан в сборке и имеет графический интерфейс. Конечно, это не сработает, если вы пытаетесь написать программу, которая работает в Windows, Linux и т.д. Но если вы хотите избежать всех внешних библиотек, включая взаимодействие с Windows, вам придется работать на голой металлике.

Ответ 3

Если вы достаточно сумасшедшие, чтобы сделать это в сборке, и установите masm32, он может делать базовые графические интерфейсы, такие как окна/сообщения и др.

Ответ 4

Вы создаете окно "с нуля" в окнах, вызывая API Win32 "CreateWindowEx".