Вопрос

(Вопрос MFC) Как лучше всего определить текущую отображаемую клиентскую область в CScrollView?Мне нужен только размер видимой части, поэтому GetClientRect() здесь не сработает.

Это было полезно?

Решение

Вам нужно использовать GetClientRect(), но я думаю, что вы задаете неправильный вопрос.Это не значит, что в прокручиваемом представлении имеется очень большое клиентское окно, которое физически прокручивается.Вместо этого, когда вы прокручиваете, окно просмотра и режим отображения DC настраиваются, из-за чего кажется, что ваш вид больше, чем он есть на самом деле.Итак, если вы хотите нарисовать линию из верхнего левого угла в нижний правый угол текущего окна просмотра, вам потребуются GetViewPortOrg() и GetViewportExt().Если они возвращают неправильные значения, значит, что-то не так при использовании CScrollView.Вы вызвали SetScrollSizes()?

Другие советы

Внутри функции OnDraw() вы можете вызвать pDC->GetViewportOrg и pDC->GetViewportExt.

РЕДАКТИРОВАТЬ:Извините, я забыл, что экстенты области просмотра — это всего лишь коэффициенты масштабирования.Я согласен, что вам действительно нужен клиентский прямоугольник.

Да, вы оба правы.GetClientRect — это именно то, что мне было нужно.Мозговой пердеж с моей стороны...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top