2010-11-04 10 views
8

MFC sembra avere una grave mancanza di gestori di layout/sizer. Difficile credere che qualsiasi libreria UI che si rispetti manchi dei calibratori ma ci vai. Ho trovato qualcosa che si prenderà cura del solito layout della scatola, ma quello che non ho trovato è un sizer che ti aiuterà quando hai bisogno che le cose siano allineate sia verticalmente che orizzontalmente mentre si espandono.Layout griglia, retino flessibile o griglia per MFC

ho avuto maggior parte delle informazioni da qui:

layout manager for MFC dialog apps

Ho perlustrato il web e ogni ricerca di MFC e la griglia/niente/finisce per mandarmi a una serie di widget griglia, non sizers. C'è una cosa del genere da qualche parte?

+0

Difficile scegliere due risposte che entrambi dicono che non c'è. Sono entrambi corretti. –

+0

Scelto colui che l'ha detto per primo: p –

risposta

2

Non ho ancora sentito parlare di una libreria di sizer completa e completa per MFC. E non credo ci sia niente di meglio delle opzioni menzionate in quella domanda collegata.

Nel mio parere, dubito che una cosa del genere sarà mai fatta a questo punto. Altri framework GUI ben consolidati dispongono già di funzionalità di sizer adeguate integrate per impostazione predefinita e compensano anche molte altre deficienze di MFC allo stesso tempo. Penso che molte persone direbbero che non vale la pena di sviluppare una cosa del genere per MFC ora. (Ho anche iniziato a lavorare su una sorta di libreria di ridimensionamento generica che potrebbe essere stata applicata a MFC, ma alla fine ho perso l'ambizione e l'ho messa da parte.)

Inoltre, mi sento come se la stessa Microsoft abbia scritto MFC come eredità , e invece è passato a favorire .NET/C#/WPF per lo sviluppo della GUI. Dopotutto, guardate fino a che punto quelle nuove tecnologie sono progredite negli ultimi 10 anni o giù di lì, mentre allo stesso tempo MFC è appena cambiato oltre l'aggiunta occasionale di un feature pack.

Se è del tutto possibile, suggerirei di passare a un framework C++ più moderno (come Qt) o .NET/C#/WPF (almeno per la parte di applicazioni GUI).

+0

Potrei essere d'accordo con te sull'interruttore ma sto già raccomandando un passaggio da un diverso framework (WX) perché ci siamo imbattuti in problemi causati principalmente dalla natura multipiattaforma di quella libreria . Anche la libreria di aggancio in MFC è MOLTO più carina. Devo raccomandare ai più alti, e devo farlo onestamente, e poi decidono. MFC sembra, al momento, come l'opzione meno fastidiosa e probabilmente rimarrò bloccato. Ho un membro del mio team che sta cercando questa opzione. –

3

Ho incontrato questo "problema" un paio di anni fa con WTL. Mi sono stufato di complicati gestori WM_SIZE, quindi ho morso il proiettile e ho implementato alcuni contenitori di layout e ho adattato i controlli Win32 e alcuni dei miei ai contenitori di layout.

Fondamentalmente ho creato sottoclassi per ciascun controllo e implementato il mio protocollo per "MinSize, MaxSize, PreferredSize". Alcuni controlli sono difficili da implementare per questo, ma nulla è impossibile. Non è stato molto difficile da fare, quindi potresti voler pensarci e farlo. MFC non è abbastanza flessibile come ATL/WTL rispetto alla sottoclasse, ma è abbastanza flessibile.

Purtroppo non posso condividere il codice con te. :/Ho persino aggiunto un semplice linguaggio di marcatura XML in cima che è stato molto carino.

+0

Qualche possibilità puoi condividere il codice nel frattempo o almeno condividere il tuo approccio? Potrebbe essere utile prima di elaborare qualcosa per conto proprio. –