Pregunta

(Pregunta MFC) ¿Cuál es la mejor manera de determinar el área actual del cliente que se muestra en un CScrollView? Solo necesito el tamaño de la parte visible, por lo que GetClientRect () no funcionará aquí.

¿Fue útil?

Solución

Necesitas usar GetClientRect (), pero creo que estás haciendo la pregunta incorrecta. No es así que en una vista desplazada hay una ventana de cliente muy grande que está desplazada físicamente. En cambio, cuando se desplaza, se ajustan el modo de visualización y el mapeo del DC, lo que hace que parezca que su vista es más grande de lo que realmente es. Por lo tanto, si desea dibujar una línea desde la esquina superior izquierda de la esquina inferior derecha de la ventana gráfica actual, necesita GetViewPortOrg () y GetViewportExt (). Si estos devuelven los valores incorrectos, algo está mal en su uso de CScrollView. ¿Llamaste a SetScrollSizes ()?

Otros consejos

Dentro de su función OnDraw (), puede llamar a pDC- > GetViewportOrg y pDC- > GetViewportExt.

EDIT : Lo sentimos, olvidé que las extensiones de las vistas son solo factores de escala. Estoy de acuerdo en que lo que realmente necesitas aquí es el cliente correcto.

Sí, ambos tienen razón. GetClientRect fue exactamente lo que necesitaba. Un pedo cerebral de mi parte ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top