Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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 ;