Вопрос
(Вопрос MFC) Как лучше всего определить текущую отображаемую клиентскую область в CScrollView?Мне нужен только размер видимой части, поэтому GetClientRect() здесь не сработает.
Решение
Вам нужно использовать GetClientRect(), но я думаю, что вы задаете неправильный вопрос.Это не значит, что в прокручиваемом представлении имеется очень большое клиентское окно, которое физически прокручивается.Вместо этого, когда вы прокручиваете, окно просмотра и режим отображения DC настраиваются, из-за чего кажется, что ваш вид больше, чем он есть на самом деле.Итак, если вы хотите нарисовать линию из верхнего левого угла в нижний правый угол текущего окна просмотра, вам потребуются GetViewPortOrg() и GetViewportExt().Если они возвращают неправильные значения, значит, что-то не так при использовании CScrollView.Вы вызвали SetScrollSizes()?
Другие советы
Внутри функции OnDraw() вы можете вызвать pDC->GetViewportOrg и pDC->GetViewportExt.
РЕДАКТИРОВАТЬ:Извините, я забыл, что экстенты области просмотра — это всего лишь коэффициенты масштабирования.Я согласен, что вам действительно нужен клиентский прямоугольник.
Да, вы оба правы.GetClientRect — это именно то, что мне было нужно.Мозговой пердеж с моей стороны...