Pergunta

(MFC pergunta) Qual é a melhor maneira de determinar o atual exibida área de cliente em um CScrollView? Eu só preciso do tamanho da porção visível, de modo GetClientRect () não vai funcionar aqui.

Foi útil?

Solução

Você precisa usar GetClientRect (), mas eu acho que você está fazendo a pergunta errada. Não é assim que em uma visão rolada há uma janela de cliente muito grande que está fisicamente rolado. Em vez disso, quando você rolar, o modo viewportext e mapeamento da DC são ajustadas, o que faz parecer que a sua visão é maior do que realmente é. Então, se você quiser desenhar uma linha a partir do canto superior esquerdo ao canto inferior direito da janela atual, você precisa de GetViewPortOrg () e GetViewportExt (). Se estes devolver os valores errados, algo está errado em seu uso de CScrollView. Ligou para SetScrollSizes ()?

Outras dicas

Dentro de sua função OnDraw (), você poderia chamar pDC-> GetViewportOrg e pDC-> GetViewportExt.

Editar : Desculpe, eu esqueci que extensões Viewport só são fatores de escala. Concordo que o que você realmente precisa aqui é o rect cliente.

Sim, você está tanto direito. GetClientRect era exatamente o que eu precisava. Um peido de cérebro da minha parte ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top