Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kaydırma özelliklerine sahip A CView .
Sözdizimi
class CScrollView : public CView
Üyeler
Korumalı Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
CScrollView::CScrollView |
Bir CScrollView nesne oluşturur. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
CScrollView::CheckScrollBars |
Kaydırma görünümünün yatay ve dikey kaydırma çubukları olup olmadığını gösterir. |
CScrollView::FillOutsideRect |
Görünümün kaydırma alanının dışındaki alanını doldurur. |
CScrollView::GetDeviceScrollPosition |
Cihaz birimlerindeki geçerli kaydırma konumunu alır. |
CScrollView::GetDeviceScrollSizes |
Kaydırılabilir görünümün geçerli eşleme modunu, toplam boyutunu ve satır ve sayfa boyutlarını alır. Boyutlar cihaz birimlerindedir. |
CScrollView::GetScrollPosition |
Geçerli kaydırma konumunu mantıksal birimler halinde alır. |
CScrollView::GetTotalSize |
Mantıksal birimlerdeki kaydırma görünümünün toplam boyutunu alır. |
CScrollView::ResizeParentToFit |
Görünümün boyutunun çerçevenin boyutunu dikte etmesine neden olur. |
CScrollView::ScrollToPosition |
Görünümü, mantıksal birimlerde belirtilen belirli bir noktaya kaydırıyor. |
CScrollView::SetScaleToFitSize |
Kaydırma görünümünü ölçek-sığdırma moduna geçirir. |
CScrollView::SetScrollSizes |
Kaydırma görünümünün eşleme modunu, toplam boyutunu ve yatay ve dikey kaydırma miktarlarını ayarlar. |
Açıklamalar
İleti eşlenen OnHScroll ve OnVScroll üye işlevlerini geçersiz kılarak türetilen CView herhangi bir sınıfta standart kaydırmayı kendiniz işleyebilirsiniz. Ancak CScrollView özelliklerine CView aşağıdaki özellikleri ekler:
Pencere ve görünüm penceresi boyutlarını ve eşleme modlarını yönetir.
Kaydırma çubuğu iletilerine yanıt olarak otomatik olarak kaydırr.
Klavyeden, kaydırmayan bir fareden veya IntelliMouse tekerleğinden gelen iletilere yanıt olarak otomatik olarak kayar.
Klavyeden gelen iletilere yanıt olarak otomatik olarak kaydırmak için, bir WM_KEYDOWN ileti ekleyin ve için VK_DOWNVK_PREV test edin ve öğesini çağırınSetScrollPos.
İleti eşlenen OnMouseWheel ve OnRegisteredMouseWheel üye işlevlerini geçersiz kılarak fare tekerleğini kaydırmayı kendiniz işleyebilirsiniz. için olduğu CScrollViewgibi, bu üye işlevleri için önerilen davranışı WM_MOUSEWHEELdestekler, tekerlek döndürme iletisi.
Otomatik kaydırmadan yararlanmak için, görünüm sınıfınızı yerine öğesinden CScrollView CViewtüretin. Görünüm ilk oluşturulduğunda, kaydırılabilir görünümün boyutunu belgenin boyutuna göre hesaplamak istiyorsanız, veya CView::OnUpdategeçersiz kılmanızdan CView::OnInitialUpdate üye işlevini çağırınSetScrollSizes. (Belgenin boyutunu sorgulamak için kendi kodunuzu yazmanız gerekir. Bir örnek için bkz . Karalama örneği.)
Üye işlevine yapılan çağrı görünümün SetScrollSizes eşleme modunu, kaydırma görünümünün toplam boyutlarını ve yatay ve dikey olarak kaydıracak tutarları ayarlar. Tüm boyutlar mantıksal birimlerdedir. Görünümün mantıksal boyutu genellikle belgede depolanan verilerden hesaplanır, ancak bazı durumlarda sabit bir boyut belirtmek isteyebilirsiniz. Her iki yaklaşıma da örnek olarak bkz CScrollView::SetScrollSizes. .
Mantıksal birimlerde yatay ve dikey olarak kaydırılacak tutarları belirtirsiniz. Varsayılan olarak, kullanıcı kaydırma kutusunun dışındaki bir kaydırma çubuğu miline tıklarsa bir CScrollView "sayfa" kaydırıyor. Kullanıcı kaydırma çubuğunun herhangi bir ucundaki kaydırma okuna tıklarsa bir CScrollView "çizgi" kaydırıyor. Varsayılan olarak, bir sayfa görünümün toplam boyutunun 1/10'unu oluşturur; satır, sayfa boyutunun 1/10'unu oluşturur. Üye işlevine özel boyutlar SetScrollSizes geçirerek bu varsayılan değerleri geçersiz kılın. Örneğin, yatay boyutu toplam boyutun genişliğinin bir bölümüne, dikey boyutu ise geçerli yazı tipindeki bir çizginin yüksekliğine ayarlayabilirsiniz.
Kaydırmak yerine görünümü CScrollView otomatik olarak geçerli pencere boyutuna ölçeklendirin. Bu modda, görünümde kaydırma çubuğu yoktur ve mantıksal görünüm pencerenin istemci alanına tam olarak sığacak şekilde uzatılır veya küçültülmüş olur. Bu ölçek-sığdırma özelliğini kullanmak için çağrısında bulunur CScrollView::SetScaleToFitSize. (ya da SetScaleToFitSize SetScrollSizesçağırabilirsiniz, ancak ikisini birden çağırmayın.)
OnDraw Türetilmiş görünüm sınıfınızın üye işlevi çağrılmadan önce, CScrollView öğesine geçirdiği OnDrawcihaz bağlamı nesnesinin CPaintDC görünüm penceresi kaynağını otomatik olarak ayarlar.
Kaydırma penceresinin görünüm penceresi kaynağını ayarlamak için öğesini CScrollView geçersiz kılar CView::OnPrepareDC. Bu ayarlama, öğesine geçen OnDrawcihaz bağlamı CPaintDC CScrollView için otomatiktir, ancak kullandığınız diğer cihaz bağlamları için (gibiCClientDC) kendinizi çağırmanız CScrollView::OnPrepareDC gerekir. Kalem, arka plan rengi ve diğer çizim özniteliklerini ayarlamak için geçersiz kılabilirsiniz CScrollView::OnPrepareDC , ancak ölçeklendirme yapmak için temel sınıfı çağırabilirsiniz.
Kaydırma çubukları, aşağıdaki durumlarda gösterildiği gibi görünüme göre üç yerde görünebilir:
ve
WS_VSCROLLWindows Stilleri kullanılarakWS_HSCROLLgörünüm için standart pencere stili kaydırma çubukları ayarlanabilir.Kaydırma çubuğu denetimleri görünümü içeren çerçeveye de eklenebilir; bu durumda çerçeve penceresinden o anda etkin olan görünüme çerçeveyi ve
WM_VSCROLLiletileri iletirWM_HSCROLL.Çerçeve ayrıca bir bölücü denetimindeki
CSplitterWndkaydırma iletilerini o anda etkin olan bölücü bölmesine (görünüm) iletir. Paylaşılan kaydırma çubuklarıyla birCSplitterWndiçine yerleştirildiğinde, nesneCScrollViewkendi kaydırma çubuklarını oluşturmak yerine paylaşılanları kullanır.
kullanma CScrollViewhakkında daha fazla bilgi için bkz . Belge/Görünüm Mimarisi ve MFC'de Kullanılabilen Türetilmiş Görünüm Sınıfları.
Devralma Hiyerarşisi
CScrollView
Gereksinimler
Üstbilgi: afxwin.h
CScrollView::CheckScrollBars
Kaydırma görünümünde yatay ve dikey çubuklar olup olmadığını belirlemek için bu üye işlevini çağırın.
void CheckScrollBars(
BOOL& bHasHorzBar,
BOOL& bHasVertBar) const;
Parametreler
bHasHorzBar
Uygulamanın yatay kaydırma çubuğu olduğunu gösterir.
bHasVertBar
Uygulamanın dikey kaydırma çubuğu olduğunu gösterir.
CScrollView::CScrollView
Bir CScrollView nesne oluşturur.
CScrollView();
Açıklamalar
Kaydırma görünümü kullanılabilir duruma gelmeden önce veya SetScaleToFitSize aramanız SetScrollSizes gerekir.
CScrollView::FillOutsideRect
Görünümün kaydırma alanının dışında görünen alanını doldurmak için arayın FillOutsideRect .
void FillOutsideRect(
CDC* pDC,
CBrush* pBrush);
Parametreler
pDC
Doldurmanın yapılması gereken cihaz bağlamı.
pBrush
Alanın doldurulacağı fırça.
Açıklamalar
Aşırı arka plan boyanmasını önlemek için kaydırma görünümünüzün OnEraseBkgnd işleyici işlevinde kullanınFillOutsideRect.
Örnek
BOOL CMyScrollView::OnEraseBkgnd(CDC* pDC)
{
CBrush br(GetSysColor(COLOR_WINDOW));
FillOutsideRect(pDC, &br);
return TRUE; // Erased
}
CScrollView::GetDeviceScrollPosition
Kaydırma çubuklarındaki kaydırma kutularının geçerli yatay ve dikey konumlarını istediğinizde çağırın GetDeviceScrollPosition .
CPoint GetDeviceScrollPosition() const;
Dönüş Değeri
Kaydırma kutularının nesne olarak CPoint yatay ve dikey konumları (cihaz birimlerinde).
Açıklamalar
Bu koordinat çifti, belgedeki görünümün sol üst köşesinin kaydırıldığı konuma karşılık gelir. Bu, cihaz konumlarını kaydırmak için fare aygıtı konumlarını sıfırlamak için kullanışlıdır.
GetDeviceScrollPosition cihaz birimlerindeki değerleri döndürür. Mantıksal birimler istiyorsanız, bunun yerine kullanın GetScrollPosition .
CScrollView::GetDeviceScrollSizes
GetDeviceScrollSizes geçerli eşleme modunu, toplam boyutu ve kaydırılabilir görünümün satır ve sayfa boyutlarını alır.
void GetDeviceScrollSizes(
int& nMapMode,
SIZE& sizeTotal,
SIZE& sizePage,
SIZE& sizeLine) const;
Parametreler
nMapMode
Bu görünüm için geçerli eşleme modunu döndürür. Olası değerlerin listesi için bkz SetScrollSizes. .
sizeTotal
Cihaz birimlerindeki kaydırma görünümünün geçerli toplam boyutunu döndürür.
sizePage
Kaydırma çubuğu milindeki fare tıklamasına yanıt olarak her yönde kaydırmak için geçerli yatay ve dikey tutarları döndürür. Üye cx yatay tutarı içerir. Üye cy dikey tutarı içerir.
sizeLine
Kaydırma okundaki fare tıklamasına yanıt olarak her yönde kaydırmak için geçerli yatay ve dikey tutarları döndürür. Üye cx yatay tutarı içerir. Üye cy dikey tutarı içerir.
Açıklamalar
Boyutlar cihaz birimlerindedir. Bu üye işlevi nadiren çağrılır.
CScrollView::GetScrollPosition
Kaydırma çubuklarındaki kaydırma kutularının geçerli yatay ve dikey konumlarını istediğinizde çağırın GetScrollPosition .
CPoint GetScrollPosition() const;
Dönüş Değeri
Kaydırma kutularının nesne olarak CPoint yatay ve dikey konumları (mantıksal birimlerde).
Açıklamalar
Bu koordinat çifti, belgedeki görünümün sol üst köşesinin kaydırıldığı konuma karşılık gelir.
GetScrollPosition mantıksal birimlerdeki değerleri döndürür. Cihaz birimlerini istiyorsanız kullanın GetDeviceScrollPosition .
CScrollView::GetTotalSize
Kaydırma görünümünün geçerli yatay ve dikey boyutlarını almak için çağrısı GetTotalSize .
CSize GetTotalSize() const;
Dönüş Değeri
Kaydırma görünümünün mantıksal birimlerdeki toplam boyutu. Yatay boyut, dönüş değerinin üyesindedir cx CSize . Dikey boyut üyededir cy .
CScrollView::ResizeParentToFit
Görünümünüzün boyutunun çerçeve penceresinin boyutunu dikte etmesine izin vermek için çağrısı ResizeParentToFit yapın.
void ResizeParentToFit(BOOL bShrinkOnly = TRUE);
Parametreler
bShrinkOnly
Gerçekleştirilecek yeniden boyutlandırma türü. Varsayılan değer olan TRUE, uygunsa çerçeve penceresini küçültür. Kaydırma çubukları büyük görünümler veya küçük çerçeve pencereleri için görünmeye devam eder. değeri FALSE , görünümün her zaman çerçeve penceresini tam olarak yeniden boyutlandırmasına neden olur. Çerçeve penceresi birden çok belge arabirimi (MDI) çerçeve penceresine veya ekrana sığmayacak kadar büyük olabileceğinden bu biraz tehlikeli olabilir.
Açıklamalar
Bu yalnızca MDI alt çerçeve pencerelerindeki görünümler için önerilir. Türetilmiş CScrollView sınıfınızın işleyici işlevinde OnInitialUpdate kullanınResizeParentToFit. Bu üye işlevinin bir örneği için bkz CScrollView::SetScrollSizes. .
ResizeParentToFit görünüm penceresinin boyutunun ayarlandığını varsayar. Görünüm penceresi boyutu çağrıldığında ResizeParentToFit ayarlanmamışsa bir onay alırsınız. Bunun gerçekleşmediğinden emin olmak için çağrısından ResizeParentToFitönce aşağıdaki çağrıyı yapın:
GetParentFrame()->RecalcLayout();
CScrollView::ScrollToPosition
Görünümde belirli bir noktaya kaydırmak için çağrısı ScrollToPosition .
void ScrollToPosition(POINT pt);
Parametreler
pt
Mantıksal birimlerde kaydıracak nokta. Üye x pozitif bir değer olmalıdır (görünümün toplam boyutuna kadar 0'dan büyük veya buna eşit). Eşleme modu olduğunda aynı durum üye için y de geçerlidir MM_TEXT. y Üye, dışında MM_TEXTeşleme modlarında negatiftir.
Açıklamalar
Görünüm kaydırılır, böylece bu nokta pencerenin sol üst köşesinde olur. Görünüm sığacak şekilde ölçeklendirildiyse bu üye işlevi çağrılmamalıdır.
CScrollView::SetScaleToFitSize
Görünüm penceresi boyutunu geçerli pencere boyutuna otomatik olarak ölçeklendirmek istediğinizde çağrısı SetScaleToFitSize yapın.
void SetScaleToFitSize(SIZE sizeTotal);
Parametreler
sizeTotal
Görünümün ölçeklendirildiği yatay ve dikey boyutlar. Kaydırma görünümünün boyutu mantıksal birimler halinde ölçülür. Yatay boyut üyede cx yer alır. Dikey boyut üyenin cy içinde yer alır. Her ikisi de cx cy 0'dan büyük veya buna eşit olmalıdır.
Açıklamalar
Kaydırma çubuklarıyla, mantıksal görünümün yalnızca bir bölümü istediğiniz zaman görülebilir. Ancak ölçek-sığdırma özelliğiyle, görünüm kaydırma çubuklarına sahip değildir ve mantıksal görünüm pencerenin istemci alanına tam olarak sığacak şekilde esnetilir veya küçültülür. Pencere yeniden boyutlandırıldığında görünüm, verilerini pencerenin boyutuna göre yeni bir ölçekte çizer.
Çağrısını SetScaleToFitSize genellikle görünümün OnInitialUpdate üye işlevini geçersiz kılmanıza yerleştirirsiniz. Otomatik ölçeklendirme istemiyorsanız bunun yerine üye işlevini çağırın SetScrollSizes .
SetScaleToFitSize bir "Sığdırmak için Yakınlaştır" işlemi uygulamak için kullanılabilir. Kaydırmayı yeniden başlatma için kullanın SetScrollSizes .
SetScaleToFitSize görünüm penceresinin boyutunun ayarlandığını varsayar. Görünüm penceresi boyutu çağrıldığında SetScaleToFitSize ayarlanmamışsa bir onay alırsınız. Bunun gerçekleşmediğinden emin olmak için çağrısından SetScaleToFitSizeönce aşağıdaki çağrıyı yapın:
GetParentFrame()->RecalcLayout();
CScrollView::SetScrollSizes
Görünüm güncelleştirilmek üzereyken çağırın SetScrollSizes .
void SetScrollSizes(
int nMapMode,
SIZE sizeTotal,
const SIZE& sizePage = sizeDefault,
const SIZE& sizeLine = sizeDefault);
Parametreler
nMapMode
Bu görünüm için ayarlanacağı eşleme modu. Olası değerler arasında şunlar bulunur:
| Eşleme Modu | Mantıksal Birim | Pozitif y ekseni Genişletir... |
|---|---|---|
MM_TEXT |
1 piksel | Aşağı yuvarlama |
MM_HIMETRIC |
0,01 mm | Yukarı |
MM_TWIPS |
1/1440 in | Yukarı |
MM_HIENGLISH |
0,001 in | Yukarı |
MM_LOMETRIC |
0,1 mm | Yukarı |
MM_LOENGLISH |
0,01 in | Yukarı |
Bu modların tümü Windows tarafından tanımlanır. için iki standart eşleme modu MM_ISOTROPIC ve MM_ANISOTROPICkullanılmaz CScrollView. Sınıf kitaplığı, görünümü pencere boyutuna SetScaleToFitSize ölçeklendirmek için üye işlevi sağlar. Yukarıdaki tablodaki üçüncü sütun koordinat yönünü açıklar.
sizeTotal
Kaydırma görünümünün toplam boyutu. Üye cx yatay kapsamı içerir. Üye cy dikey kapsamı içerir. Boyutlar mantıksal birimlerdedir. Her ikisi de cx cy 0'dan büyük veya buna eşit olmalıdır.
sizePage
Yatay ve dikey tutarlar, kaydırma çubuğu milindeki fare tıklamasına yanıt olarak her yönde kaydırılarak yapılır. Üye cx yatay tutarı içerir. Üye cy dikey tutarı içerir.
sizeLine
Yatay ve dikey, bir kaydırma okundaki fare tıklamasına yanıt olarak her yönde kaydırmak için gereken tutardır. Üye cx yatay tutarı içerir. Üye cy dikey tutarı içerir.
Açıklamalar
Örneğin, belge başlangıçta görüntülendiğinde veya boyutu değiştiğinde kaydırma özelliklerini ayarlamak için üye işlevini geçersiz kılma OnUpdate işleminizde bunu çağırın.
Genellikle, türetilmiş belge sınıfınızla sağladığınız bir belge üyesi işlevini çağırarak görünümün GetMyDocSizeilişkili belgesinden boyut bilgilerini alırsınız. Aşağıdaki kod bu yaklaşımı gösterir:
CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
SetScrollSizes(nMapMode, pMyDoc->GetMyDocSize());
Alternatif olarak, bazen aşağıdaki kodda olduğu gibi sabit bir boyut ayarlamanız gerekebilir:
SetScrollSizes(nMapMode, CSize(100, 100));
Eşleme modunu veya MM_ANISOTROPICdışındaki MM_ISOTROPIC Windows eşleme modlarından birine ayarlamanız gerekir. Kısıtlanmamış eşleme modu kullanmak istiyorsanız yerine üye işlevini SetScrollSizesçağırınSetScaleToFitSize.
Örnek
void CMyScrollView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/,
CObject* /*pHint*/)
{
// Implement a GetMyDocSize() member function in
// your document class; it returns a CSize.
CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
SetScrollSizes(MM_LOENGLISH, pMyDoc->GetMyDocSize());
ResizeParentToFit(); // Default bShrinkOnly argument
}
void CMyScrollView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
// The GetMyDocSize() member function is implemented in
// your document class. The return type is CSize.
CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
SetScrollSizes(MM_TEXT, pMyDoc->GetMyDocSize());
}
Ayrıca bkz.
MFC Örneği DIBLOOK
CView Sınıf
Hiyerarşi Grafiği
CSplitterWnd Sınıf