Изменить клиентскую область View

У меня есть приложение 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);
}

2

Решение

Обработка этого в WM_SIZE/OnSize слишком поздно, потому что к тому времени размер окна уже был изменен. использование ON_WM_WINDOWPOSCHANGING вместо этого, чтобы отслеживать изменения размера окна и применять следующие изменения:

void CMyWnd::OnWindowPosChanging(WINDOWPOS* wpos)
{
wpos->cx -= wpos->cx % 16;
wpos->cy -= wpos->cy % 16;
__super::OnWindowPosChanging(wpos);
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]