Есть аппликашка SDI с табами:
Проблема: при обработке WM_SIZE внутри табов меняется размер только в пределах прямоугольника, заданного шаблоном ресурса. Т.е. меньше - пожалуйста - а больше - никак!
- в главном окне (МаinFrame) есть member TabControl, на который 'вешаются' все остальные tabs-dialog windows.
- при обработке WM_SIZE - mainFrame -
И всё работает вполне корректно (т.е. относительно MainFrame)
А вот внутри табов - какая-то ерунда:
Стартуем аппликашку
Проблема: при обработке WM_SIZE внутри табов меняется размер только в пределах прямоугольника, заданного шаблоном ресурса. Т.е. меньше - пожалуйста - а больше - никак!
- в главном окне (МаinFrame) есть member TabControl, на который 'вешаются' все остальные tabs-dialog windows.
- при обработке WM_SIZE - mainFrame -
CRect r, lpRect;
m_wndStatusBar.GetWindowRect(r);
GetWindowRect(&lpRect);
// Get size of dialog window.
GetClientRect(&lpRect);
lpRect.bottom-=r.Height();//mind StatusBar height
// Move the tab control to the new position and size.
m_tabCtrl.MoveWindow(&lpRect, TRUE);И всё работает вполне корректно (т.е. относительно MainFrame)
А вот внутри табов - какая-то ерунда:
Стартуем аппликашку
![]() | "тёмная часть" - должна занимать всё пространство таба, но этого не делает. Т.е. она занимает максимум, "позволенный" размерами шаблона IDD_DIALOG3 из ресурса Это ясно видно на последующих 2х скриншотах. CDialog::OnSize(nType, cx, cy); |
![]() | Аппликашка "минимизирована" до размера, меньше размеров шаблона IDD_DIALOG3 из ресурса. Ресайз "тёмного" окна происходит корректно, нижний скролл бар занимает столько места, сколько надо. |
![]() | Аппликашка "увеличена" до размера, чуть меньше, чем размер шаблона IDD_DIALOG3 по вертикали (смотри "обрезанный" скроллер) и серьёзно больше по горизонтали Причём при таком размере по горизонтали скролл бар должен был вообще исчезнуть! Т.е. ресайз "тёмного" окна происходит некорректно. |


