У меня есть приложение MFC SDI.
У этого есть Лента, строки состояния, окна свойств, …
Мне нужно, чтобы клиентская область вида была x % 16
,
Так что я не могу настроить все окно, но мне нужно изменить размер CMyView
делится на 16 пикселей.
Есть ли способ сделать это?
Этот код не работает: = (
void CMyView::OnSize(UINT nType, int cx, int cy)
{
cx -= cx % 16;
cy -= cy % 16;
CView::OnSize(nType, cx, cy);
RECT wr = { 0, 0, cx, cy };
AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE);
}
Обработка этого в WM_SIZE/OnSize
слишком поздно, потому что к тому времени размер окна уже был изменен. использование ON_WM_WINDOWPOSCHANGING
вместо этого, чтобы отслеживать изменения размера окна и применять следующие изменения:
void CMyWnd::OnWindowPosChanging(WINDOWPOS* wpos)
{
wpos->cx -= wpos->cx % 16;
wpos->cy -= wpos->cy % 16;
__super::OnWindowPosChanging(wpos);
}
Других решений пока нет …