|Dialog as it was loaded form dialog2.wxr resource||same dialog with wxMatrixSizer applied after loading
all that's need to be added to existing code, is the fragment:
wxMatrixSizer* matrix = new wxMatrixSizer( &dialog ); dialog.SetAutoLayout( TRUE ); dialog.SetSizer( matrix ); matrix->Fit( &dialog ); matrix->SetSizeHints( &dialog );
||original with Mtx applied, no observable difference
|original dialog mildly distorted: as locale-dependent strings change, lots of labels slipping under here and there...
||matrix honors minimal-sizes, thus no major problems with text-fitting.
Unlike with dialog units, non-uniform vert/horiz sizing is required here,
and wxMatrixSizer does exactly so, because matrix-items can
be non-uniformly sized
the same on Linux
|uniformly distorted: font of all widgets changed proportionally, might simulate
the case of resolution/font changes
||as dialog units, matrix copes well with uniform distortions,
but does not treat it as a special case
|extremely distorted: fonts changed not uniformly, to simulate
different sizes of controls on different platforms, some locale
strings changed as in multiple-languages supporting app
||this is probably a worst-case-composition for Matrix to digest, but it still makes it by preserving correctness of displayed information. Proportions of original layout change non-uniformly causing some mess, e.g "First Name" labels have departed too far from their fields as a result of wildly grown size of "Small plums" check box. In practise, such extremes do not happen even across platforms, this example intends to show the limit, beyond which you are better off designing purely Layout-based UI (using box,gird,flexgird sizers)|
matrix_src_0_1.zip for wxMatrixLayout and sample demonstrating above distortions, with makefiles for VC and unix
Contact me if you have any questions or problems with it.