CScrollView и размер окна - PullRequest
       21

CScrollView и размер окна

0 голосов
/ 29 сентября 2008

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

Ответы [ 3 ]

2 голосов
/ 29 сентября 2008

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

0 голосов
/ 01 октября 2008

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

0 голосов
/ 29 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...