Non conosco le librerie GUI per C ++, quindi parlerò solo di C #. Lì, ci sono due librerie GUI comuni: i vecchi Windows Form (Winforms in breve) e il più recente Windows Presentation Foundation (WPF):
Winforms si basa principalmente sull'editor grafico GUI drag-and-drop. Questo editor è piuttosto goffo: ad esempio, non ero in grado di capire come posizionare un pulsante in basso al centro di una finestra (esattamente). Quindi, l'utilizzo di Winforms potrebbe andar bene se stai creando finestre non ridimensionabili e se stai bene con gli strumenti limitati disponibili o decidendo manualmente la posizione dei pixel di ogni controllo.
Ciò che questo editor effettivamente genera è un file .Designer.cs che contiene un codice come:
this.button1 = new System.Windows.Forms.Button();
this.button1.Location = new System.Drawing.Point(124, 258);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "OK";
this.button1.UseVisualStyleBackColor = true;
E puoi anche scrivere un codice come questo nei tuoi normali file .cs, ignorando l'editor grafico (anche se probabilmente userò la sintassi di inizializzazione dell'oggetto qui). Ma dal momento che non ci sarà l'anteprima IDE, ci vorrà probabilmente del tempo per farlo apparire come vuoi tu. E ancora non risolve i problemi che Winforms ha, come il ridimensionamento delle finestre.
WPF, d'altra parte, pur continuando a supportare il drag-and-drop in misura limitata, si occupa esclusivamente della scrittura di codice strutturato in XAML. Con "strutturato", intendo che i controlli sono posizionati in gruppi chiamati pannelli, che possono essere essi stessi in altri pannelli, creando una struttura della finestra. E ogni pannello decide la posizione dei controlli al suo interno, quindi unendo i pannelli, puoi ottenere praticamente qualsiasi layout, che ora è ridimensionabile.
Ad esempio, per posizionare due pulsanti nella parte inferiore centrale di una finestra, è possibile scrivere:
<DockPanel LastChildFill="False">
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Center">
<Button Margin="5" Width="100">OK</Button>
<Button Margin="5" Width="100">Cancel</Button>
</StackPanel>
</DockPanel>
(La ripetizione di Margin
e Width
può essere evitata, ma richiede funzionalità più avanzate di WPF.)
E mentre stai modificando il codice XAML, l'IDE ti mostra il layout che stai creando, in modo da ottenere uno dei principali vantaggi degli editor grafici.
Puoi anche scrivere lo stesso codice in C # invece di XAML, ma c'è solo raramente una ragione per farlo.