Domanda

(Domanda MFC) Qual è il modo migliore per determinare l'area client attualmente visualizzata in un CScrollView? Ho solo bisogno della dimensione della parte visibile, quindi GetClientRect () non funzionerà qui.

È stato utile?

Soluzione

Devi usare GetClientRect (), ma penso che tu stia facendo la domanda sbagliata. Non è così che in una vista a scorrimento c'è una finestra client molto grande che è fatta scorrere fisicamente. Invece, quando scorri, il testo del DC viewpor e la modalità di mappatura vengono regolati, il che fa sembrare che la tua vista sia più grande di quanto non sia in realtà. Pertanto, se si desidera tracciare una linea dall'angolo in alto a sinistra dell'angolo in basso a destra della finestra corrente, è necessario GetViewPortOrg () e GetViewportExt (). Se questi restituiscono valori errati, qualcosa non va nell'uso di CScrollView. Hai chiamato SetScrollSizes ()?

Altri suggerimenti

All'interno della funzione OnDraw (), è possibile chiamare pDC- > GetViewportOrg e pDC- > GetViewportExt.

MODIFICA : mi spiace, ho dimenticato che le estensioni di Viewport sono solo fattori di ridimensionamento. Sono d'accordo che ciò di cui hai davvero bisogno qui è il client rect.

Sì, hai ragione entrambi. GetClientRect era esattamente ciò di cui avevo bisogno. Una scoreggia cerebrale da parte mia ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top