2011-01-03 6 views
22

Ho avuto numerose esperienze negative con libreria GUICreazione di un interfaccia grafica da zero in C++ o il montaggio

quindi vorrei sapere come creare una finestra da zero in C++ io non sto parlando di win32, quello che ho significa fondamentalmente crearlo da solo senza alcuna libreria esterna

c'è un modo per usare magari un'immagine o qualcosa per creare una finestra sì, so quanto sarà difficile.

inoltre ho letto da qualche parte che biblioteca potrebbe essere fatto per C++ in assemblea

c'è un modo per creare una GUI personalizzata in assemblaggio o C++

EDIT: sto puntando a soli finestre

PS: un altro motivo per cui voglio imparare come farlo è perché

Potrei voler creare un SO. quindi vorrei GUI con quello ...

+6

Assemblaggio? Cavolo, perché non lo codi solo con il linguaggio macchina? – jason

+20

L'unica cosa che aiuterà in questo progetto è il tuo nome utente. –

+1

Su quale sistema operativo si desidera creare questa nuova GUI? O stai per scrivere anche un nuovo sistema operativo? –

risposta

15

Per creare una finestra è necessario interfacciarsi con qualsiasi sistema di finestre attualmente presente sul sistema operativo. Ciò richiederà chiamate di sistema se il gestore di finestre viene eseguito nello spazio del kernel (come nel caso di Windows) o una sorta di comunicazione tra processi per i gestori di finestre dello spazio utente (come X). Per creare la finestra da zero, è necessario leggere il funzionamento di questi gestori di finestre e i protocolli utilizzati. Nel caso di X, non dovrebbe essere troppo difficile trovare risorse su come funziona il protocollo. Nel caso di Windows, l'unica opzione potrebbe essere l'utilizzo dell'API, poiché i componenti interni del gestore di finestre sono proprietari.

+1

grazie per il post dettagliato :)))) –

+0

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

4

Si potrebbe provare a leggere il codice sorgente su MenuetOS - Credo che sia stato scritto interamente in assembly e che abbia una GUI. Ovviamente, questo non funzionerà se stai provando a scrivere un programma che gira su Windows, Linux, ecc. Ma se vuoi evitare tutte le librerie esterne, incluso l'interfaccia con Windows, dovrai eseguire il bare metal .

+0

tu ha fatto anche un bel post dettagliato ma templatetypedef lo ha cercato principalmente per lo –

1

Se siete abbastanza pazzo da fare questa cosa in assemblea andare avanti e installare masm32, si può fare GUI di base come finestre/messageboxes ecc

+0

. Hanno detto che non vogliono interfacciarsi con Win32 ... quindi probabilmente avrebbero avuto bisogno di FASM per lo sviluppo non Windows. – Eugene

+0

Pensavo intendesse dire senza MFC e lo sviluppo di windows di questo tipo! – ismail

-6

Si crea una finestra "da zero" sulle finestre, chiamando il API Win32 "CreateWindowEx".

+0

Beh, no, quello non crea una finestra * "da zero" *. 'CreateWindowEx' crea un'istanza di una classe finestra esistente. Se vuoi iniziare da zero, inizi con [RegisterClassEx] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633587.aspx). – IInspectable