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_DOWN
VK_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 CScrollView
gibi, bu üye işlevleri için önerilen davranışı WM_MOUSEWHEEL
destekler, tekerlek döndürme iletisi.
Otomatik kaydırmadan yararlanmak için, görünüm sınıfınızı yerine öğesinden CScrollView
CView
tü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::OnUpdate
geç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 OnDraw
cihaz 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 OnDraw
cihaz 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ılarakWS_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 birCSplitterWnd
içine yerleştirildiğinde, nesneCScrollView
kendi kaydırma çubuklarını oluşturmak yerine paylaşılanları kullanır.
kullanma CScrollView
hakkı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_TEXT
eş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_ANISOTROPIC
kullanı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 GetMyDocSize
iliş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_ANISOTROPIC
dışı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