CScrollView Sınıf

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_VSCROLL Windows Stilleri kullanılarak WS_HSCROLL gö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_VSCROLL iletileri iletirWM_HSCROLL.

  • Çerçeve ayrıca bir bölücü denetimindeki CSplitterWnd kaydırma iletilerini o anda etkin olan bölücü bölmesine (görünüm) iletir. Paylaşılan kaydırma çubuklarıyla bir CSplitterWnd içine yerleştirildiğinde, nesne CScrollView kendi 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

CObject

CCmdTarget

CWnd

CView

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