MFC, aplicación SDI, ¿Por qué el diseño de las vistas no puede ser cambiado mediante código?
Soy nuevo en MFC. Acabo de crear una aplicación SDI con el asistente, luego intenté modificar el código generado para controlar la disposición de cada vista, barra de herramientas o menú:
…
m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)
…
DockPane(&m_wndToolBar); // m_wndToolBar es una barra de herramientas
…
DockPane(&m_wndFileView);
m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar);
DockPane(&m_wndOutput);
// m_wndFileView, m_wndClassView, m_wndOutput son algunas vistas.
…
Pero parece que no funciona: las ventanas siempre se comportan como si recordaran la última operación realizada por el usuario. Por ejemplo, las últimas 3 líneas de código crean 3 vistas como esta:
Ejecuté el código y lo cerré, luego las modifiqué a:
DockPane(&m_wndFileView);
DockPane(&m_wndOutput);
m_wndClassView.AttachToTabWnd(&m_wndOutput, DM_SHOW, TRUE, &pTabbedBar);
Supongo que debería aparecer así pero falló (Esta captura de pantalla no es el resultado de la ejecución, cambié el diseño manualmente):
https://i.stack.imgur.com/2REEy.png
Mantiene el diseño de la última vez que se cerró (como en la imagen 1). Además, cualquier cambio manual en el diseño realizado por el usuario se puede recordar. Entonces, ¿por qué? ¿Quién dijo que se debía hacer así?
davy.ai
El problema con el diseño de la aplicación SDI no se actualiza incluso después de modificar el código puede deberse a las siguientes razones:
El marco de acoplamiento de MFC no se está utilizando correctamente.
Para solucionar este problema, se pueden seguir los siguientes pasos:
Al utilizar el marco de acoplamiento de MFC, es importante usarlo correctamente. El marco de acoplamiento utiliza una jerarquía de paneles y barras, y cada panel puede contener una o más barras. Para crear un diseño, los paneles deben acoplarse o adjuntarse entre sí de una manera específica.
Por ejemplo, para crear el diseño en la segunda captura de pantalla proporcionada, el código debe modificarse de la siguiente manera:
Esto creará un diseño donde la ventana de salida está acoplada en la parte inferior, la vista de clases está acoplada a la izquierda de la ventana de salida y la vista de archivos está acoplada a la izquierda de la vista de clases.
También es importante asegurarse de crear y acoplar los paneles en el orden correcto.
Siguiendo estos pasos, se puede controlar y modificar con éxito el diseño de la aplicación SDI.