У меня есть приложение MFC SDI.
У этого есть Лента, статусные бары, свойства окна, ...Изменение клиентской области View
Мне нужно сделать клиентскую область зрения 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);
}
'AdjustWindowRect' ничего не регулирует, а лишь _calculates нужного размера окна прямоугольника, основываясь на желание клиента прямоугольника size_ (цитата из [документаций MS] (https: // MSDN .microsoft.com/ан-нас/библиотека/окна/рабочий стол/ms632665 (v = vs.85) .aspx)). И вызов 'CView :: OnSize' с другим размером не делает многого (не помните, в какой части документации я читал это). –
Вы использовали [MoveWindow] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633534 (v = vs.85) .aspx)? –
Я нашел некоторое обходное решение: 1. Создайте дополнительное дочернее окно для представления; 2. При изменении размера выровняйте его на 16 пикселей и центрируйте его. –