2011-01-03 19 views
22

he tenido numerosas malas experiencias con biblioteca de interfaz gráfica de usuarioCreando una GUI desde cero en C++ o montaje

así que me gustaría saber cómo crear una ventana desde cero en C++ No estoy hablando de Win32, lo que significa es básicamente crearlo yo mismo sin ninguna biblioteca externa

hay alguna manera de tal vez utilizar una imagen o algo así para crear una ventana sí, sé lo difícil que será.

También leí en alguna parte que la biblioteca podría hacerse para C++ en el montaje

hay una manera de crear una interfaz gráfica de usuario personalizada en el montaje o C++

EDIT: Estoy apuntando a tan sólo ventanas

PD: otra razón por la que quiero aprender cómo hacerlo es porque

Es posible que desee crear un sistema operativo. así que me gustaría tener la GUI con eso ...

+6

¿Asamblea? Dios, ¿por qué no codificas el lenguaje de máquina? – jason

+20

Lo único que ayudará con este proyecto es su nombre de usuario. –

+1

¿En qué sistema operativo le gustaría crear esta nueva GUI? ¿O vas a escribir un nuevo sistema operativo a partir de cero también? –

Respuesta

15

Para crear una ventana necesitarás interactuar con cualquier sistema de ventanas que esté presente actualmente en tu sistema operativo. Esto requerirá llamadas al sistema si el administrador de ventanas se ejecuta en el espacio del kernel (como es el caso de Windows) o algún tipo de comunicación entre procesos para administradores de ventanas de espacio de usuario (como X). Para crear la ventana desde cero, deberá leer cómo funcionan estos administradores de ventanas y qué protocolos utilizan. En el caso de X, no debería ser demasiado difícil encontrar recursos sobre cómo funciona el protocolo. En el caso de Windows, su única opción podría ser utilizar la API, ya que las funciones internas del administrador de ventanas son propiedad.

+1

gracias por la publicación detallada :)))) –

+0

http://www.alleystoughton.us/eXene/X-protocol.pdf –

4

Puede intentar leer detenidamente el código fuente en MenuetOS - Creo que está escrito completamente en ensamblaje y tiene una GUI. Por supuesto, esto no funcionará si está intentando escribir un programa que se ejecuta en Windows, Linux, etc. Pero si desea evitar todas las bibliotecas externas, incluida la interfaz con Windows, tendrá que ejecutar en el metal desnudo .

+0

hice una buena publicación detallada también, pero templatetypedef hizo wat. Estaba buscando principalmente –

1

Si no está lo suficientemente loco para hacer esto en asamblea seguir adelante e instalar masm32, que puede hacer interfaces gráficas de usuario básicos como ventanas/los cuadros de mensajes, etc.

+0

Dijeron que no quieren interactuar con Win32 ... por lo que probablemente necesitarían FASM para el desarrollo que no sea de Windows. – Eugene

+0

¡Pensé que se refería a MFC sin el desarrollo de windows! – ismail

-6

Se crea una ventana "desde cero" en las ventanas, llamando al API Win32 "CreateWindowEx".

+0

Bueno, no, eso no crea una ventana * "desde cero" *. 'CreateWindowEx' crea una instancia de una clase de ventana existente. Si desea comenzar desde cero, comenzaría con [RegisterClassEx] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633587.aspx). – IInspectable