Re[4]: Status bar в MDI-приложении стирается дочерними окнам
От: Misha5  
Дата: 25.02.03 13:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Misha5, Вы писали:


M>>

M>>
M>>case WM_SIZE:    GetClientRect(hwndStatus, &rc) ;
M>>        MoveWindow(hwndClient, 0, 0, 
M>>        LOWORD(lParam), HIWORD(lParam) - abs(rc.top - rc.bottom), TRUE) ;
M>>

M>>но это никак не изменяло ситуацию, status bar по-прежнему стирался дочерними окнами.
А>попробуй
А>
А>GetWindowRect(hwndStatus, &rc);
А>


Большое спасибо за советы. Они меня натолкнули на правильное решение. Ошибка была в том, что после переадресовки wm-size в status bar и пересчета новых размеров Client window я перенаправлял текущий wm-size в DefWindowProc, что не нужно делать. Сделал нормальный return и все стало работать как следует.


case WM_SIZE:
     GetClientRect(hwndStatus, &rcS) ;
     GetClientRect(hwnd, &rcC) ;
     MoveWindow(hwndClient, 0, 0, 
        rcC.right, rcC.bottom - abs(rcS.bottom - rcS.top), TRUE) ;
     MoveWindow(hwndStatus, 0, rcC.bottom - - abs(rcS.bottom - rcS.top), 
        rcC.right, rcC.bottom, TRUE) ;
     SendMessage (hwndStatus, WM_SIZE, wParam, lParam);
     SendMessage(hwndStatus, SB_SETPARTS, 3, (LPARAM)ptWidth);
...
     return 0 ;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.