case WM_GETMINMAXINFO: { MINMAXINFO *mmi = (MINMAXINFO *)lParam; Rect frmrc = Size(200, 200); ::AdjustWindowRect(frmrc, WS_OVERLAPPEDWINDOW, FALSE); // Size msz = Ctrl::GetWorkArea().Deflated(-frmrc.left, -frmrc.top, // frmrc.right - 200, frmrc.bottom - 200).GetSize(); // Rect minr(Point(50, 50), min(msz, GetMinSize())); // Rect maxr(Point(50, 50), min(msz, GetMaxSize())); Rect minr(Point(50, 50), GetMinSize()); Rect maxr(Point(50, 50), GetMaxSize()); dword style = ::GetWindowLong(hwnd, GWL_STYLE); dword exstyle = ::GetWindowLong(hwnd, GWL_EXSTYLE); AdjustWindowRectEx(minr, style, FALSE, exstyle); AdjustWindowRectEx(maxr, style, FALSE, exstyle); mmi->ptMinTrackSize = Point(minr.Size()); mmi->ptMaxTrackSize = Point(maxr.Size()); LLOG("WM_GETMINMAXINFO: MinTrackSize = " << Point(mmi->ptMinTrackSize) << ", MaxTrackSize = " << Point(mmi->ptMaxTrackSize)); LLOG("ptMaxSize = " << Point(mmi->ptMaxSize) << ", ptMaxPosition = " << Point(mmi->ptMaxPosition)); } return 0L;