| 
      
        |  SİTE 
            İÇİ ARAMA |  
        |  |  
      
        |  Blogroll |  
        |  |    | 
        
            |  |  
            | 
                    
                        | Windows API - Akıtma Çubuğu Kontrolü |  |  
                        | 
	
    
		
            | Gönderiliyor lütfen bekleyin... | 
 |  |  
            | Bu yazımızda, Scroll 
  bar, Kaydırma çubuğu isimleriyle bilinen akıtma çubuğu standart kontrolünü 
  inceleyeceğiz. Win32 sistemlerinde yazılmış bir grafik uygulaması, uygulamanın 
  ana penceresinin boyutlarından daha büyük boyutlarda olan bir belgeyi ya da 
  resmi gösterebilir. Ancak bu işlemin gerçekleştirilebilmesi için görüntülemenin 
  yapılacağı forma, kullanıcının fare ile müdahale edebileceği akıtma çubukları 
  konulmalıdır. Kullanıcı forma sığmayan nesnenin görünmeyen kısımlarını görebilmek 
  için, formun ya da söz konusu kontrolün kenarlarında oluşturulan akıtma çubuklarını 
  sağa sola ya da yukarıya aşağıya doğru hareket ettirebilir. 
 Kullanıcıya sunulacak 
  nesnenin, uygulamanın ana ekranına sığmadığı her durumda programcı akıtma çubukları 
  kullanır. Akıtma çubukları dikey ya da yatay konumlarda bulunabilir. Programcı 
  uygulamada oluşan durumu dikkate alarak akıtma çubuğunun yönünü, kontrolü yaratırken 
  belirler. Sağa sola doğru yapılacak kaydırmalar için yatay bir akıtma çubuğu, 
  yukarıya aşağıya doğru yapılacak kaydırmalar için ise dikey bir akıtma çubuğu 
  kullanılır.
 
 AKITMA 
  ÇUBUĞU KONTROLÜNÜN BİLEŞENLERİ
 
 Akıtma çubuğu kontrolü, 
  her iki ucunda üzerinde ok simgesi bulunan birer düğmeden, düğmeler arasında 
  kalan bir akıtma kutusundan ve kaydırılma miktarını belirten bir düğmeden oluşur. 
  Akıtma çubuğu, uygulamanın bir penceresinde gösterilmek istenen bir nesnenin 
  tüm genişliğini veya yüksekliğini belirtir; akıtma kutusu ise bu nesnenin pencere 
  içerisinde görüntülenebilen yani pencereye sığabilen görünür kısmını belirtir. 
  Akıtma kutusunun konumu, kullanıcı nesnenin farklı kısımlarını görüntüleyebilmek 
  amacıyla kaydırma yaptığında değiştirilir. Aşağıda 
  bir akıtma çubuğu kontrolünün kısımları gösterilmiştir :
 
 
  
 Kontrolün başında 
  ve sonunda bulunan kaydırma düğmeleri pencere üzerinde tam olarak görüntülenememiş 
  nesnenin akıtılması için kullanılır. Ayrıca akıtma kutusu içerisinde herhangi 
  bir yere fare ile basılması sırasında da akıtma yapılabilir. Kaydırma düğmeleri, 
  içeriğin ilgili yöne doğru bir birim kaydırılmasını sağlar. Bir birimden daha 
  fazla kaydırılma yapılabilmesi için akıtma kutusu kullanılır. Kaydırma kutusu 
  düğmesinin sürüklenmesi ile de kaydırma yapılabilir. Bu durumda gerçekleşecek 
  kaydıra miktarı da düğmenin basılıp sürüklenmesi miktarına bağlıdır.
 
 Akıtma çubuğu, 
  bir pencere içerisinde standart akıtma çubuğu olarak ya da akıtma çubuğu 
  kontrolü olarak bulunabilir. Standart akıtma çubuğu, pencerenin kullanım alanı 
  dışarısında bulunur. Pencere ile birlikte oluşturulur ve pencere gösterildiği 
  zaman görünür hale gelir. Standart akıtma çubuğu, kullanıcının pencerenin kullanım 
  alanının tamamını görebilmesi için akıtma gerçekleştirir. Standart akıtma çubuğunu 
  oluşturabilmek için, ilgili pencere oluşturulurken WS_HSCROLL (yatay akıtma 
  çubuğu) veya WS_VSCROLL (dikey akıtma çubuğu) pencere biçimleri belirtilir. 
  Akıtma çubuğu kontrolü ise scrollbar pencere sınıf ismi kullanılarak oluşturulan 
  bir kontrol penceresidir. Bu kontrolün görünümü ve işlevi, standart akıtma çubuğunda 
  olduğu gibidir; ancak ayrı bir penceredir (kontroldür). Aşağıda bu akıtma çubukları 
  gösterilmiştir :
 
 
  
 Standart akıtma 
  çubukları kullanmanın avantajı, Windows sisteminin bir akıtma çubuğu oluşturması 
  ve bu çubuğun boyutlarını ve konumunu otomatik olarak ayarlamasıdır. Ancak bazı 
  durumlarda, standart akıtma çubukları işimizi görmeyebilir. Örneğin, ana pencereyi 
  belli bölümlere ayırıp, her bölümde o bölüme özgü birer standart akıtma çubuğu 
  oluşturmak isteyebiliriz. Bu isteğimizi standart akıtma çubukları ile gerçekleştiremeyiz. 
  Çünkü standart akıtma çubukları, bir pencere için sadece bir tane olabilir. 
  Böyle durumlarda, akıtma çubuğu kontrollerini kullanabiliriz. Akıtma çubuklarının 
  tek kullanım nedeni, görüntülenemeyen kısımların görünür hale gelmesini sağlamak 
  değildir. Uygulama içerisinde belli bir ayar gerektiren (ses ayarı, hız ayarı 
  gibi) durumlarda akıtma çubukları kullanılabilir.
 
 AKITMA 
  ÇUBUĞU KONTROLÜNÜN PENCERE BİÇİMLERİ
 
 Akıtma çubuklarına 
  ilişkin pencere biçimlerinin bazıları, kontrolün varsayılan genişlik veya yükseklikte 
  oluşturulmasını sağlar. Ancak her durumda, kontolün görüntülenmesini istediğimiz 
  koordinatları belirtmemiz gereklidir. Şimdi akıtma çubuklarına ilişkin pencere 
  biçimlerine ve anlamlarına bir göz atalım :
 
 
 
  AKITMA 
  KUTUSUNUN KONUMU VE AKITMA MİKTARI 
    | AKITMA 
        ÇUBUĞU KONTROLÜ PENCERE BİÇİMİ SEMBOLİK SABİT İSMİ | ANLAMI |   
    | SBS_BOTTOMALIGN | Kontrolün 
      alt kenarını, kontrol oluşturulurken belirtilen x, y koordinat değerleri 
      ve nWidth, nHeight genişlik yükseklik değerlerinin belirlediği dikdörtgenin 
      alt kenarı ile hizalar. |   
    | SBS_HORZ | Yatay 
      bir kaydırma çubuğu belirtir. Eğer SBS_BOTTOMALIGN ve SBS_TOPALIGN pencere 
      biçimleri kullanılmamışsa, kaydırma çubuğu, kontrol oluşturulurken belirtilen 
      x, y konumunda ve nWidth, nHeight genişlik yükseklik değerlerine sahip olur. |   
    | SBS_LEFTALIGN | Kontrolün 
      sol kenarını, kontrol oluşturulurken belirtilen x, y koordinat değerleri 
      ve nWidth, nHeight genişlik yükseklik değerlerinin belirlediği dikdörtgenin 
      sol kenarı ile hizalar. Kontrolün genişliği sistem akıtma çubuğunun varsayılan 
      genişlik değeri kadar olur. Bu pencere biçimi, SBS_VERT pencere biçimi ile 
      birlikte kullanılmalıdır. |   
    | SBS_RIGHTALIGN | Kontrolün 
      sağ kenarını, kontrol oluşturulurken belirtilen x, y koordinat değerleri 
      ve nWidth, nHeight genişlik yükseklik değerlerinin belirlediği dikdörtgenin 
      sağ kenarı ile hizalar. Kontrolün genişliği sistem akıtma çubuğunun varsayılan 
      genişlik değeri kadar olur. Bu pencere biçimi, SBS_VERT pencere biçimi ile 
      birlikte kullanılmalıdır. |   
    | SBS_SIZEBOX | Büyüklük 
      kutusu belirtir. Bu kutu, SBS_SIZEBOXBOTTOMRIGHTALIGN ve SBS_SIZEBOXTOPLEFTALIGN 
      pencere biçimleri kullanılmamışsa, kontrol oluşturulurken belirtilen konumda 
      ve boyutlarda olur. |   
    | SBS_SIZEBOXBOTTOMRIGHTALIGN | Büyüklük 
      kutusunun sağ alt köşesini, kontrol oluşturulurken belirtilen x, y koordinat 
      değerleri ve nWidth, nHeight genişlik yükseklik değerlerinin belirlediği 
      dikdörtgenin sağ alt köşesi ile hizalar. Büyüklük kutusunun genişliği ve 
      yüksekliği sistem büyüklük kutusunun varsayılan boyutları değerinde olur. 
      Bu pencere biçimi, SBS_SIZEBOX pencere biçimi ile birlikte kullanılmalıdır. |   
    | SBS_SIZEBOXTOPLEFTALIGN | Büyüklük 
      kutusunun sol üst köşesini, kontrol oluşturulurken belirtilen x, y koordinat 
      değerleri ve nWidth, nHeight genişlik yükseklik değerlerinin belirlediği 
      dikdörtgenin sol üst köşesi ile hizalar. Büyüklük kutusunun genişliği ve 
      yüksekliği sistem büyüklük kutusunun varsayılan boyutları değerinde olur. 
      Bu pencere biçimi, SBS_SIZEBOX pencere biçimi ile birlikte kullanılmalıdır. |   
    | SBS_SIZEGRIP | SBS_SIZEBOX 
      pencere biçimi ile aynı işlevi görmektedir. Ancak SBS_SIZEBOX biçimine ek 
      olarak, belirgin bir kenarlık eklenmesini sağlar. |   
    | SBS_TOPALIGN | Kontrolün 
      üst kenarını, kontrol oluşturulurken belirtilen x, y koordinat değerleri 
      ve nWidth, nHeight genişlik yükseklik değerlerinin belirlediği dikdörtgenin 
      üst kenarı ile hizalar. Kontrolün yüksekliği sistem akıtma çubuğunun varsayılan 
      yükseklik değeri kadar olur. Bu pencere biçimi, SBS_HORZ pencere biçimi 
      ile birlikte kullanılmalıdır. |   
    | CBS_VERT | Dikey 
      bir kaydırma çubuğu belirtir. Eğer SBS_RIGHTALIGN ve SBS_LEFTALIGN pencere 
      biçimleri kullanılmamışsa, kaydırma çubuğu, kontrol oluşturulurken belirtilen 
      x, y konumunda ve nWidth, nHeight genişlik yükseklik değerlerine sahip olur. |  
 Akıtma kutusunun 
  konumu tamsayı bir değer ile belirtilir. Bu değer, akıtma çubuğunun yatay veya 
  dikey olmasına göre, sol veya üst bitiş noktası baz alınarak verilir. Konum 
  değeri, akıtma miktarının en fazla ve en az değerleri arasında bir değer olmalıdır. 
  Örneğin 0 ile 100 arasında akıtma yapılabilen bir kontrol için, 50 konum değeri, 
  kontrolün tam orta noktasını belirtir. Başlangıç miktarı da akıtma çubuğuna 
  bağlıdır. Standart akıtma çubukları 0 ile 100 arasında değişen başlangıç miktarı 
  değerine sahip olabilirken, akıtma çubuğu kontrolü, kontrol oluşturulurken bir 
  değer belirtilmediği sürece en az ve en fazla değerleri 0 olacak biçimde yaratılırlar. 
  Akıtma çubuğunun konumu, SetScrollInfo API fonksiyonu ile verilebilir ve GetScrollInfo 
  API fonksiyonu ile öğrenilebilir. (Eski sistemlerde bu API fonksiyonları yerine 
  SetScrollRange ve GetScrollRange API fonksiyonları kullanılır.)
 
 Uygulama içerisinde 
  akıtma miktarı, kaydırılacak nesnenin konumuna kolayca dönüştürülecek bir tamsayıya 
  getirilir. Örneğin bir yazı dosyasının 260 satırı, aynı anda sadece 16 satır 
  gösterebilen bir pencere içerisinde gösterilmek isteniyorsa, dikey akıtma çubuğunun 
  miktarı 1 ile 244 arasında olacak şekilde ayarlanır. Akıtma kutusu 1 konumunda 
  olduğunda, yazı dosyasının ilk satırı pencerenin en üst kısmında görüntülenir. 
  Akıtma kutusu 244 konumunda olduğunda, yazı dosyasının son satırı pencerenin 
  en alt kısmında görüntülenir. Eğer en küçük değerden daha küçük veya en büyük 
  değerden daha büyük bir konuma ulaşılmaya çalışılırsa, bu değerler yerine, akıtma 
  miktarının en küçük ve en büyük değerleri kullanılır.
 
 Günümüzde kullanılan 
  Windows sistemlerinde (NT 4.0 ve sonrası Windows sistemleri), uygulama içerisinde 
  yer alan bir akıtma çubuğu için sayfa büyüklüğünün ayarlanması da mümkündür. 
  Sayfa büyüklüğü, geçerli boyutları verilen pencerenin kullanım alanında görüntülenebilecek 
  veri birimi (data unit) sayısını ifade eder. Örneğin, pencerenin kullanım alanı 
  bir yazının 16 satırını gösterebiliyorsa, uygulama içerisinde sayfa büyüklüğü 
  16ya ayarlanabilir. Windows sistemleri, verilen bu sayfa büyüklüğü miktarını, 
  akıtma kutusunun büyüklüğünü ayarlamak için kullanır. Akıtma çubuğuna sahip 
  olan bir pencere yeniden boyutlandırıldığında, sayfa büyüklüğü değerinin ayarlanması 
  için SetScrollInfı API fonksiyonunun çağrılması gereklidir. Geçerli olan sayfa 
  büyüklüğü değerini öğrenebilmek için ise GetScrollInfo API fonksiyonu kullanılır. 
  Akıtma çubuğu miktarı ile akıtılacak olan nesne arasında düzgün bir ilişki kurulabilmesi 
  için, uygulama içerisinde nesnede her değişiklik olduğu durumda akıtma miktarı 
  da bu değişikliğe uygun olacak şekilde ayarlanmalıdır.
 
 Akıtma çubuğunun 
  akıtma kutusu düğmesi kullanıcı tarafından hareket ettirilirken, akıtma çubuğu, 
  akıtma kutusunun akıtma miktarındaki içerisindeki konumunu tamsayı bir değer 
  ile ifade ederek bildirir. Eğer getirilen konum, en küçük değere karşılık geliyorsa 
  akıtma kutusu düğmesi, dikey bir akıtma çubuğu için çubuğun en üst kısmında; 
  yatay bir akıtma çubuğu için ise çubuğun en sol kısmında yer alacaktır. Eğer 
  getirilen konum, en büyük değere karşılık geliyorsa akıtma kutusu düğmesi, dikey 
  bir akıtma çubuğu için çubuğun en alt kısmında; yatay bir akıtma çubuğu için 
  ise çubuğun en sağ kısmında yer alacaktır. Günümüzde kullanılan Windows sistemlerinde, 
  akıtma çubuğunun bildireceği en büyük akıtma miktarı değeri, sayfa büyüklüğü 
  değerine bağlıdır. Eğer bir akıtma çubuğu, 1den büyük bir sayfa büyüklüğü değerine 
  sahipse en fazla akıtma konumu, en büyük akıtma miktarı değerinden daha küçük 
  olacaktır. En büyük akıtma konumu şu formülle hesaplanabilir :
 
 
  
 Akıtma kutusunun, 
  akıtma çubuğu içerisindeki konumu uygulama tarafından belirtilmeli ve ayarlanmalıdır. 
  Kullanıcı akıtma çubuğunda kaydırma işlemi yaparken, akıtma çubuğu, akıtma kutusu 
  düğmesinin konumunu otomatik olarak ayarlamaz. Bunun yerine ana pencereye akıtma 
  gerçekleştirildiğine ilişkin bir bilgi mesajı iletir. Akıtma kutusunun konumunun 
  ayarlanması iiçin NT 4.0 ve sonrasına dahil olan sistemlerde SetScrollInfo API 
  fonksiyonu, daha eski sistemlerde ise SetScrollPos API fonksiyonu kullanılır.
 
 AKITMA 
  ÇUBUĞU KONTROLÜNÜN GÖRÜNÜRLÜĞÜ
 
 Windows sistemleri, 
  standart akıtma çubuğu için en küçük ve en büyük değerler birbirine eşit olacak 
  şekilde ayarlandığında, çubuğu gizler. NT 4.0 ve sonraki sistemlerde, akıtma 
  çubuğunun tüm akıtma miktarına eşit olan sayfa büyüklüğü değeri verildiğinde, 
  standart akıtma çubuğu sistem tarafından gizlenir. Böylece kullanılması gerekli 
  olmadığı durumlarda, çubuk görüntülenmez. En küçük ve en büyük akıtma miktarı 
  değerlerinin eşitliği bozulduğunda veya NT 4.0 ve sonraki sistemlerde sayfa 
  büyüklüğü değeri tüm akıtma miktarını kapsamadığında, standart akıtma çubuğu 
  yeniden görünür hale getirilir. Bir akıtma çubuğunun görünürlüğünü değiştirmek 
  için ise ShowScrollBar API fonksiyonu kullanılır. Bu API fonksiyonu, kontrolün 
  akıtma miktarı değerini, sayfa büyüklüğü değerini ve akıtma kutusu düğmesinin 
  konumunu değiştirmez. Akıtma çubuğunun akıtma kutusu düğmelerinin pasif (disabled) 
  duruma getirmek için EnableScrollBar API fonksiyonu kullanılır. Pasif hale getirilen 
  akıtma kutusu düğmeleri, kullanıcı girişine kapatılır.
 
 AKITMA 
  ÇUBUĞU ÇAĞRILARI
 
 Kullanıcılar, akıtma 
  çubuğunun birkaç kısmına fare ile tıklamak yoluyla akıtma çağrısında bulunabilir. 
  Windows sistemleri bu çağrıları, WM_HSCROLL veya WM_VSCROLL mesajları ile ana 
  pencerelere iletir. Yatay bir akıtma çubuğu WM_HSCROLL mesajı, dikey bir akıtma 
  çubuğu ise WM_VSCROLL mesajı iletir. Gönderilen bilgi mesajları, akıtma çubuğu 
  üzerinde yapılan işleme ilişkin bilgi de içerir. Bazı durumlarda, akıtma kutusu 
  düğmesinin konum bilgisini de içerirler. Aşağıda kullanıcının kontrol üzerinde 
  tıklama yaptığı kısma göre iletilen bilgi mesajları gösterilmiştir :
 
 
  
 Şekilden de anlaşılacağı 
  üzere, kullanıcınınn kontrol üzerinde yaptığı işleme göre, her durumda farklı 
  bir bilgi mesajı ile akıtma çağrısında bulunulmaktadır. Uygulama içerisinde 
  WM_HSCROLL ve WM_VSCROLL mesajları ile birlikte gelen bu mesajlar dinlenerek, 
  akıtma işlemine uygun bir işlem gerçekleştirilir. Aşağıdaki tabloda bu bilgi 
  mesajları listelenmiş ve bilgi mesajlarının kullanıcının hangi işlemi sonucunda 
  gönderildiği bilgisi verilmiştir. Mesajlara verilecek yanıtlarda kullanılan 
  birim, kaydırılan nesne ile uygun olacak şekilde uygulama tarafından belirlenen 
  bir birimdir. Örneğin bir yazıyı dikey bir şekilde kaydırırken kullanılacak 
  birim, yazının bir satırı olabilir.
 
 
 
  Akıtma çubuğu üzerine 
  tıklandığında veya sürükleme işlemi yapıldığında, kontrol SB_THUMPOSITION ve 
  SB_THUMBTRACK bilgi mesajlarını iletir. Bu iki mesajdan birisi işlenerek bu 
  durum ele alınabilir. SB_THUMPOSITION bilgi mesajı, kullanıcı akıtma kutusu 
  düğmesine fare ile tıkladıktan sonra fareyi serbest bıraktığı sırasında oluşur. 
  SB_THUMBTRACK bilgi mesajı ise akıtma kutusu düğmesi sürüklenirken iletilir. 
  Uygulamada, kullanıcı akıtma kutusu düğmesini sürükleyip fareyi serbest bıraktıktan 
  sonra akıtma işleminin gerçekleştirilmesi için SB_THUMBPOSITION mesajı işlenmelidir. 
  Kullanıcı akıtma kutusu düğmesini sürüklerken pencere içeriğinin akıtılması 
  için SB_THUMBTRACK mesajı işlenmelidir. 
    | AKITMA 
        ÇUBUĞU KONTROLÜ BİLGİ MESAJI | KULLANICININ 
        EYLEMİ  | UYGULAMANIN 
      VERECEĞİ YANIT |   
    | SB_LINEUP | Kullanıcı üst akıtma kutusu düğmesine tıklamış. | Akıtma 
      kutusu konumunu azalt, nesnenin üst kısmına doğru bir birim akıtma gerçekleştir. |   
    | SB_LINEDOWN | Kullanıcı 
      alt akıtma kutusu düğmesine tıklamış. | Akıtma 
      kutusu konumunu artır, nesnenin alt kısmına doğru bir birim akıtma gerçekleştir. |   
    | SB_LINELEFT | Kullanıcı 
      sol akıtma kutusu düğmesine tıklamış. | Akıtma 
      kutusu konumunu azalt, nesnenin sol kısmına doğru bir birim akıtma gerçekleştir. |   
    | SB_LINERIGHT | Kullanıcı 
      sağ akıtma kutusu düğmesine tıklamış. | Akıtma 
      kutusu konumunu artır, nesnenin sağ kısmına doğru bir birim akıtma gerçekleştir. |   
    | SB_PAGEUP | Kullanıcı 
      akıtma konumu düğmesinin üst kısmında akıtma miktarı bölgesine tıklamış. | Akıtma 
      kutusu konumunu bir pencerede görüntülenebilen veri birimi kadar azalt, 
      nesnenin üst kısmına doğru aynı miktarda akıtma gerçekleştir. |   
    | SB_PAGEDOWN | Kullanıcı 
      akıtma konumu düğmesinin alt kısmında akıtma miktarı bölgesine tıklamış. | Akıtma 
      kutusu konumunu bir pencerede görüntülenebilen veri birimi kadar artır, 
      nesnenin alt kısmına doğru aynı miktarda akıtma gerçekleştir. |   
    | SB_PAGELEFT | Kullanıcı 
      akıtma konumu düğmesinin sol kısmında akıtma miktarı bölgesine tıklamış. | Akıtma 
      kutusu konumunu bir pencerede görüntülenebilen veri birimi kadar azalt, 
      nesnenin sol kısmına doğru aynı miktarda akıtma gerçekleştir. |   
    | SB_PAGERIGHT | Kullanıcı 
      akıtma konumu düğmesinin sağ kısmında akıtma miktarı bölgesine tıklamış. | Akıtma 
      kutusu konumunu bir pencerede görüntülenebilen veri birimi kadar artır, 
      nesnenin sağ kısmına doğru aynı miktarda akıtma gerçekleştir. |   
    | SB_THUMBPOSITION | Kullanıcı 
      akıtma konumu düğmesini sürüklemiş ve bırakmış. | Akıtma 
      konumu düğmesini mesaj ile verilen konuma ayarla, aktılan nesneyi aynı miktarda 
      kaydır. |   
    | SB_THUMBTRACK | Kullanıcı 
      akıtma konumu düğmesini sürüklemekte. | Akıtma 
      konumu düğmesini mesaj ile verilen konuma ayarla, aktılan nesneyi aynı miktarda 
      kaydır. |   
    | BS_ENDSCROLL | Kullanıcı 
      akıtma kutusu düğmelerine tıklamış veya akıtma miktarı bölgesine tıklamış, 
      ardından fareyi serbest bırakmış . | - |  
 Basit bir uygulama 
  geliştirerek ekranda akıtma çubuğu üzerinde tıkladığımız yere göre hangi mesajların 
  iletildiği bilgisini izleyebiliriz. Bu amaçla standart akıtma çubuklarına sahip 
  bir pencere oluşturup, pencere fonksiyonu içerisinde akıtma çubuğundan gelen 
  mesajları dinleyelim ve gelen mesaja ilişkin bilgiyi ekran üzerinde bir etiket 
  kontrolüne yazdıralım.
 
 
 
  Ana penceremizi 
  oluştururken, pencere biçimi parametresi olarak WS_HSCROLL ve WS_VSCROLL sembolik 
  sabitleri geçildiğinde, penceremiz için yatay ve dikey standart akıtma çubukları 
  oluşturulur. Penceremizi bu parametre değişkeni değerleri ile oluşturduktan 
  sonra, pencere fonksiyonumuzda akıtma çubuğundan gelen mesajları ele alarak, 
  ekran üzerinde statik bir kontrole mesajları yazdıralım : 
    | hWnd = CreateWindow("gui",                                
        "Kaydırma Çubuğu Kontrolü Uygulaması",
                                
        WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,
                                CW_USEDEFAULT,
                                
        0,
                                
        500,
                                
        150,
                                
        NULL,
                                
        NULL,
                                
        hInstance,
                                
        NULL);
 
 
 |  
 
 
  SetWindowText 
  fonksiyonuna parametre olarak geçilen hTempControl tutamaç değeri, ekran üzerinde 
  oluşturduğumuz bir statik kontrole ilişkindir. Bu şekilde oluşturacağımız uygulamanın 
  çalışma zamanında akıtma çubuklarının çeşitli yerlerine tıklayarak pencere fonksiyonuna 
  hangi mesajların geldiğini izleyebilirsiniz : 
    | case WM_VSCROLL:       switch (LOWORD(wParam))
       {
             case SB_PAGEUP :
                   
        SetWindowText(hTempControl,"Dikey kaydırma -> PAGEUP");
                   
        break;
 
       
              case SB_PAGEDOWN :
                   
        SetWindowText(hTempControl,"Dikey kaydırma -> PAGEDOWN");
                   
        break;
 
       
              case SB_LINEUP :
                   
        SetWindowText(hTempControl,"Dikey kaydırma -> LINEUP");
                   
        break;
 
       
              case SB_LINEDOWN :
                   
        SetWindowText(hTempControl,"Dikey kaydırma -> LINEDOWN");
                   
        break;
 
       
              case SB_THUMBTRACK:
                   
        SetWindowText(hTempControl,"Dikey kaydırma -> THUMBTRACK");
                   
        break;
 
       
        }
       break;
 
 case WM_HSCROLL 
        :
       switch (LOWORD(wParam))
       {
             case SB_PAGEUP :
                   
        SetWindowText(hTempControl,"Yatay kaydırma -> PAGEUP");
                   
        break;
 
       
              case SB_PAGEDOWN :
                   
        SetWindowText(hTempControl,"Yatay kaydırma -> PAGEDOWN");
                   
        break;
 
       
              case SB_LINEUP :
                   
        SetWindowText(hTempControl,"Yatay kaydırma -> LINEUP");
                   
        break;
 
       
              case SB_LINEDOWN :
                   
        SetWindowText(hTempControl,"Yatay kaydırma -> LINEDOWN");
                   
        break;
 
       
              case SB_THUMBTRACK:
                   
        SetWindowText(hTempControl,"Yatay kaydırma -> THUMBTRACK");
                   
        break;
       
        }
       break;
 
 
 |  
 
  
 AKITMA 
  ÇUBUĞUNU KLAVYE İLE YÖNETME
 
 Akıtma çubuğu kontrolü, 
  kullanıcının klavyeden yapabileceği girişlere de yanıt verebilir. (Standart 
  akıtma çubuğu için bu durum söz konusu değildir.) Pencere üzerinde akıtma çubuğu 
  kontrolüne odaklanıldığı sırada, klavyedeki ok tuşlarına asılırsa, kontrol ana 
  penceresine WM_HSCROLL ve WM_VSCROLL bilgi mesajını iletecektir. Bu bilgi mesajları 
  ile birlikte kullanıcının bastığı tuş bilgisi de gönderilir. Aşağıda bu bilgi 
  mesajları listelenmiştir :
 
 
 
  SB_TOP bilgi mesajı, 
  kullanıcının akıtma miktarı değerinin en üst noktasına ulaştığı durumda gönderilir. 
  Bu durumda, uygulama kaydırılan nesnenin görünür hale gelmesi için pencere içeriğini 
  aşağıya doğru akıtır. SB_BOTTOM bilgi mesajı, kullanıcının akıtma miktarı değerinin 
  en alt noktasına ulaştığı durumda gönderilir. Bu durumda, uygulama kaydırılan 
  nesnenin görünür hale gelmesi için pencere içeriğini yukarıya doğru akıtır. 
  Programlarımız içerisinde akıtma çubuğu kontrolünün klavye ile yönetilmesini 
  istiyorsak, pencere fonksiyonunda öncelikle WM_KEYDOWN mesajını işlemeliyiz. 
  Daha sonra mesajla birlikte gelen basılan tuş bilgisini inceleyerek uygun akıtma 
  işlemini gerçekleştirmeliyiz. 
    | KLAVYEDEN 
        BASILAN TUŞ | GÖNDERİLEN 
        BİLGİ MESAJI  |   
    | DOWN | SB_LINEDOWN veya SB_LINERIGHT |   
    | END | SB_BOTTOM |   
    | HOME | SB_TOP |   
    | LEFT | SB_LINEUP 
      veya SB_LINELEFT |   
    | PGDN | SB_PAGEDOWN 
      veya SB_PAGERIGHT |   
    | PGUP | SB_PAGEUP 
      veya SB_PAGELEFT |   
    | RIGHT | SB_LINEDOWN 
      veya SB_LINERIGHT |   
    | UP | SB_LINEUP 
      veya SB_LINELEFT |  
 KULLANIM 
  ALANININ AKITILMASI
 
 Kullanım alanının 
  akıtılmasının en basit yolu, alanı önce silip ardından yeniden çizmektir. Bu 
  yöntemi uygulama içerisinde SB_PAGEUP, SB_PAGEDOWN ve SB_TOP bilgi mesajlarını 
  kullanmak yoluyle uygulayabiliriz. Bu bilgi mesajları yeni içeriğin tamamını 
  talep edecekleri için, silme ve yeniden çizme işlemi yapılmasına neden olurlar. 
  SB_LINEUP ve SB_LINEDOWN gibi bazı bilgi mesajlarında, tüm içeriğin silinmesine 
  gerek duyulmaz, çünkü akıtma gerçekleştikten sonra bazı alanların yine görünmesi 
  gerekli olabilir. ScrollWindowEx API fonksiyonu, kullanım alanının bir kısmının 
  içeriğini ayırır, ayırdığı bu kısmı belli bir miktar hareket ettirir; daha sonra 
  geri kalan kısım için yeniden boyanma ihtiyacı bilgisimi gönderir. ScrollWindowEx 
  APIsi nesnenin belli bir kısmının belli bir miktar hareket ettirilmesi için 
  BitBlt fonksiyonunu kullanır. Kullanım alanının geri kalan kısmı, WM_PAINT mesajının 
  işlenmesiyle yeniden çizilerek güncellenir.
 
 ScrollWindowEx 
  fonksiyonu, kullanım alanının bir kısmının akıtma işlemine dahil edilmemesi 
  amacıyla kullanılabilir. Bu sayede, alt pencereler gibi sabit pozisyonlu öğelerin 
  kullanım alanı içerisinde hareket ettirilmesine gerek kalmaz. Bu fonksiyon, 
  kullanım alanının mesajı alan bölgesinin yeniden ele alınmasını sağlar ve uygulamanın 
  çakışan bölgeleri tespit etmesine gerek kalmaz.
 
 Uygulamalarda pencere 
  içeriği genellikle akıtma çubuğunun işaret ettiği yöne ters yönde kaydırılır. 
  Yani, kullanıcı akıtma çubuğunda düğmenin alt kısmına tıkladığında, penceredeki 
  elemanlar yukarıya doğru hareket ettirilir ve alt kısımdaki elemanlar görünür 
  hale getirilir.
 
 AKITMA 
  ÇUBUĞUNA İLİŞKİN RENKLER VE ÖLÇÜLER
 
 COLOR_SCROLLBAR 
  isimli sistemde tanımlanmış renk değeri, akıtma çubuğunun renk bilgisi ile ilgili 
  işlemlerde kullanılır. GetSysColor isimli fonksiyon, çubuğun renginin öğrenilmesi 
  amacıyla kullanılır. SetSysColor isimli fonksiyon ise çubuğun rengini değiştirmek 
  amacıyla kullanılır. Bu fonksiyonlar, sistemdeki tüm akıtma çubuklarının renklerine 
  etki etmektedir.
 
 Windows sisteminin 
  standart akıtma çubuklarında kullandığı bitmap görüntülere ilişkin bout bilgileri 
  GetSystemMetrics fonksiyonu ile alınabilir. Aşağıda akıtma çubuğuna ilişkin 
  sistem ölçü değerleri listelenmiştir :
 
 
 
  AKITMA 
  ÇUBUĞUNA İLİŞKİN FONKSİYONLAR 
    | SİSTEM 
        ÖLÇÜ SABİTİ | ANLAMI |   
    | SM_CXHSCROLL | Yatay akıtma çubuğu üzerindeki ok bitmap görüntüsünün genişliği |   
    | SM_CXHTHUMB | Yatay 
      akıtma çubuğu üzerindeki akıtma düğmesinin genişliği |   
    | SM_CXVSCROLL | Dikey 
      akıtma çubuğu üzerindeki ok bitmap görüntüsünün genişliği |   
    | SM_CYHSCROLL | Yatay 
      akıtma çubuğu üzerindeki ok bitmap görüntüsünün yüksekliği |   
    | SM_CYVSCROLL | Dikey 
      akıtma çubuğu üzerindeki ok bitmap görüntüsünün yüksekliği |   
    | SM_CYVTHUMB | Dikey 
      akıtma çubuğu üzerindeki akıtma düğmesinin yüksekliği |  
 Aşağıda listelenen 
  fonksiyonlar, akıtma çubukları ile ilgili birtakım işlemler yapmaktadır :
 
 
 
  SCROLLINFO 
  YAPISI 
    | FONKSİYON 
        ADI  | GÖREVİ |   
    | EnableScrollBar | Akıtma çubuğunun her iki ucunda yer alan okların aktif/pasif yapılmasında 
      kullanılır. Fonksiyonun ilk parametre değişkeni bir pencereye ya da akıtma 
      çubuğuna ilişkin tutamaç değeridir. İkinci parametre değişkeni, akıtma çubuğunun 
      tipini belirler. Bu parametre değişkeni yerine kullanılabilecek sembolik 
      sabitler ve anlamları şöyledir : 
 - SB_BOTH : Bu sembolik sabit kullanılacaksa ilk parametre değişkeni olarak 
      bir pencereye ilişkin tutamaç değeri geçilmelidir. SB_BOTH, tutamaç değeri 
      verilen pencerenin hem yatay hem de düşey akıtma çubuklarının aktif/pasif 
      yapılmasını sağlar.
 - SB_CTL :Bu sembolik sabit kullanılacaksa ilk parametre değişkeni olarak 
      bir akıtma çubuğu kontrolüne ilişkin tutamaç değeri girilmelidir. SB_CTL 
      tutamaç değeri verilen akıtma çubuğunun aktif/pasif yapılmasında kullanılır.
 - SB_HORZ : Bu sembolik sabit kullanılacaksa ilk parametre değişkeni olarak 
      bir pencereye ilişkin tutamaç değeri geçilmelidir. SB_Horz, tutamaç değeri 
      verilen pencerenin yatay akıtma çubuğunun aktif/pasif yapılmasını sağlar.
 - SB_VERT : Bu sembolik sabit kullanılacaksa ilk parametre değişkeni olarak 
      bir pencereye ilişkin tutamaç değeri geçilmelidir. SB_Horz, tutamaç değeri 
      verilen pencerenin dikey akıtma çubuğunun aktif/pasif yapılmasını sağlar.
 
 Fonksiyonun son parametre değişkeni, akıtma çubuğunun hangi ucunda yer alan 
      okların aktif/pasif yapılacağını belirler. Bu parametre değişkeni yerine 
      kullanılabilecek sembolik sabitler veanlamları şöyledir :
 
 - ESB_DISABLE_BOTH : Her iki uçtaki ok da işlemden etkilensin.
 - ESB_DISABLE_DOWN : Dikey bir akıtma çubuğunun alt ucundaki ok işlemden 
      etkilensin.
 - ESB_DISABLE_LEFT : Yatay bir akıtma çubuğunun sol ucundaki ok işlemden 
      etkilensin.
 - ESB_DISABLE_LTUP : Yatay bir akıtma çubuğunun sol ucundaki ya da dikey 
      bir akıtma çubuğunun üst kısmındaki ok işlemden etkilensin.
 - ESB_DISABLE_RIGHT : Yatay bir akıtma çubuğunun sağ ucundaki ok işlemden 
      etkilensin.
 - ESB_DISABLE_RTDN : Dikey bir akıtma çubuğunun sağ ucundaki veya dikey 
      bir akıtma çubuğunun alt ucundaki ok işlemden etkilensin.
 - ESB_DISABLE_UP : Dikey bir akıtma çubuğunun üst ucundaki ok işlemden etkilensin.
 - ESB_ENABLE_BOTH : Akıtma çubuğunun her iki ucundaki ok işlemden etkilensin.
 
 Fonksiyon bir hata oluşması durumunda ya da kontrolün zaten yapılması istenen 
      halde olması durumunda sıfır, diğer durumlarda sıfır dışı bir değer döndürür.
 |   
    | GetScrollPos | Akıtma 
      çubuğunun düğmesinin o anki konum bilgilerini getirir. Konum değerleri, 
      akıtma oranına bağlı göreceli değerlerdir. Akıtma oranı 0-100 arasında olan 
      bir akıtma çubuğunun düğmesi tam ortada ise, konum bilgisi 50 olarak getirilecektir. 
      Fonksiyonun ilk parametre değişkeni konum bilgisi alınacak kontrolun tutamaç 
      değeridir. İkinci parametre değişkeni, akıtma çubuğunun tipini belirler. 
      Bu parametre değişkeni yerine geçilebilecek sembolik sabitler şunlardır 
      : 
 - SB_CTL : Akıtma çubuğunun, kontrol olduğu anlamına gelir. Bu değerin kullanılması 
      durumunda, ilk parametre değişkeni yerine bir akıtma çubuğu kontrolüne ilişkin 
      tutamaç değeri geçilmelidir.
 - SB_HORZ : Standart yatay akıtma çubuğunun düğmesinin konum bilgisinin 
      alınacağı anlamına gelir.
 - SB_VERT : Standart dikey akıtma çubuğunun düğmesinin konum bilgisinin 
      alınacağı anlamına gelir.
 
 Fonksiyon, başarılı olması durumunda konum bilgisi ile, diğer durumlarda 
      0 değeri ile geri döner.
 |   
    | GetScrollInfo | Bir 
      akıtma çubuğuna ilişkin tüm değerlerin alınmasını sağlar. Alınan değerler, 
      en küçük ve en büyük akıtma konumları, sayfa büyüklüğü, akıtma düğmesi konumudur. 
      İlk parametre değişkeni bilgisi alınacak akıtma çubuğunun tutamaç değeridir. 
      İkinci parametre değişkeni, SB_CTL, SB_HORZ, SB_VERT sembolik sabitleri 
      ile belirlenen akıtma çubuğu tipidir. Üçüncü parametre değişkeni alınacak 
      bilgilerin kaydedileceği SCROLLINFO türünden bir yapı nesnesinin adresidir. 
      Bu yapı nesnesinin fMask isimli veri elemanı, hangi bilgilerin alınacağını 
      belirlemek amacıyla kullanılır. fMask veri elemanının alabileceği değerler 
      şunlardır : 
 - SIF_PAGE : Akıtma çubuğunun akıtma sayfası bilgisi yapı nesnesinin nPage 
      isimli veri elemanına atansın.
 - SIF_POS : Akıtma çubuğunun akıtma konumu değeri yapı nesnesinin nPos isimli 
      veri elemanına atansın.
 - SIF_RANGE : Akıtma çubuğunun akıtma oranı bilgileri yapı nesnesinin nMin 
      ve nMax isimli veri elemanlarına atansın.
 
 Fonksiyon başarılı olması durumunda sıfır dışı bir değere, başarısız olması 
      durumunda 0 değerine geri döner.
 |   
    | GetScrollRange | Akıtma 
      çubuğunun sahip olduğu en küçük ve en büyük akıtma konumları değerlerinin 
      alınmasını sağlar. İlk parametre değişkeni olarak bilgisi alınacak akıtma 
      çubuğunun tutamaç değeri geçilir. İkinci parametre değişkeni, SB_CTL, SB_HORZ, 
      SB_VERT sembolik sabitleri ile belirlenen akıtma çubuğu tipidir. Fonksiyon 
      başarılı olması durumunda sıfır dışı bir değere, başarısız olması durumunda 
      0 değerine geri döner. |   
    | ScrollDC | Yatay 
      ve dikey olarak belli bir miktarda (bir dikdörtgen oluşturan bit grubu) 
      akıtma yapılmasını sağlar. İlk parametre değişkeni olarak akıtılacak bitleri 
      içeren Device Context (DC)e ilişkin tutamaç değeri verilir. İkinci parametre 
      değişkeni, yapılacak yatay akıtmanın miktarıdır. Sola doğru akıtma yapılacaksa 
      bu değer negatif bir sayı olmalıdır. Üçüncü parametre değişkeni, yapılacak 
      dikey kaydırmanın miktarıdır. Dördüncü parametre değişkeni, akıtma dikdörtgeninin 
      koordinatlarını belirten RECT türünden bir yapı nesnesidir. Beşinci parametre 
      değişkeni, kırpma (clipping) dikdörtgeninin koordinatlarını içeren RECT 
      türünden bir yapı nesnesidir. Yapılacak olan işlemden sadece kırpma dikdörtgeni 
      içerisinde kalacak olan kısım etkilenir. Kırpma dikdörtgeninin içerisine 
      gelen bitler yeniden çizilir, kırpma dikdörtgeni dışına çıkan bitler ise 
      çizilmez. Altıncı parametre değişkeni, akıtma işleminin oluşturduğu bölgeyi 
      belirler. Bu bölge ScrollDC tarafından belirlenir. Yedinci parametre değişkeni, 
      güncellenecek akıtma bölgesini sarmalayan dikdörtgenin koordinatlarını içeren 
      RECT türünden bir yapı nesnesidir. Bu değer, yeniden çizilmesi gereken en 
      büyük alan miktarını belirler. Fonksiyon başarılı olması durumunda sıfır 
      dışı bir değere, başarısız olması durumunda 0 değerine geri döner. |  
    | ScrollWindow | Pencere 
      kullanım alanının içeriğinin akıtılmasını sağlar. İlk parametre değişkeni 
      akıtma işleminin uygulanacağı pencerenin tutamaç değeridir. İkinci parametre 
      değişkeni, yatay akıtma miktarını belirtir. Üçüncü parametre değişkeni dikey 
      akıtma miktarını belirtir. Dördüncü parametre değişkeni, akıtma dikdörtgeninin 
      koordinatlarını içeren RECT türünden bir yapı nesnesidir. Beşinci parametre 
      değişkeni, kırpma dikdörtgeninin koordinatlarını içeren RECT türünden bir 
      yapı nesnesidir. Fonksiyon başarılı olması durumunda sıfır dışı bir değere, 
      başarısız olması durumunda 0 değerine geri döner. Bu fonksiyon geçmişe uyumluluk 
      açısından bulunmaktadır. Yeni uygulamalar için ScrollWindowEx fonksiyonu 
      kullanılmaktadır. |   
    | ScrollWindowEx | Pencere 
      kullanım alanının içeriğinin akıtılmasını sağlar. ScrollWindow fonksiyonuna 
      benzer iş yapar, ancak ilave birtakım özelliklere sahiptir. İlk parametre 
      değişkeni akıtma işleminin uygulanacağı pencerenin tutamaç değeridir. İkinci 
      parametre değişkeni, yatay akıtma miktarını belirtir. Üçüncü parametre değişkeni 
      dikey akıtma miktarını belirtir. Dördüncü parametre değişkeni, akıtma dikdörtgeninin 
      koordinatlarını içeren RECT türünden bir yapı nesnesidir. Beşinci parametre 
      değişkeni, kırpma dikdörtgeninin koordinatlarını içeren RECT türünden bir 
      yapı nesnesidir. Altıncı parametre değişkeni, güncelleme bölgesini belirten 
      tutamaç değeridir. Yedinci parametre değişkeni güncelleme dikdörtgeninin 
      koordinatlarını içeren RECT türünden bir yapı nesnesidir. Sekizinci parametre 
      değişkeni yapılacak işlemi belirten bir bayrak değişkendir. Bu parametre 
      değişkeni yerine geçilebilecek sembolik sabitler şunlardır : 
 - SW_ERASE : WM_ERASEBKGND mesajı göndererek ilgili bölgenin silinmesini 
      sağlar.
 - SW_INVALIDATE : Güncelleme bölgesi olarak belirtilen alanın akıtma işleminden 
      sonra geçersiz kılınmasını sağlar.
 - SW_SCROLLCHILDREN : Akıtma dikdörtgeni ile kesişen tüm alt pencerelerde 
      akıtma yapılmasını sağlar. Tüm alt pencerelere WM_MOVE mesajı gönderilir.
 
 Fonksiyon başarılı olması durumunda sıfır dışı bir değere, başarısız olması 
      durumunda 0 değerine geri döner.
 |   
    | SetScrollInfo | Bir 
      akıtma çubuğuna ilişkin değerlerin ayarlanmasını sağlar. Atanan değerler, 
      en küçük ve en büyük akıtma konumları, sayfa büyüklüğü, akıtma düğmesi konumudur. 
      Akıtma çubuğu verilen değerlere göre (gerekli ise) yeniden çizilir. İlk 
      parametre değişkeni bilgisi alınacak akıtma çubuğunun tutamaç değeridir. 
      İkinci parametre değişkeni, SB_CTL, SB_HORZ, SB_VERT sembolik sabitleri 
      ile belirlenen akıtma çubuğu tipidir. Üçüncü parametre değişkeni alınacak 
      bilgilerin kaydedileceği SCROLLINFO türünden bir yapı nesnesinin adresidir. 
      Bu yapı nesnesinin fMask isimli veri elemanı, hangi bilgilerin atanacağını 
      belirlemek amacıyla kullanılır. fMask veri elemanının alabileceği değerler 
      şunlardır : 
 - SIF_DISABLENOSCROLL : Verilen yeni değerler geçersiz değerler ise, kontrolü 
      pasif hale getir.
 - SIF_PAGE : nPage isimli veri elemanındaki akıtma sayfası bilgisi kontrole 
      atansın.
 - SIF_POS : nPos isimli veri elemanındaki akıtma konumu değeri kontrole 
      atansın.
 - SIF_RANGE : nMin ve nMax isimli veri elemanlarındaki akıtma oranı bilgileri 
      kontrole atansın.
 
 Son parametre değişkeni verilen yeni değerlere göre kontrolün yeniden çizilip 
      çizilmeyeceğini belirtir. Fonksiyon akıtma çubuğunun akıtma düğmesinin o 
      anki konum bilgisi ile geri döner.
 |   
    | SetScrollPos | Akıtma 
      çubuğunun akıtma düğmesinin konumunu ayarlamak için kullanılır. Akıtma çubuğu 
      verilen değerlere göre (gerekli ise) yeniden çizilir. Bu fonksiyon geçmişe 
      uyumluluk sağlanması açısından bulunmaktadır. Win32 temelli uygulamalarda 
      bu işlemin gerçekleştirilmesi için SetScrollInfo fonksiyonu kullanılmalıdır. |   
    | SetScrollRange | Akıtma 
      çubuğunun en küçük ve en büyük akıtma miktarlarının ayarlanması için kullanılır. 
      Ayrıca standart bir akıtma çubuğunun gizlenmesi / gösterilmesi için de kullanılabilir. 
      Bu fonksiyon geçmişe uyumluluk sağlanması açısından bulunmaktadır. Win32 
      temelli uygulamalarda bu işlemin gerçekleştirilmesi için SetScrollInfo fonksiyonu 
      kullanılmalıdır. |   
    | ShowScrollBar | Akıtma 
      çubuğunun gösterilmesi / gizlenmesi için kullanılır. İlk parametre değişkeni 
      akıtma çubuğuna ilişkin tutamaç değeridir. İkinci parametre değişkeni, akıtma 
      çubuğunun tipini belirler. Bu parametre değişkeni yerine geçilebilecek sembolik 
      sabitler şunlardır : 
 - SB_BOTH : Bir pencereye ilişkin standart yatay ve dikey akıtma çubuklarına 
      uygulansın.
 - SB_CTL : Akıtma çubuğunun, kontrol olduğu anlamına gelir. Bu değerin kullanılması 
      durumunda, ilk parametre değişkeni yerine bir akıtma çubuğu kontrolüne ilişkin 
      tutamaç değeri geçilmelidir.
 - SB_HORZ : Standart yatay akıtma çubuğuna uygulansın.
 - SB_VERT : Standart dikey akıtma çubuğunun düğmesinin konum bilgisinin 
      alınacağı anlamına gelir.
 
 Üçüncü parametre değişkeni, akıtma çubuğunun gösterilmesini ya da gizlenmesini 
      belirten bir değerdir. Fonksiyon, başarılı olması durumunda konum bilgisi 
      ile, diğer durumlarda 0 değeri ile geri döner.
 |  
 Akıma çubuğu ile 
  ilgili yapılan işlemlerde SCROLLINFO isminde bir yapı kullanılır. Akıtma çubuğu 
  ile ilgili işlem yapan API fonksiyonları, parametre değişkeni olarak bizden 
  bu yapı nesnesi türünden bir nesnenin adresini isterler. Bu yapı içerisinde, 
  akıtma çubuğunun özelliklerine karşılık gelen veri elemanları bulunmaktadır. 
  Şimdi bu yapıyı ve veri elemanlarını inceleyelim :
 
 
 
  Yapının veri elemanlarını 
  sırasıyla ele alalım : 
    | typedef struct 
        tagSCROLLINFO {        UINT cbSize;
        UINT fMask;
        int nMin;
        int nMax;
        UINT nPage;
        int nPos;
        int nTrackPos;
 } SCROLLINFO;
 typedef SCROLLINFO FAR *LPSCROLLINFO;
 
 
 |  
 - cbSize: Yapının büyüklüğünün byte cinsinden değeridir.
 - fMask : Alınacak ya da ayarlanacak özellikleri belirler. Bu değer aşağıdaki 
  sembolik sabitlerden birisi ya da bu sabitlerin mantıksal olarak birleştirilmesi 
  ile elde edilmiş bir değer olabilir :
 
 
 
 
  - nMin : En küçük 
  akıtma konumunu belirler. 
    | SIF_ALL | SIF_PAGE, SIF_POS, SIF_RANGE değerlerinin birleşimini ifade eder. |   
    | SIF_DISABLENOSCROLL | Bu 
      sembolik sabit, sadece özelliklerin atanacağı durumlarda kullanılabilir. 
      Verilen özelliklerin geçersiz değerler olması durumunda akıtma çubuğunun 
      pasif hale getirilmesini sağlar. |   
    | SIF_PAGE | nPage 
      isimli veri elemanının sayfa büyüklüğü bilgisini içereceğini belirtir. |   
    | SIF_POS | nPos 
      isimli veri elemanının akıtma kutusunun konum bilgisini içereceğini belirtir. |   
    | SIF_RANGE | nMin 
      ve nMax isimli veri elemanlarının en küçük ve en büyük akıtma oranı değerlerini 
      içereceğini belirtir. |  - nMax : En büyük akıtma konumunu belirler.
 - nPage : Sayfa büyüklüğünü belirler.
 - nTrackPos : Akıtma düğmesinin kullanıcının sürüklediği konum değerini belirler. 
  Bu değer SB_THUMBTRACK mesajının işlenmesi sırasında alınabilir.
 
 
 AKITMA 
  ÇUBUĞU MESAJLARI
 
 
 
  Bir yazımızın daha 
  sonuna geldik. Önümüzdeki yazılarda yapacağımız uygulamalarda akıtma çubuklarını 
  kullanarak, bu yazıda gördüğümüz teorik bilgileri uygulamaya çalışacağız. Tüm 
  okuyucularıma iyi günler dilerim. 
    | MESAJ | ANLAMI |   
    | SBM_ENABLE_ARROWS | Akıtma çubuğunun her iki ucundaki okların aktif / pasif yapılması için gönderilir. 
      Mesajın wParam parametresi yapılacak işlemi ve uygulanacak oku belirler. 
      lParam parametrei kullanılmaz, sıfır geçilmelidir. wParam parametresi yerine 
      geçilecebilecek sembolik sabitler şunlardır : 
 - ESB_DISABLE_BOTH : Akıtma kutusunun her iki okunun da pasif hale getirilmesini 
      sağlar.
 - ESB_DISABLE_DOWN : Dikey bir akıtma kutusunun alt okunun pasif hale getirilmesini 
      sağlar.
 - ESB_DISABLE_LTUP : Yatay bir akıtma kutusunun sol okunun ya da dikey bir 
      akıtma kutusunun üst okunun pasif hale getirilmesini sağlar.
 - ESB_DISABLE_LEFT : Yatay bir akıtma kutusunun sol okunun pasif hale getirilmesini 
      sağlar.
 - ESB_DISABLE_RTDN : Yatay bir akıtma kutusunun sağ okunun ya da dikey bir 
      akıtma kutusunun alt okunun pasif hale getirilmesini sağlar.
 - ESB_ENABLE_BOTH : Akıtma kutusunun her iki okunun da aktif hale getirilmesini 
      sağlar.
 
 Mesajın işlenmesi sonucunda, işlem başarılı olmuşsa TRUE, diğer durumlarda 
      FALSE değeri döndürülür.
 |   
    | SBM_GETPOS | Bir 
      akıtma çubuğunun akıtma düğmesinin o anki konumunu öğrenebilmek için gönderilir. 
      Konum bilgisi, akıtma kutusunun sahip olduğu akıtma oranlarına bağlı olan 
      göreceli bir değerdir. wParam ve lParam parametreleri kullanılmaz, sıfır 
      geçilmelidir. İşlem başarılı olursa akıtma çubuğunun akıtma düğmesinin o 
      anki konum bilgisi döndürülür. |   
    | SBM_GETRANGE | Bir 
      akıtma çubuğu kontrolünün en küçük ve en büyük konum değerlerinin öğrenilmesi 
      amacıyla gönderilir. wParam parametresi en küçük konum bilgisinin yazılacağı 
      nesnenin adresini, lParam parametresi en büyük konum değerinin yazılacağı 
      nesnenin adresini belirtir. Geri dönüş değeri yoktur. |   
    | SBM_GETSCROLLINFO | Bir 
      akıtma çubuğunun özelliklerinin öğrenilmesi amacıyla gönderilir. wParam 
      parametresi kullanılmaz, sıfır geçilmelidir. lParam parametresi özelliklerin 
      yazılacağı SCROLLINFO türünden bir yapı nesnesinin adresidir. Başarılı olması 
      durumunda TRUE, diğer durumlarda FALSE değeri geri döndürülür. |   
    | SBM_SETPOS | Akıtma 
      çubuğu kontrolünün akıtma düğmesinin konumunun verilmesi için gönderilir. 
      wParam parametresi düğmenin yeni konumunu belirtir. lParam parametresi kontrolün 
      işlemden sonra yeniden çizilip çizilmeyeceğini belirten bir bayrak değişkendir. 
      Başarılı olması durumunda, akıtma düğmesinin bir önceki konum bilgisi, diğer 
      durumlarda sıfır değeri geri döndürülür. |   
    | SBM_SETRANGE | Akıtma 
      çubuğu kontrolünün en küçük ve en büyük konum değerlerinin verilmesi için 
      gönderilir. wParam parametresi en küçük akıtma konumunu, lParam parametresi 
      en büyük akıtma konumunu belirtir. Akıtma düğmesinin konumu değişmişse bir 
      önceki konum bilgisi, diğer durumlarda 0 değeri geri döndürülür. |   
    | SBM_SETRANGEREDRAW | Akıtma 
      çubuğu kontrolünün en küçük ve en büyük konum değerlerinin verilmesi ve 
      ardından yeniden çizilmesi için gönderilir. wParam parametresi en küçük 
      akıtma konumunu, lParam parametresi en büyük akıtma konumunu belirtir. Akıtma 
      düğmesinin konumu değişmişse bir önceki konum bilgisi, diğer durumlarda 
      0 değeri geri döndürülür. |  
    | SBM_SETSCROLLINFO | Akıtma 
      çubuğu kontrolünün özelliklerinin ayarlanması için gönderilir. wParam parametresi 
      kontrolün yeniden çizilip çizilmeyeceğini belirten bayrak değişkendir. lParam 
      parametresi kontrolün özelliklerinin atanacağı SCROLLINFO yapı nesnesinin 
      adresidir. Akıtma düğmesinin o anki konum bilgisi geri döndürülür. |   
    | WM_CTLCOLORSCROLLBAR | Bir 
      akıtma kutusu kontrolünün ana penceresine, kontrol çizileceği zaman gönderilir. 
      Ana pencere, bu mesajı yanıtlayarak kontrolün arkaplan rengini atayabilir. 
      wParam parametresi akıtma çubuğunun görünüm bağlamına (display context, 
      DC) ilişkin tutamaç değeri, lParam parametresi ise çubuğun tutamaç değeridir. 
      Uygulama içerisinde bu mesaj işlenmişse, bir fırça değerinin tutamaç değerine 
      geri dönülür. Windows bu fırça değerini kullanarak kontrolün arkaplan rengini 
      verir. |   
    | WM_HSCROLL | Bir 
      pencereye ilişkin standart yatay akıtma çubuğunda akıtma olayı gerçekleştiği 
      zaman pencereye gönderilir. Yatay bir akıtma çubuğu kontrolü için de kontrolün 
      ana penceresine gönderilir. wParam parametresinin düşük anlamlı dört biti 
      akıtma çubuğunun değerini, yüksek anlamlı dört biti akıtma düğmesinin konumunu 
      belirtir. lParam parametresi akıtma çubuğunun tutamaç değerini belirtir. 
      Uygulama içerisinde bu mesaj işlenmişse, sıfır değeri ile geri dönülür. |   
    | WM_VSCROLL | Bir 
      pencereye ilişkin standart dikey akıtma çubuğunda akıtma olayı gerçekleştiği 
      zaman pencereye gönderilir. Dikey bir akıtma çubuğu kontrolü için de kontrolün 
      ana penceresine gönderilir. wParam parametresinin düşük anlamlı dört biti 
      akıtma çubuğunun değerini, yüksek anlamlı dört biti akıtma düğmesinin konumunu 
      belirtir. lParam parametresi akıtma çubuğunun tutamaç değerini belirtir. 
      Uygulama içerisinde bu mesaj işlenmişse, sıfır değeri ile geri dönülür. |  
 KAYNAKLAR
 
 
 
     Win32 Programlama 
      Yardım Sayfaları 
                Makale:Windows API - Akıtma Çubuğu Kontrolü C ve Sistem Programlama Çiğdem Çavdaroğlu
 |  
            |  |  
            |  |  
            | 
                    
                        
                            
                        
                            Eklenen Son 10 
                            Bu Konuda Geçmiş 10 
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                            Son Eklenen 10 Makale Yükleniyor
                         
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         |  
            |  |  |