Bydigi Forum
Geri Git   Bydigi Forum > Webmaster Bölümü ve Programlama Dilleri > Programlama Dilleri > C / C++ / C#

Kayıt Ol SSS



 

 

LinkBack Konu Araçları
Eski 15-12-2006, 11:16 AM   #1 (permalink)
 
Giriş Tarihi: Jul 2006
Konum: Amed
Mesaj: 2,990
Üye No: 16335
Cinsiyeti : Bay
İtibar Gücü: 39085
Rep Puanı : 3908079
Rep Derecesi
bereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond repute
Varsayılan İletişim Kutuları ve Temel kontröller C++


C++
İLETİŞİM KUTULARI ve TEMEL KONTROLLER


4.1. İletişim Kutularını Kullanmak

Bu bölümde Windows programları oluştururken kullanılan temel bir kavramı öğre­neceksiniz ve şu konular ele alınmaktadır:

· Windows uygulamalarınızda iletişim kutuları kullanmak

· İletişim kutusu tabanlı projeler yaratmak

· İletişim kutularına kontroller eklemek

· Classwizard’ı kullanarak yeni sınıflar yaratmak

Ayrıca bu bölümde iletişim kutularını uygulamalarınızda nasıl kullanabileceğinizi gösteren iki örnek proje oluşturacaksınız.

4.1.1 İletişim kutusu Nedir?

İletişim kutusu, kullanıcıya geri besleme sağlamak veya kullanıcıdan giriş almak için kullanılan özelleştirilmiş bir penceredir. İletişim kutuları tek satır­lık mesajlar veren basit mesaj kutularından karmaşık kontroller içeren iletişim kutularına kadar değişik biçim ve büyüklükte olabilirler.

Ayrıca iletişim kutuları, bir program başlatılırken telif (copyright) ve başlangıç bil­gilerini görüntülemek amacıyla kullanıcı ile tek taraflı iletişim için de kullanılır. Developer Studio ve Microsoft Word programlarının açılış ekranları tek taraflı i­letişim için kullanılan iletişim kutularına iki örnektir. İletişim kutuları bazen kulla­nıcıya uzun süren bir işlemin ilerleyişi hakkında bilgi vermek için de kullanılır.

İletişim kutuları kullanıcıların Windows programlarıyla etkileşimi için uy­gun bir yol sunar. Kullanıcılar bir Windows programıyla etkileşimlerin ço­ğunun iletişim kutuları aracılığıyla gerçekleşmesini beklerler. Bütün iletişim kutuları ortak bazı özelliklere sahiptir; bu ortak özellikler kullanıcının ya­şamını kolaylaştırır çünkü kullanıcılar iletişim kutularının her farklı prog­ramda nasıl çalıştığını tekrar tekrar öğrenmek zorunda kalmazlar.

Çeşitli farklı tipte iletişim kutuları vardır ve her biri özel bir amaca sahiptir. Bu bölümde iki ana iletişim kutusu tipi ele alınmaktadır:

· Modal (kipli) iletişim kutuları

· Modeless (kipsiz) iletişim kutuları



Modal ve Modeless İletişim Kutuları

En yaygın kullanılan iletişim kutusu tipi modal iletişim kutusudur. Modal iletişim kutusu açıkken kullanıcı programda herhangi başka bir işlem ya­pamaz, önce bu iletişim kutusuyla işini bitirmelidir.

Modeless iletişim kutusuaçıkken programda başka işlemler yapılabilir. Modeless iletişim kutusuna bir örnek Developer Studio’nun kullandığı Find and Replace iletişim kutusudur. İletişim kutusu açıkken ana menüden seçim yapabilir ve hatta başka iletişim kutuları açabilirsiniz. Bunların dışındaki diğer tüm Developer Studio iletişim kutuları modaldır. Bunlar açık olduğu sürece kullanıcı Developer Studio’nun diğer kısımlarıyla etkileşimde bulunamaz.
Giriş İçin İletişim Kutularını Kullanmak


Çoğu insan iletişim kutularını düşündüklerinde kullanıcıdan bilgi girişi alan ileti­şim kutularını düşünürler. İletişim kutuları çoğunlukla kullanıcı girişleri ile ilgili kontroller içerirler. Bir iletişim kutusuna çeşitli kontroller ekleyebilirsiniz. Aslında, bu kitabın büyük bir bölümü Windows’da mevcut olan çeşitli tipteki kontrolleri ele almaktadır.

Bazı iletişim kutularının kullanılması Windows programlarında o kadar sık gerekli olur ki bunlar işletim sisteminin bir parçası olarak içerilmektedir. Genel iletişim kutuları (common dialog boxes) olarak bilinen bu iletişim kutuları bir fonksiyon çağırma yoluyla kullanılabilirler ve sizin bir iletişim kutusu kaynağı oluşturmanızı ge­rektirmezler.

Dosya açma, seçme, yazıtipi ve renk seçme ve kelime bulup değiş­tirme işlemleri için genel iletişim kutuları vardır. Genel iletişim kutularının çoğu bu kitabın ilerleyen kısımlarında ele alınmaktadır. Örneğin “Yazıtipleri”başlıklı bölümde bir yazıtipi seçmek için genel bir iletişim kutusu kullanacaksınız.

4.1.2. Visual C++’da İletişim Kutuları Oluşturmak

Developer Studio bir Windows programında iletişim kutuları kullanmayı çok ko­laylaştırır. Gerekli tüm adımlar otomatikleştirilir ve iletişim kutusunu yarat­mak ve projeye dahil etmek için gerekli araçlar tümleştirilmiştir.

Mesaj Kutuları Eklemek

En basit iletişim kutusu tipi bilgi görüntülemek için kullanılan mesaj kutusudur. Bu iletişim kutusu tipi o kadar basittir ki MFC sınıf kütüphanesini kullanarak tek satırlık bir kodla iletişim kutusunu yaratabilirsiniz. Örneğin, parametrelerin MFC’nin sağladığı öndeğerleriyle bir mesaj kutusu göstermek için şu satırı kul­lanmanız yeterlidir:

AfxMessageBox( “HeIIo World!”);

Bu kod satırı sarı bir üçgen içinde ünlem işareti olan bir mesaj kutusu oluşturur. En az tek bir parametre kullanmanız gerekir: bu, iletişim kutusu içinde görüntülenen mesajdır. Seçime bağlı olarak bir ikon stili ve düğme düzeni de seçebilirsiniz. Me­saj kutuları için kullanılabilecek ikon tipleri Şekil 4.l’de gösterilmektedir.
i

!


Uyarı Bilgi

X

?


Soru Hata


Şekil 4.1 Mesaj Kutusu İkonları

Şekil 4.l’deki her ikonun özel bir anlamı vardır. Çoğu Windows programı bir me­saj kutusu gösterdiğinde her mesaj için standart bir ikon kullanır. Programlar tu­tarlı biçimde aynı ikonu kullandıklarında kullanıcıların mesaj kutusunda verilen bilginin anlamını anlaması daha kolaylaşır. Her ikonun anlamı ve stil adı Tablo 4.l’de verilmektedir.
Tablo 4.1. Windows Mesaj Kutusu Tip İletişim Kutularında Kullanılan

İkonlar

Kullanılan İkon Anlamı Mesaj Kutusu Biçimi

Ünlem “!”işareti Warning (Uyarı) MB_ICONEXCLAMATION
Daire içindeki”i” işareti Information (Bilgi) MB_ICONINFORMAT!ON
Soru ‘?” işareti Question (Soru) MB_ICONQUESTION
Daire içindeki “x” işareti Error (Hata) MB_ICONSTOP


Ayrıca mesaj kutusunda kullanılabilecek bir düğme düzenlemesi de belirleyebilir­siniz. Öndeğer olarak mesaj kutusunda OK etiketli tek bir düğme vardır. Ancak bazen kullanıcıya basit bir soru sorup cevabını almak gerekebilir. Bu düğme dü­zenlemelerinin bir kullanımı, bir hata sırasında kullanıcıya ne yapılması gerektiğini sormaktır. Aşağıdaki kod sor kullanıcıya mevcut dosyanın silinmesinin istenip istenmediğini soran bir mesaj kutusu görüntüler:

int nchoice = AfxMessageBox( “Overwrite existing file?”,
MB_YESNOCANCEL 1 MB_ICONQUESTION );
if( nChoice == IDYES )
// Overwrite file

fxMessageBox fonksiyonunun iki farklı seçeneğini ayırmak için kullanı­lan dikey çubuk, iki veya daha fazla değerin bir düzenlerini birleştirmek için kullanılan OR bit operatörüdür.

Yukarıda verilen kod bir programda kullanıldığında kullanıcı Yes, No ve Cancel düğmelerinden birini seçebilir. Tablo 4.2 bir mesaj kutusunda kullanılabilecek düğme düzenlerini göstermektedir.
Tablo 4.2. Düğme Düzenler


Mesaj Kutusu Biçemi İletişim Kutusunda Kullanılan Düğmeler

MB_ABORTRETRYJGNORE Abort, Retry ve Ignore
MB_OK OK
MB_OKCANCEL OK ve Cancel

MB_RETRYCANCEL Retry ve Cancel
MB_YESNO Yes ve No
MB_YESNOCANCEL Yes, No ve Cancel

Mesaj kutusunun döndürdüğü değer kullanıcının hangi düğmeye tıkladığını gösterir. Tablo 4.3 döndürülebilecek değerleri ve kullanıcının yaptığı seçimi listelemektedir.
Tablo 4.3. Mesaj Kutularının Döndürdükleri Değerler


Döndürülen Değer Basılan Düğme

IDABORT Abort
IDCANCEL Cancel
IDIGNORE Ignore
IDNO No
IDOK OK
IDRETRY Retry
IDYES Yes


fxMessageBox fonksiyonu ile OR bit operatörü kullanıldığında, bir ikon stili ile bir düğme stilini birleştirebilirsiniz. İki ikon stilini veya iki düğme stilini birleştiremezsiniz. Eğer bir stil belirtilmezse mesaj kutusu ünlem işa­retli ikonu ve OK düğmesini içerecektir.

Bir İletişim Kutusu Eklemek

Bir programa bir iletişim kutusu eklemek için genelde dört adım gereklidir:

1. Developer Studio kaynak araçlarını kullanarak bir iletişim kutusu kaynağı tasarlayın ve yaratın.

2. CDialog sınıfından türetilmiş ve iletişim kutusunu yönetecek bir C++ sımfı yaratmak icin GlassWizard’ı kullanın.

3. Gerekirse iletişim kutusuna gönderilecek mesajlar üzerinde işlem yapmak için fonksiyonlar ekleyin.

4. İletişim kutusu ana menüden seçilirse menü kaynağı üzerinde değişiklik yapılmalı ve ClassWizard kullanılarak mesaj fonksiyonları yaratılmalıdır.

Şekil 4.2. Developer Studio iletişim kutusu editörü

Kaynakları Anlama



İletişim kutuları özelleştirilmiş pencere tipleridir. Ancak, yaygın olarak kısa süreli­ğine kullanıldıklarından genellikle program kaynağı olarak saklanır ve yalnızca ge­rektiğinde yüklenirler. Bunu, az miktarda serbest belleği olan bir makinede bir Win­dows programı çalıştırdığınızda görebilirsiniz. Her iletişim kutusu açıldığında E­XE dosyadan iletişim kutusu kaynaklarını yüklemek için sabit diske erişim yapılır.
Şekil 4.3. Adding a Class iletişim kutusu ile bir Visual C++ projesine yeni bir sınıf eklemek


4.2 Düğme Kontrolleri

Düğme kontrolleri Windows’daki en esnek kontrollerdendir. Düğmeler hakkında bilgi edinmeden önce C++’da koşullu ifadeler hakkında kısa bir bilgi edinmek daha yararlı olur. Bu bölümde öğreneceğiniz konular şunlar:

· Windows’un sunduğu farklı düğme tiplerini kullanmak

· Düğme kontrollerini yönetmek için kullanılan MFC Csuttun sınıfını kullanmak

· Kontrolleri çalışır duruma getirmek ve çalışmalarını engellemek için MFC CWnd sınıfını kullanmak

Daha sonra bu bölümde her düğme tipini iletişim kutusu tabanlı bir projeye ekleye­ceksiniz. Ayrıca iletişim kutusunun düğme kontrolleri için düğme olayları ve üye değişkenler eklemek için Classwizard’ı kullanacaksınız.


bereday21 is online now  
Eski 15-12-2006, 11:18 AM   #2 (permalink)
 
Giriş Tarihi: Jul 2006
Konum: Amed
Mesaj: 2,990
Üye No: 16335
Cinsiyeti : Bay
İtibar Gücü: 39085
Rep Puanı : 3908079
Rep Derecesi
bereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond repute
Varsayılan


Düğme Nedir?

Düğme genellikle bir iletişim kutusunda, araç çubuğunda veya kontroller içeren diğer pencerelerde bulunan, yazı veya bitmap bir etiket içeren özel bir pencere ti­pidir. Windows’da beş tip düğme vardır:

· Basılır düğmeler(pushbutton) üç boyutlu bir görünüme sahiptir ve fare ile tıklanıldığında içeri gömülür gibi görünürler. Normalde basılır düğmelerin üzerinde bir yazı vardır.

· Radyo düğmeleri (radio button) yuvarlak bir düğme ile bitişiğinde bir eti­ketten oluşur.

· Onay kutuları (check box) seçildiğinde onay işareti içeren kare bir kutu ile onun bitişiğinde bir etiketten oluşur.

· Sahibi tarafından çizilen diiğmeler (osvner-drawn button) Windows’un de­ğil, düğmenin sahibinin çizdiği düğmelerdir.

· Grup kutuları (group box) ortak bir amacı olan kontrolleri çevrelemek için kullanılan dikdörtgenlerdir.

Genelde düğmeler kullanıcının seçimini belirtmesi için kullanılır. Düğmeler Win­dows programlarında kullanılırlar çünkü kullanıcıların düğmeleri kullanması çok kolaydır. Kullanıcılar birçok durumda, özellikle de programda iletişim kutuları bulunduğunda düğme kullanmayı beklerler.

Basılır Düğme Nedir?

Hemen hemen bütün iletişim kutuları kullanıcının gerçekleştirebileceği bir işlemi belirtmek için en az bir basılır düğme (pushbutton) içerir. Bunlar yaygın olarak bir iletişim kutusunu kapatmak, bir arama işlemini başlatmak veya yardım istemek i­çin kullanılırlar.

Radyo Düğmesi Nedir?

Birden fazla seçenek arasından sadece birinin seçilmesi gerektiği durumlarda (ör­neğin kullanıcı cinsiyet seçimi yapacağında) radyo düğmeleri (radio button) kulla­nılır. Çoğunlukla bir arada gruplanmış olan radyo düğmelerinden belli bir anda yalnızca birisi seçilebilir.



Onay Kutusu Nedir?

Onay kutuları (check box) belli bir koşulun True (doğru) ya da False (yanlış) oldu­ğunu belirtmek için Boolean göstergeleri olarak kullanılır. Radyo düğmelerinden farklı olarak, bir gruptaki çok sayıda onay kutusu seçilebilir. Seçime bağlı olarak onay kutuları üçüncü bir durumu da desteklerler. Bu, kontrolün ne True ne de False olduğunu gösteren, onay kutusunun kullanılamaz olduğu durumdur.

Sahibi Tarafından Çizilen Düğme Nedir?

Bunlar düğmenin sahibi tarafından çizilen düğmelerdir. Düğmenin sahibi bir gö­rünüm ya da iletişim kutusu olabilir. Bunlar Windows tarafından çizilen birçok kont­rolden farklıdır. Sahibi tarafından çizilen düğme (owner-drawn button) çoğunluk­la bitmap, şekil veya diğer görsel efektler içerir ve bazen ilave bir işlevsellik sunar.

Grup Kutusu Nedir?

Bir grup kutusu (group box) benzer amaçlar için kullanılan kontrolleri mantıksal olarak gruplar. Bu sayede kullanıcı kontroller arasındaki ilişkiyi kolaylıkla adaya-bilir ve iletişim kutusunun kullanımı kolaylaşır. Radyo düğmeleri hemen her za­man bir grup kutusu içinde yer alır, böylece hangi kontrollerin birbirleriyle ilişkili olduğu anlaşılır.

Düğmeler için MFC Desteği

Düğme kontrolleri normalde bir iletişim kutusunun parçası olarak oluşturulur. Bir i­letişim kutusuna bir düğme ekledikten sonra, düğmeye basıldığında veya düğme seçildiğinde yaratılan olaylar karşısında ne yapılacağını belirleyen fonksiyonları eklemek için ClassWizard’ı kullanabilirsiniz. Ayrıca düğme kontrolleriyle ilişkili CButton nesnelerini yaratmak için de ClassWizard’ı kullanabilirsiniz.

Hem bir iletişim kutusu kaynağına eklenen düğmelerle, hem de dinamik olarak yaradan düğmelerle etkileşim için MFC CButton sınıfını kullanabilirsiniz. Bir düğme kontrolünü belli bir CButton nesnesiyle ilişkilendirmek için ClassWizard’ı kullanın.

Düğmeler Kullanan Bir Proje Örneği

Düğmelerin iletişim kutularıyla nasıl kullanıldığını görmek için, “İletişim Kutularını Kullanmak” adlı bölümde anlatılan adımları izleyerek AppWizard ile Button adın­da iletişim kutusu tabanlı bir proje yaratın. Bir iletişim kutusunda düğmeleri nasıl kullanacağınızı gösteren bir örnek olarak bu saatin geri kalan kısmında bu projeyi kullanacaksınız.
İletişim kutusu tabanlı bir proje yaratıldığında, ana iletişim kutusu Developer Studio’da görüntülenir. Ana iletişim kutu su görüntülenmiyorsa, proje çalışma ala­nında ResourceView sekmesine tıklayın. Dialog kaynak editöründe IDD_BUTTON_DIALOG ikonuna çift tıklayarak iletişim kutusu editörünü açın.

Şekil 4.4. Bir menü kaynağını düzenlemek için Developer Studio kaynak editörünü kullanma

Kontrol paletinde, her biri belli bir düğme tipi içinkullanılan dört farklı ikon var­dır. İletişim kutusuna bir düğme kontrolü eklemek için aşağıdaki yöntemlerden birini kullanın:

· Bir düğme kontrolünü paletten iletişim kutusuna sürüklemek için fare im­leci düğme kontrolü üzerindeyken farenin sol tuşuna basın ve fare düğme­sini basılı tutarak imleci iletişim kutusuna sürükleyin. İmleç iletişim kutu­sunda istediğiniz konuma geldiğinde fare düğmesini serbest bırakın.

· Kontrol paletinde bir kontrole tıklayarak bir düğme seçin. İletişim kutu­sunda istediğiniz noktaya tıklayın. İletişim kutusu editörü seçtiğiniz kontrolü o noktada yaratacaktır.

Bu adımlar kontrol paletindeki tüm kontroller için geçerlidir. İletişim kutusuna bir kontrol ekledikten sonra kontrolün yerini veya büyüklüğünü değiştirmek için fa­reyi kullanabilirsiniz.

Örnek olması için Button projesinde kullanılan ana iletişim kutusuna çeşitli düğ­meler ekleyin. Daha sonra düğme olaylarını öğrenmek için bu kontrolleri kullana­caksınız. Eklenen düğmelerin yerleri için Şekil 4.5’ye bakın.


Düğme Kontrolünün Özellikleri

Bütün kontroller gibi düğmeler de her kontrolün davranışını tanımlayan bir özellikler kümesine sahiptir. Beş farklı düğme kontrolü tipi olmasına rağmen bunlar ortak özelliklere sahiptir. Belli bir kontrolün özelliklerini görüntülemek için kontrole farenin sağ tuşuyla tıkladığınızda çıkan menüden Properties komutunu seçebilirsiniz. Düğme kontrolleri aşağıdaki özelliklere sahiptir:

ID: Düğmenin kaynak ID’si. Developer Studio IDC_BUTTON gibi varsayılan bir kaynak ID’si verir. Kontrollerin kaynak ID’si olarak IDC_ önekini kullanmak Microsoft’un bir isimlendirme standardıdır.

Caption: Düğmenin etiketi olarak gözüken yazıyı belirtir. Developer Studio, Button gibi varsayılan bir değer verir. Düğmeyi, bu başlıktaki harflerden birine basarak klavyeden aktive etmek için o harfin başına a karakterini ekleyin.

Visible: Düğmeden başlangıçta görünür olup olmayacağını belirler. Bu onay kutusu normalde işaretli durumdadır.

Disabled: Düğmenin başlangıçta kullanılamaz durumda olacağını gösterir. Bu onay kutusu normalde işaretsiz durumdadır.

Group: Bir gruptaki ilk kontrolü işaretler. Bu onay kutusu işaretlenmezse, bu özelliğe sahip bir kontrolü takip eden kontroller aynı grubun parçası olarak kabul edilir. Kullanıcı ok tuşlarını kullanarak aynı grup içindeki kontroller arasında gezinebilir.

Tab Stop: Bu kontrole klavyedeki Tab tuşuna basılarak erişilebileceğini gösterir. Bu onay kutusu normalde seçilmemiştir.

Default Button: Bu kontrolü iletişim kutusunun varsayılan düğmesi olarak belirler. Bir iletişim kutusunda yalnızca bir tane varsayılan düğme olabilir ve iletişim kutusunda herhangi başka bir kontrol kullanmadan Enter’a basılarak bu düğme çalıştırılabilir. Bu özellik yalnızca basılır düğme kontrolleri için kullanılabilir. Normalde bu onay kutusu işaretsiz durumdadır.

OwnerDraw: Düğmenin, sahibi tarafından (bu örnekte iletişim kutusu tarafından) çizileceğini belirtir. Bu özellik yalnızca basılır düğme kontrolleri için kullanılabilir. Çoğu durumda bu onay kutusu işaretsiz durumdadır.

Help ID: Bu kontrol için ortama duyarlı bir yardım ID’si yaratır. Bu seçenek normalde seçili değildir.

Icon: Bu kontrolün yazı yerine bir ikon göstereceğini belirtir. İkon, setlcon fonksiyonu kullanılarak düğmeye atanır. Bu seçenek normalde seçili değildir.

Bitmap: Bu kontrolün yazı yerine bir bitmap göstereceğini belirtir. Bitmap, SetBitmap fonksiyonu kullanılarak düğmeye atanır. Bu seçenek normalde seçili değildir.

Notify: Mesajların kontrolün sahibine gönderilmesi gerektiğini belirtir. Bu seçenek seçilmese bile düğme tıklama mesajları kontrolün sahibine gönderilecektir. Bu onay kutusu normalde seçili durumda değildir.

Horizontil Alignment: Yazının yatay olarak nasıl hizalanacağını gösterir. Seçilebilecek seçenekler Default, Left, Right ve Center’dır. Bu özellik normalde Default olarak seçilidir.

Multiline: Düğme üzerindeki yazı tek satıra sığamayacak kadar uzunsa yazının birden fazla satır halinde gösterilmesini sağlar. Bu özellik grup kutuları için kullanılamaz. Bu onay kutusu normalde işaretli değildir.

Flat: Düğmenin 3-boyutlu efektler olmadan çizilmesi gerektiğini belirler, bu stil grup kutuları için kullanılamaz. Bu onay kutusu normalde işaretli değildir.

Vertical Alignment: Yazının dikey olarak nasıl hizalanacağını gösterir. Seçenekler Default, Top, Bottom ve Center’dır. Bu özellik normalde Default olarak seçilidir.

Auto: Kontrolün tıklandığında değil seçildiğinde durum değiştirmesi gerektiğini belirtir. Bir kontrolü tıklamadan seçmek için Tab tuşuna basmanız gerekir. Bu özellik yalnızca onay kutuları ve radyo düğmeleri için kullanılabilir. Bu onay kutusu normalde işaretli değildir.

Left Text: Yazının kontrolün sol tarafına yerleştirilmesi gerektiğini belirtir. Bu özellik yalnızca onay kutuları ve radyo düğmeleri için kullanılabilir. Bu onay kutusu normalde işaretli değildir.

Push-Like: Bir radyo düğmesi ya da onay kutusunun basılır düğme gibi çizileceğini belirtir. Kontrol işaretlendiğinde veya seçildiğinde aşağıya gömülü görünür.

Tri-State: Bir onay kutusunun iki değil üç durumlu olabileceğini gösterir. True ve False durumlarına ek olarak, kontrol kullanılamaz durumda da olabilir. Bu durumda onay kutusunun durumu ne True ne de False’dir.

Ayrıca tüm kontroller Extended Styles adında bir özellik sayfasına sahiptir. Bu stiller çok nadir olarak kullanılır.

İletişim Kutularınızda Standart Basılır Düğme Düzenleri Kullanmak

Kontroller içeren iletişim kutularında çok sayıda basılır düğme yaygın olarak kullanılır. Bu düğmelerin her biri özel bir adam taşıdığından mümkün oldukça standart terminolojiyi kullanmanızda fayda var çünkü bu sayede programlarınızın kullanımlarının işi en aza indirgenir. Aşağıda bu düğmelerin standart adamları verilmektedir:

· OK: İletişim kutusundaki bilgileri kabul edip kutuyu kapatmak için kullanılır. İletişim kutusunda kullanıcının girdiği tüm bilgiler program tarafından kullanılır. OK düğmesinin tüm harfleri büyük harf olan tek düğme olduğuna dikkat edin.

· Cancel: İletişim kutusu açıkken yapılan değişiklikleri iptal edip iletişim kutusunu kapatmak için kullanılır. Geri döndürülemeyecek değişiklikler yapıldıysa bu düğmenin etiketi Close yapılmalıdır.

· Dos: İletişim kutusunu kapatmak için kullanılır. Programın herhangi bir işlem yaptığını göstermez. İletişim kutusu açıkken yapılan değişiklikleri iptal etmek için Cancel düğmesi kullanılamadığında Close kullanılır. Birçok program Cancel düğmesini Close olarak değiştirir.

· Help: Açık iletişim kutusu için ortama duyarlı yardım istemek için kullanılır.

· Apply: İletişim kutusunda girilen verilere dayanarak değişiklik yapmak için kullanılır. OK düğmesinden farklı olarak Apply düğmesine basıldığında iletişim kutusu açık kalmalıdır.

__________________
bereday21 is online now  
Eski 15-12-2006, 11:20 AM   #3 (permalink)
 
Giriş Tarihi: Jul 2006
Konum: Amed
Mesaj: 2,990
Üye No: 16335
Cinsiyeti : Bay
İtibar Gücü: 39085
Rep Puanı : 3908079
Rep Derecesi
bereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond repute
Varsayılan


Üye Değişkenlerini Bir Düğme Kontrolü İle İlişkilendirme

Bir kontrole değer atamanın veya kontrolün değerini öğrenmenin en kolay yolu ClassWızard’ı kullanarak kontrolü sınıfın bir üye değişkeniyle ilişkilendirmektir. Bir üye değişkeni bir kontrol ile ilişkilendirirken üye değişken kontrol ile ve kontrolün değeri ile ilişkilendirebilirsiniz. Düğmeleri temsil eden üye değişkenlerinin değer üzerinden ilişkilendirilmesi çok nadirdir; bunun yerine birçok düğme kontrolünü temsil etmek için Csutton sınıfı kullanılır.

CDialog sınıfından türetilmiş bir sınıfa bir üye değişken eklemek için şu adımları izleyin.

1. ClassWizard’ı açın.

2. Member Variables adlı sekmeyi seçin.

3. İletişim kutusunu yöneten CDialog’dan türetilmiş sınıfi (bu örnekte CButtonDlg sınıfını) seçin.

4. Yeni üye değişkenle ilişkilendirilmiş kontrolü temsil eden kontrol ID’sini seçin.

5. Add Variable adlı düğmeye basın. Add Member Variable iletişim kutusu görünecektir. Kontrolün adını, kategorisini ve değişken tipini girdikten sonra OK’e tıklayın.

6. Classwizard’ı kapatın.

4.2.2. İf Döngüleri ve Switchler

İletişim kutusundaki düğmelerin etiketlerini belirlemek için koşullu ifadeler kullanır. Koşullu ifade değeri True ya da False olan bir ifadedir.

Çoğu program koşullu ifadeler kullanarak çalışma akışlarını kontrol altında tutarlar. Programın çalışması sırasında değişen koşullara bağlı olarak farklı işlemler gerçekleştirilir.

if deyimi, yalnızca parantezler içindeki ifade True değerini almışsa bir veya daha fazla deyimin yürütülmesini sağlar. Gerekirse parantezler içindeki değerler Boolean değerlere çevrilir. Bunun için sıfır False değerine, sıfırdan farklı tüm değerler True değerine çevrilir.

Kod 4.1’de if deyiminin nasıl kullanıldığını gösteren bir fonksiyon verilmektedir. Fonksiyona aktarılan parametre sıfırdan büyükse fonksiyon True değerini döndürür.

Kod 4.1. Kendisine Pozitif Bir Değer Aktarılırsa True Değerini
Döndüren Bir Fonksiyon

bool IsPositive( int nCheckValue )
{
bool bReturn = false;
if( nCheckValue > 0 )
bReturn = true;
return bReturn;
}

Bileşik Deyimler Kullanmak

if deyiminin kontrol ettiği deyim yalnızca test koşulu True değerini alıyorsa yürütülür. Birden fazla deyimin yürütülmesi gerekiyorsa deyimleri bileşik bir deyim oluşturacak biçimde gruplayın. Bileşik deyimler çoğunlukla blok adını alır çünkü bunlar deyimleri kod blokları biçiminde gruplarlar.

Bileşik bir deyim bir fonksiyon gövdesi gibi küme parantezler ile başlayıp sonlanır. Bir if deyimini izleyen bileşik bir deyim içindeki tüm deyimler, test koşulu doğru olduğunda yürütülürler.

if deyiminde yapılan yaygın bir yanlış, eşitlik test etmek için kullanılan == operatörü yerine = atama operatörünün kullanılmasıdır. Her koşullu kod “seviyesini” deyimleri içeriden başlatarak yazmak alışılagelmiş bir kodlama standardıdır. İçeriden başlatarak yazmak kodunuzun daha okunur olmasını sağlar, çünkü kaynak kodunuzdaki kontrol akışını görmek kolaylaşır.



İf-else

Bir else deyimini bir if deyimiyle eşleştirebilirsiniz. if deyimiyle test edilen ifade True değerini aldığında ilk deyim (veya blok) yürütülür. İfade False değerini aldığında else deyimiyle bir araya getirilmiş deyimler yürütülür.

switch

Bazen bir veya ikiden fazla alternatif arasında seçim yapmanız gerekir. Birçok seçenek içeren bir menü fonksiyonu oluşturduğunuzu düşünün. Menü seçim kodunu yaratmanın bir yolu sürekli aynı değişkeni test eden çok sayıda if deyimi kullanmaktır.


Bu aşamadan sonra iletişim kutularında kontrol için kullanılan sekme sırasını şekil 4.6 da görebilirsiniz.
Şekil 4.6. İletişim Kutusu kontrolleri için sekme sırası


C++ birçok alternatif arasından bir seçim yapan çok sayıda if deyiminin yerini alan bir switch deyimine sahiptir. switch deyimi Kod 4.2’de gösterildiği gibi, bir ifadeyi değerlendirir ve seçenekler listesinden bir seçim yapar.
Kod 4.2. swtich Deneyimini Kullanma


bool HandleMenuSelection( char criSelection)
{
boor bValidSelection = true;
switch( chselection)
{
case ‘F’:
OpenNewFlieO;
break;
case ‘P’:
PrintDocumentO;
break;
case ‘S’:
SaveFileO;
break;
default:
bvalidSelection = false;
return bValidSelection
}
}

Kod 4.2’nin gösterdiği gibi switch deyimi çeşitli bölümlerden oluşur. İşte bir switch deyiminin ana özellikleri:

switch ifadesi: Parantezlerin içindeki ifade değerlendirilir ve seçim yapmak üzere bu değer kullanılır.

· Bir veya daha fazla case etiketi. Her can etiketi bir değer içerir. Her case etiketi eşsiz olmalıdır. Bir case etiketinin değeri switch ifadesine uyarsa case etiketinden sonraki deyimler yürütülür.

· Bir veya daha fazla break deyimi. break deyimi bir switch deyimi içindeki kodun yürütülmesini sonlandırmak için kullanılır. Bir break deyimi normalde her case arasına yerleştirilir. Bir break deyimi kaldırılırsa, bir sonraki break deyimine kadar veya switch içinde daha fazla deyim kalmayana kadar bir sonraki case yürütülür.

· Bir varsayılan (default) etiket. Hiçbir case etiketi switch ifadesine eşit olmadığında default etiketi kullanılır.

4.3. Düzenleme Kontrolleri

Windows programlarında kullanıcı girişleri çoğunlukla düzenleme kontrolleri kullanılır. Bu bölümde şu konuları öğreneceksiniz:

· Kullanıcının girdiği metinleri almak ve görüntülemek

· ClassWizard’ı kullanarak bir düzenleme kontrolünü CEdit ve Cstring nes­neleriyle ilişkilendirmek

Yerlerin geçerliliği için DDV ve DDX rutinlerini kullanmak. Ayrıca bir SDI projesi yaratacak ve bu projeyi iletişim kutularında kullanılan düzen­leme kontrollerine nasıl veri aktarımı yapıldığını öğrenmek için kullanacaksınız.



__________________
bereday21 is online now  
Eski 15-12-2006, 11:22 AM   #4 (permalink)
 
Giriş Tarihi: Jul 2006
Konum: Amed
Mesaj: 2,990
Üye No: 16335
Cinsiyeti : Bay
İtibar Gücü: 39085
Rep Puanı : 3908079
Rep Derecesi
bereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond repute
Varsayılan


Düzenleme Kontrollerini Anlama

Bir düzenleme kontrolü kullanıcının girdiği metni saklamak için tek satırlık düzenleme kontrolü tek satırlık metin girilmesine izin veren bir düzenleme kontrolüdür.

Çok satırlı düzenleme kontrolü birden fazla metin satırı girilmesine izin veren bir düzenleme kontrolüdür. Düzenleme kontrolleri genellikle iletişim kutularında bulunurlar. Kullanıcı girişi gerekli olan hemen her yerde bir düzenleme kontrolü bulabilirsiniz.

Düzenleme Kontrolleri Niçin Kullanılır?


Kullanıcıdan bir metin girişi alınması gerektiğinde tek satırlık düzenleme kontrolü kullanırsınız. Örneğin, bir iletişim kutusunda bir isim ya da adres girilmesi gerek­tiğinde o bilgiyi almak için bir düzenleme kontrolü kullanılmalıdır. Çok satırlı dü­zenleme kontrolleri çoğunlukla görüntülenebilenden daha fazla metin girilmesine olanak sağlayan kaydırma çubuklarına sahiptir.

Bir düzenleme kontrolünde kullanıcıya varsayılan bir metin hazır olarak sunulabilir. Bu bazı durumlarda kullanıcının girmesi gereken yazı miktarını azaltabilir. Ayrıca tüm düzenleme kontrolleri sizin fazladan bir programlama yapmanıza gerek kalmadan sınırlı miktarda metin düzeltme işlemini destekler. Örneğin standart kesme ve yapıştırma komutları bir düzenleme kontrolünde de beklendiği gibi çalı­şır. Tablo 4.4 bir düzenleme kontrolünde kullanılabilecek metin düzeltme ko­nutlarını listelemektedir.

Tablo 4.4. Bir Düzenleme Kontrolünde Kullanılabilecek Metin
Düzenleme Komutları

Komut Tuş

Cut (Kes) Ctrl+X

Paste (Yapıştır) Ctrl+V

Copy (Kopyala) Ctrl+C

Undo (Geri Al) Ctrl+Z

Düzenleme kontrolünün kendiliğinden sahip olduğu bu düzeltme yetenek­lerinden dolayı çok satırlı bir düzenleme kontrolü kullanarak basit bir metin editörü yaratmak mümkündür. Çok satırlı bir düzenleme kontrolü gerçek bir metin editörünün yerini tutamayacak olmasına rağmen kullanıcıdan çok sa­yıda metin satırı almak için iyi bir yol sunar.

Düzenleme Kontrolleri İçin MFC Desteği

Normalde bir iletişim kutusuna düzenleme kontrollerini düğme ekledi­ğiniz biçimde eklersiniz. Bir iletişim kutusuna kontrolü ekledikten sonra kontrolü programda kullanmak üzere ClassWizard’ı kullanın.

Düzenleme kontrolleriyle etkileşim için çoğunlukla CEdit adlı MFC sınıfı kullanı­lır. Bir sonraki bölümde göreceğiniz gibi, bir düzenleme kontrolünü belli bir CEdit nesnesiyle ilişkilendirmek için ClassWizard’ı kullanabilirsiniz. Bir düzenleme kontrolü, düzenleme kontrollerinin iletişim kutularında kullanımını kolaylaştıra­bilen bir CString nesnesiyle de ilişkilendirilebilir. Daha sonra bu bölümdeki “DDV ve DDX Rutinlerini Kullanarak İIetişim Kutularına Parametre Aktarımı”adlı kısımdan başlayarak CString nesneleriyle ilişkilendirir. Düzenleme kontrollerini kullanma hakkında daha ayrıntılı bilgi edineceksiniz.


Bir SDI Test Projesi Oluşturma


Bu kitaptaki örneklerin bazıları için bir SDI projesi yaratıp bir test iletişim kutusu eklemeniz gerekir. Bir test iletişim kutusu içeren test projesi oluşturmak için aşa­ğıdaki adımları izleyebilirsiniz:

1. “Visual C++ 6.0’ ı Kullanmak” adlı 1. Bölümde anlatıldığı gibi MFC Appwizard’ı kullanarak EditTest adında bir SDI projesi yaratın. Appwizard’ın önerdiği seçime bağlı özelliklerden istediklerinizi ekleyip çı­karabilirsiniz çünkü o özellikler bu bölümde kullanılmayacak.

2. “İletişim Kutularını Kullanmak”adlı bölümde anlatıldığı gibi programa bir i­letişim kutusu kaynağı ekleyin. İletişim kutusuna IDD_TEST adını verin ve başlığını Test Dialog yapın. ClassWizard’ı kullanarak yeni iletişim kutusu ı­çin CTestDIg adında bir iletişim kutusu sınıfı yaratın.

3. View menüsüne Test başlıklı ID_VIEW_TEST adında bir menü seçeneği ekleyin. ClassWizard’ı kullanarak yenı menu maddesine bir mesaj yönetimi fonksiyonu ekleyin. CDialog tabanlı bir nesneyi kullanan bir mesaj yönetimi fonksiyonu eklemek için gerekli adımlar daha önceden anlatılmıştı.

4. MainFrm.cpp dosyasında tüm #include yönlendiricilerinden sonra aşağıdaki satırı ekleyerek CTestDIg sınıf bildirimini MainFrm.cpp dosyasına dahil edin:

# include “testdlg.h”

5. İletişim kutusuna ID_CTEST adında ve Test etiketli bir basılır düğme kontrolü ekleyin. ClassWizard’ı kullanarak daha sonraki örnek­lerde kullanılacak olan BN_CLICKED mesajını yönetecek bir fonksiyon ekleyin.

6. Bu adımları izledikten sonra araç çubuğundaki Build ikonuna tıklayarak veya ana menüden Build > Build EditTest.exe komutunu seçerek projeyi derleyin. Menüden View > Test komutu seçildiğinde ID_CTEST iletisim kutusunun görüntülendiğinden emin olun.
Kod 4.3 Edittest’te Bir Menü Maddesi Seçimini Yönetme


void CMainFrame::OnVıewTeSt( )
{
cTestDIgdig;
dig.DoModal( );
}

İletişim Kutusuna Düzenleme Kontrolü Eklemek

Bir iletişim kutusuna metin kutusu ekleme işlemini aynı düğme ekleme işlemi gibi yapacaksınız. Bunun için aşağıdaki iki temel yöntemden birini kullanın:

· Sürükle-ve-bırak yöntemini kullanarak kontrol paletinden bir düzenleme kontrolünü sürükleyin ve iletişim kutusunda istediğiniz noktaya bırakın.

· Ataç paletindeki Edit Control ikonuna tıklayarak bir düzenleme kontrolü seçin ve düzenleme kontrolünün iletişim kutusunda olmasını istediğiniz noktaya tıklayın.

Şekil 4.7. Düzenleme Kontrollerinde kullanılan İletişim kutusu

Düzenleme Kontrollerinin Özellikleri


Düzenleme kontrolüne farenin sağ tuşuyla tıklayıp açılan menüden Properties komutunu seçerek düzenleme kontrolünün özelliklerini inceleyebilirsiniz. Bir dü­zenleme kontrolü aşağıda verilen genel özelliklere sahiptir:

· ID: Düzenleme kontrolünün kaynak ID’si için kullanılır. Diğer kontroller-de olduğu gibi duzedeme kontrolü için de Developer Studio varsayılan bir kaynak ID’sı önerir.

· Visible: Düzenleme kontrolünün başlangıçta görünür olduğunu belirtir. Bu seçenek normalde seçili durumdadır

· Disabled: Metin kutusunun başlangıçta kullanılamaz durumda olacağını belirtir. Bu seçenek normalde seçilmemiş durumdadır.

· Group: Bir gruptaki ilk kontrolü belirlemek için kullanılır. Bu özelliği olan bir kontrolü izleyen tüm kontroller eğer bu özellik işaretlenmemişse aynı grubun parçası olarak kabul edilirler. Kullanıcı ok tuşlarını kullanarak bir grup içindeki kontroller arasında gezinebilir.

· Help ID: Bu kontrol için ortama duyarlı bir yardım ID’si yaratır.

· Tab Stop: Bu kontrole Tab tuşuna basılarak erişilebileceğini gösterir. Bu seçenek normalde seçili durumdadır.

Ayrıca yalnızca düzenleme kontrolleri için geçerli olan özellikler vardır. Properties ile­tişim kutusundaki Styles sekmesine tıklanarak aşağıdaki özellikler görüntülenebilir:

· Align Text: Düzenleme kontrolü çok satırlı ise kullanılabilen bir açılan lis­te. Metin sola, ortada veya sağa hizalanabilir. Öndeğer sola hizalamadır.

· Multiline: Kontrolün çok satırlı bir düzenleme kontrolü olacağını belirtir. Bu seçenek normalde seçili değildir.

· Number: Düzenleme kontrolüne yalnızca rakam girilebileceğini gösterir.

· Hodzoıntal ScroII:Yalnızca çok satırlı düzenleme kontrollerinde kullanıla­bilir ve yatay bir kaydırma çubuğu yaratır. Bu seçenek normalde seçili de­ğildir.

· Auto HScroII: Metni gerekirse sağa kaydırır. Bu seçenek normalde seçilidir.

· Vertical ScroIl: Yalnızca çok satırlı düzenleme kontrollerinde kullanılabilir ve düşey bir kaydırma çubuğu yaratır. Bu seçenek normalde seçilidir.

· Auto VScrolt: Yalnızca çok satırlı düzenleme kontrollerine kullanılabilir ve kullanıcı son satırda Return tuşuna bastığında otomatik kaydırma işlemi yapar. Bu seçenek normalde seçili değildir.

· Password: Kullanıcının girdiği her karakter yerine yıldız işareti göstererek kullanıcı girişini gizler. Bu seçenek yalnızca tek satırlı düzenleme kontrollerinde geçerlidir ve normalde seçili değildir.

· No Hide Selection:Bir düzenleme kontrolüne odaklanıldığında kontrolün davranışını değiştirir. Bu seçenek seçildiğinde metin hep seçili görünür. Bu seçenek normalde seçili değildir.

· OEM Convert: Programın AnsiToOem fonksiyonunu çağırması halinde fonksiyonun çalışmasını sağlamak için kullanıcı girişinde dö­nüşümler gerçekleştirir. Bu seçenek normalde seçili değildir.

· WantReturn:Çok satırlı düzenleme kontrollerinde geçerlidir. Bu seçenek, düzenleme kontrolünün Enter tuşuna basılmasını kabul etmesine olanak sağlarken Enter tuşuna basılması iletişim kutusunun varsayılan basılır düğmeyi etkilemesine engel olur.

· Border: Kontrolün çevresinde bir sınır yaratır. Bu seçenek normalde seçilidir.

· Uppercase:Tüm girişi büyük harfe çevirir. Bu seçenek normalde seçili değildir.

· Lowercase:Tüm girişi küçük harfe çevirir. Bu seçenek normalde seçili değildir

· Read-only: Kullanıcının düzenleme kontrolüne giriş yapmasını veya kontroldeki metni değiştirmesini önler. Bu seçenek normalde seçili değildir.

Düzenleme kontrolünün ID’si IDC_EDIT veya benzer bir isim olarak belirlenir. Örnek program için ID’yi IDC_EDIT_TEST olarak değiştirip diğer özellikleri olduğu gibi bırakın.

Bir CEdit Nesnesini Bir Düzenleme Kontrolüne Bağlamak

Daha önce söz edildiği gibi, bir düzenleme kontrolüyle etkileşimde bulunmanın bir yolu kontrole iliştirilmiş bir CEdit nesnesi aracılığıyladır. Bir düzenleme kont­rolüne bir CEdit nesnesi iliştirmek için daha önceki saatte düğme kontrolleri için yaptığınız biçimde ClassWizard’ı kullanacaksınız:

1. ClassWizard’ı açın.

2. İletişim kutusunu yöneten CDiaIog sınıfından türetilmiş sınıfı (bu örnekte CtestDlg sımfını) seçin.

3. Member Variables etiketli sekmeyi seçin.

4. Yeni üye ile ilişkilendirilmiş kontrolü temsil eden kontrol ID’sini (bu örnekte IDC_EDIT_TEST’i) seçin.

5. Add Variable düğmesine tıklayın. Add Member Variable iletişim kutusu görünecektir. Bu örnek için Tablo 4.5’de verilen değerleri kullanın.


Ctestdig Için Bır Cedit Üye Değışkenı Eklemek Üzere
Kullanılan Değerler

Kontrol ID Değişken Adı Kategory Tip

IDC EDIT_TEST m_editTest Kontrol CEdit

Category kontrolünde gösterilen varsayılan değer Value’dur. Value kategorisi bu bölümde daha sonra DDV ve DDX rutinlerini öğrendiğinizde bazı üye değişkenler için kullanılacaktır.

Bir Düzenleme Kontrolüne Girilen Metni Almak

Düzenleme kontrolleri kullanmanın asıl amacı elbette ki kullanıcıdan bilgi topla­maktır. Bunu yapmak için düzenleme kontrolüne girilen bilgiyi almanız gerekir. CEdit sınıfını kullanmak bu işlemi kolaylaştırır.

__________________
bereday21 is online now  
Eski 15-12-2006, 11:23 AM   #5 (permalink)
 
Giriş Tarihi: Jul 2006
Konum: Amed
Mesaj: 2,990
Üye No: 16335
Cinsiyeti : Bay
İtibar Gücü: 39085
Rep Puanı : 3908079
Rep Derecesi
bereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond reputebereday21 has a reputation beyond repute
Varsayılan


Girilen Metni Almak için CEdit Üye Fonksiyonlarını Kullanmak

Bir düzenleme kontrolüne girilen bilgiyi alırken GetWindowText ve LineLength üye fonksiyonları gibi çeşitli CEdit üye fonksiyonları kullanılır. Örnek olarak Kod 4.4’de verilen kaynak kodu önceden yaratılan CTestDIg::OnTest üye fonksiyonuna ekleyin.

Kod 4.4. Cedit Sınıfını Kullanarak Bir Metin Kontrolündeki Bilgili
Alma

void CTestDİg::OnTest( )
{
Cstring szEdit;
CString szResult;
int nLength = İn_editTest.LineLength;
İn_editTest.GetWindowText( szEdit );
szResult.Format( “ %s has %d chars”, szEdit, nLength );
AfxMessageBox( szResult );
}

Test düğmesine tıklandığında m_editTest nesnesi kııllanılarak düzenleme kontro­lüne girilen yazı alınır. Yazı szEdit adlı bir CString nesnesine yerleştirilir. CString sınıfının Format üye fonksiyonu, ilk parametrede aktarılan desen (pattern) kullanılarak karakter katarının içeriğini biçimlendirir. CString’in içeriğini yaratmak üzere birleştirilen ilave parametreler için %s ve %d gibi semboller kullanabilirsiniz. %ssembolü karakter katarları için, %d sembolü int veri tipi için kullanılır.

Normalde yalnızca OK düğmesine tıklanırsa metin kutusuna girilen veriyle ilgile­nirsiniz. Cancel düğmesine tıklandıysa iletişim kutusu kapanmalı ve girilen her­hangi bir veri göz ardı edilmelidir.

Gerekli fonksiyon çağrıları için kod yazmayı denemek yerine DDV ve DDX rutinlerini eklemesi için ClassWizard’a güvenilmelidir. DDV ve DDX ru­tinlerini iletişim kutularınızda doğrudan kullanabilecek olmanıza rağmen ClassWizard tek bir düğmeye tıklamayla kodu sizin yerinize ekler.

4.3.2. DDV ve DDX Rutinleri Niçin Kullanılır?

DDV rutinleri bir düzenleme kontrolüne girilen veriyi alırken çok kullanışlıdır. Genelde kullanıcının bir düzenleme kontrolüne girdiği veri üzerinde çok az kont­role sahipsinizdir. DDV değer aralığı veya karakter katarı uzunluğuna bağlı olarak veri geçerliliğini basit bir biçimde test etmenize olanak sağlar.

Örneğin bir düzenleme kontrolüne kısaltılmış bir eyalet ismi girilecekse girilen metni iki karakterle sınırlandırmak isterseniz. Bir DDV rutini kullanarak yalnızca iki karakter girildiğinden emin olmak kolaydır.

DDX fonksiyonları iletişim kutusu sınıfındaki üye değişkenleri iletişim kutusunun içerdiği kontrollere bağlar. DDX rutinleri yerlerin kontrollere aktarılmasını ve kontrollerden alınmasını çok kolaylaştırır. Bir iletişim kutusu normalde aşağıdaki gibi kullanılır:

CMyDialog dlgNline;

dlgMine. DoModaI( );

Bu örnekte DoModal çağrıldığında iletişim kutusu oluşturulur ve kullanıcı iletişim ku­tusunu kapatana kadar fonksiyon sonlanmaz. İletişim kutusuna veri aktarmak ve­ya kutudan veri almak gerekirse bu durum sorun yaratır.

İletişim kutusu oluşturulana kadar hiçbir kontrol mevcut olmadığından iletişim kutusunun içerdiği kontrollerle doğrudan etkileşimde bulunmak için SetWindowsText, GetWindowText gibi fonk­siyonları kullanmak mümkün değildir. İletişim kutusu kapandıktan sonra kullanıcı girişlerini almak için bu fonksiyonları kullanmak artık çok geçtir.

Bir iletişim kutusuyla bilgi alışverişinde bulunmak için DDX rutinleri kullanıldı­ğında iletişim kutusu şöyle kullanılabilir:

CMyDialog dlgMine;

dlgMine.m_szTest = “HeIIo World”; dlgMne. DoModal ( );

DDX rutinleri iletişim kutusu oluşturulmadan önce ve oluşturulduktan sonra iletişim kutusunun kontrollerine erişebilmenizi sağlarlar. Bu durum iletişim kutusunu programlamayı kolaylaştırır çünkü bu yöntem InitDialog üye fonksiyonuna kod eklemekten çok daha esnek bir yöntemdir.

DDV ve DDX Rutinlerini Kullanarak İletişim Kutularına Parametre
Aktarımı

DDV ve DDX rutinleri iletişim kutuları için verilen yönetmeye yardımcı olan yardımcı fonksiyonlardır. DDV (Dialog Data Validation) rutinleri yerlerin geçerli­liği için kullanılır. DDX (Dialog Data Exchange) rutinleri bir iletişim kutusundaki kontrollere veri aktarımı için kullanılır.

Kod 4.5. Bir Metin Kontrolüyle Bilgi Alışverişinde Bulunmak İçin
Üye Değişkenleri Kullanmak

void CMainFrame: :OnViewTest( )
{
CTestDİg dlg;
dlg.m_szTest “DDX testi”;
if ( dIg.DoModaİ( ) = = IDOK )
{
AfxMessageBox( dlg.mszTest);
}
}

Kod 4.5 iletişim kutusu kullanıcıya gösterilmeden önce m_sztest değişkenine de­ğer atar. CDialog::OnInitDialog fonksivonu CWnd::UpdateData fonksiyonunu çağı­rır. Updatedata sanal bir fonksiyon olduğundan fonksiyonun doğru versiyonu (i­letişim kutusunu yöneten CDialog sınıfından türetilmiş sınıfın bir parçası olan ver­siyonu) çağrılır.

4.4. Liste Kutusu ve Bileşik Kutu Kontrolleri

List kutuları (list box) ve bileşik kutular (combo box) Wındows programcılığın­da sık kullanılan iki kontrol türüdür. Liste kutusu kullanıcının çok sayıda olası se­çenek arasından seçim yapmasına olanak sağlamak için kullanılır. Bileşik kutu ise liste kutusu ile düzenleme kontrolünün bir bileşimidir. Bu bölümde bu kontrolleri öğrenecek ve bunları basit örneklerde kullanacaksınız.

4.4.1. Liste Kutusu Nedir?

Liste kutusu (list box) kontrolleri seçilebilecek maddeler listesidir. Kullanıcı klavyeyi kullanarak veya fare ile bir maddeye tıklayarak maddeleri seçebilir.

Tek-seçimlik liste kutusu (single-selection list box) bir anda tek bir maddenin seçilmesine izin verir. Bir liste kutusunun varsayılan şekli budur.

Çok-seçimlik liste kutusu (multiple-selection list box) bir anda birden fazla maddenin seçilmesine izin verir.

Bir liste kutusu normalde bir iletişim kutusu, kontrol çubuğu veya kontroller içeren herhangi bir pencerede bulunabilir. Liste kutuları çoğunlukla çok sayıda öğe i­çerir. Bazı öğeler görüntülenemiyorsa kullanıcının listede gezinmesine yardımcı olmak için bir kaydırma çubuğu görünür.

Liste Kutuları Niçin Kullanılır?

Liste kutuları çok sayıda maddenin kullanıcıya görüntülenmesini sağlayan en basit kontrollerdir. Genelde liste kutuları veri tabanlarından veya raporlardan elde edi­len bilgileri görüntülemek için kullanılır. Liste kutusunun büyüklüğünün değişti­rilmesi gerekmediğinden bu tür veriler için çok uygundur. Sıralanmış bir liste ku­tusu kullanıldığında, kullanıcının çok sayıdaki madde arasında arama yapıp bir se­çim yapması kolaylaşır.

Liste kutularını programlarınızda kullanmak çok kolaydır. Bir liste kutusu nesnesi oluşturduysanız liste kutusuna tek satırlık bir kodla bir madde ekleyebilirsiniz:

listbox.Addstring(”Gwen”);

Diğer kontrollerin hiçbirinin kullanımı hem kullanıcı hem de programcı için bu kadar kolay ve esnek değildir. Ayrıca liste kutusu, gördüğünüz kontrollerden indeks kullanan ilk kontroldür. Bir madde seçildiğinde, eklendiğinde veya silindiğinde maddeyi belirl­emek için sıfır tabanlı bir indeks kullanılır. Bu indeks bir veri tabanı indeksi ile senkronize olabilir veya maddeyi başka şekillerde belirlemek için kulla­nılabilir.

Liste Kutuları İçin MFC Desteği

Bir iletişim kutusuna liste kutusu ekleme işlemi, daha önceki iki bölümde yaptığınız düğme ve düzenleme kontrolleri ekleme işlemine çok benzer. Kontrolü ekledik­ten sonra mesaj yönetimi fonksiyonları eklemek ve kontrolü bir CListBox nesnesi ile ilişkilendirmek için ClassWizard’ı kullanın.

Liste kutusu kontrolünü yönetmek ve kontrolle etkileşimde bulunmak için MFC CListBox sınıfını kullanabilirsiniz. Diğer kontrol sınıfları gibi CListBox sınıfı da CWnd sınıfından türetilmiştir ve CWnd fonksiyonlarının çoğu CListBox nesneleriyle kullanılabilir. Daha sonra “CListBox Sınıfını Kullanmak” adlı kısımda CListBox ile il­gili daha ayrıntılı bilgi edineceksiniz.
İletişim Kutusuna Liste Kutusu Eklemek


Örnek olması amacıyla, “İletişim Kutularını Kullanmak” adlı bölümde anlatılan adımları izleyerek ve AppWizard’ı kullanarak ListBox adında iletişim kutusu tabanlı bir proje yaratın. Proje çalışma alanında ResourceView sekmesine tıklayın. Dialog kaynak editöründe IDD_LISTBOX_DIALOG ikonuna çift tıklayarak iletişim kutusu editörünü açın.


IDD_LISTBOX_DIALOG ana iletişim kutusuna bir liste kutusu eklemek bir düğme veya düzenleme kontrolü eklemeye benzer. Bir liste kutusu kontrolünü kontrol paletinden ana iletişim kutusuna sürükleyip bırakın veya fareyi kullanarak araç paletinden liste kutusu kontrolünü seçin ve ana iletişim kutusunda istediğiniz noktaya bırakın. Şekil 4.8 bir liste kutusu kontrolü içeren IDD_LISTBOX_DIALOG iletişim kutusunu göstermektedir.

__________________
bereday21 is online now  
 


Konu Araçları
Mod Seç

Gönderme Kuralları
Yeni konular açabilirsiniz --> izin yok
Yanıtlar gönderebilirsiniz --> izin yok
Eklentiler gönderebilirsiniz --> izin yok
Mesajlarınızı düzenleyebilirsiniz --> izin yok

vB koduAçık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı

Popüler Konular:
Bydigi Forum'un En Popüler Konuları
Sizin İçin Seçtiklerimiz-1:

Norton AntiVirus 2008
Panda Antivirus & Firewall 2008
AVG Anti-Virus Free Edition 8.0.100
McAfee VirusScan Enterprise 8.5i
Avast! 4 Professional Edition 4.8.1169
Kaspersky Internet Security 7.0.1.325
Anti-Porn 10.4.11.15
BitDefender Internet Security 11.0.9 (2008)
Eset Smart Security 3.0.642
Ad-Aware 2008

Sizin İçin Seçtiklerimiz-2:

Şeftali Yetiştiriciliği
Ekolojik Tarım ve Hayvancılık
Süt Verimini Etkileyen Faktörler
Dört barajda su bitmek üzere
Karbondioksit salımı yüzde 50’den çok artacak
VAN (Wan) Tarihi
Amed (Diyarbakır) Tarihi
İç Anadolu Hakkında Genel Bilgi
Kültür ve Turizm Bakanlığı müfettiş yardımcılığı
2008 yılı icra müdür ve yardımcılığı sınav ilanı

Sizin İçin Seçtiklerimiz-3:

Siz Hangi Yemeksiniz ?
Doğum gününüze göre hangi hayvansınız?
Doğum Tarihinize Göre Renginiz!
Bebeklerde Gaz Çıkarma
Virüs taşıyan keneler dehşet saçıyor
Şiddetin genlerle ilişkisi olabilir
Karpuz Viagra Etkisi Yapıyor
Panasonic Sony'yi tahtından etti!
Mehmet Atlı - Wenda 2008
grup seyran - 2008


Benzer Konular

Konu Konuyu Başlatan Forum Yanıt Son Mesaj
temel fıkraları... ByMeD Komik Yazılar, Fıkralar