WxWidgets etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
WxWidgets etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

16 Nisan 2010 Cuma

WxWidgets Vector Uygulaması

Merhabalar, sizlere C++ programlama dilinde vector'ler ile ilgili bir wxWidgets uygulamasından bahsetmek istiyorum.
Resimde de gördüğünüz üzere uygulamadaki amacımız; program çalıştığında tıkladığımız yere buton eklenmesini ayrıca o butonun id'siyle birlikte görünmesini sağlamak, form alanında bulunan butona [arka planı mavi olan buton] tıkladığımızda ise çeşitli yerlere tıklayarak ekranda oluşturmuş olduğumuz butonların rasgele hareket etmesini sağlamak ve ayrıca ekranda tıklayarak oluşturduğumuz butonlardan herhangi bir tanesine tıklayarak da form alanının arka plan rengini değiştirmek. 

Biraz karışık oldu ama umarım anlatabilmişimdir. :)

Öncelikle yeni bir frame tabanlı bir wxWidgets projesi oluşturuyoruz ve form alanına önce wxPanel ve devamındaysa bir wxButton ekliyoruz.

Daha sonra projemizi çalıştırdığımızda butonların karışmaması adına ekranda tıkladığımız yere eklenen butonların rasgele hareketini sağlayan butonun arka plan rengini (sol panelde bulunan Background kısmından) dilediğimiz rengi seçerek değiştiriyoruz. Bu işlemden sonra wxPanel'e çift tıklayarak wxPanel'in tıklama (click) olayına (event'ine) aşağıdaki kodları yazıyoruz:

void projenizin_adıFrame::OnPanel1LeftDown(wxMouseEvent& event)

{
int myId= wxNewId();
wxString baslik;
baslik = wxString::Format(_("Dugme : %d"),myId);
yeni_buton= new wxButton(Panel1,myId,baslik,event.GetPosition());
vektor.push_back(yeni_buton);
Connect(myId,wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&vector1Frame::myButton);
}


Bu işlemden sonra ekrana tıkladıkça tıkadığımız yerde oluşan butonların rasgele sağa sola hareketini sağlayan diğer butonun tıklama olayına ise aşağıdaki kodları yazıyoruz:

void projenizin_adıFrame::OnButton1Click(wxCommandEvent& event)

{
std::vector::iterator it;
for(it = vektor.begin(); it != vektor.end(); it++)
{
wxPoint yer = (*it)->GetPosition();
int dx = rand() % 10 -5;
int dy = rand() % 10 -5;

yer.x = yer.x + dx;
yer.y = yer.y + dy;
(*it) -> SetPosition(yer);
}
}


Bu işlemden sonra ise form alanına tıkladıkça tıkladığımız yerde oluşan butonun üzerine tıkladığımızda panel arka plan renginin değişmesi için hem yeni bir fonksiyon üretiyoruz hem de bu fonksiyonun içine arka plan renginin değişmesi için kodlarımızı yazıyoruz.

void projenizin_adıFrame::myButton(wxCommandEvent& event)
{
Button1->SetLabel(wxString::Format(_("Bas Id:%d"), event.GetId()));
Panel1->SetBackgroundColour(wxColour(0,50,100));
Panel1->Refresh();
}

Bu işlemi de bitirdikten sonra son olarak "projenizin_adıMain.h" isimli header dosyasına öncelikle açıklama satırlarının dışında bir yere -wxButton konusunda anlattığım şekilde- #include <vector.h> kütüphanesini ekliyoruz ve "DECLARE_EVENT_TABLE()" yazan satırın üst kısmına ise aşağıdaki tanımlamaları yapıyoruz:


void myButton(wxCommandEvent& event);
wxButton *yeni_buton;
std::vector<button *>vektor;



Böylelikle uygulamamızı bitirmiş olduk, umarım bu bilgiler size yardımcı olur...

İyi çalışmalar... ;)

3 Nisan 2010 Cumartesi

WxFileDialog ve WxStaticBitmap Uygulaması

Merhabalar, sizlere wxFileDialog ve wxStaticBitmap'den bahsetmek istiyorum. WxFileDialog ile adından da anlaşılacağı üzere dosya seçim dialoğu başka bir deyişle browse [gözat] butonu diyebiliriz.

WxStaticBitmap ise; programımızı çalıştırdığımızda default [varsayılan] olarak ekranda görmek istediğimiz resmi görüntülemeye yarayan statik türde bir resim aracı diyebiliriz.

Aşağıdaki örnekte, bir wxButton'a tıklandığında wxFileDialog bileşeni ile seçilen bir resim dosyasını, wxStaticBitmap aracına aktararak görüntülenmesini sağlayıp ve aynı zaman da wxStaticText bileşenine bu seçilen resim dosyanın ismini yazdırıyoruz.

Öncelikle yeni bir dialog frame tabanlı bir proje açıyoruz ve proje alanına sırasıyla wxPanel, wxButton, wxStaticText, Dialogs sekmesinden wxFileDialog, yeni bir wxPanel daha ekliyoruz fakat bu panel'i ilk eklediğimiz panel'in içine eklemeye dikkat ediyoruz ve son olarak da wxStaticBitmap ekliyoruz fakat bu wxStaticBitmap'i de en son eklediğimiz wxPanel'in içine eklemeye dikkat ederek proje alanına bileşen ekleme işini bitiriyoruz.

Proje alanına eklemiş olduğumuz wxButton bileşeninin üzerine çift tıklıyoruz ve açılan "dosya_ismiMain.cpp" dosyasının en altındaki wxButton'un click olayı için olan fonksiyonunun içine aşağıdaki komutları yazıyoruz.

if (FileDialog1 -> ShowModal() ==wxID_OK) // FileDialog ile resim dosyası seçilmişse

{
// Seçilen resim dosyasının ismini StaticText1' e aktar

StaticText1->SetLabel(FileDialog1->GetFilename());

// Seçilen resim dosyasını 208x120 boyutunda boyutlandırarak StaticBitmap1'e aktar.

StaticBitmap1-> SetBitmap(wxBitmap(wxImage(FileDialog1->GetPath()).Rescale(208,120)));

}

else // FileDialog ile resim dosyası seçilmezse

{

// StaticText1 değerini "Dosya secmeden Kapattim" olarak değiştir. StaticText1->SetLabel(_("Dosya Secmeden Kapattim"));

}

Bu uygulama sayesinde bir nevi Gözat butonu yardımıyla seçtiğimiz herhangi bir resim dosyasının hem adının hem de bu resim dosyasının belirlediğimiz büyüklükte görünmesini sağlamış olduk. ;)

1 Nisan 2010 Perşembe

WxButton

Merhabalar, sizlere WxButton ve parametreleri hakkında bilgi vermek istiyorum.

WxButton: Text bir yazıyı içeren bir kontroldür ve GUI' nin en sık kulllanılan elemanlarından birisidir. Bir WxButton'u bir dialog kutusuna, panel'e ya da nerdeyse herhangi bir pencereye bile ekleyebilirsiniz.

WxButton'u kullanabilmek için öncelikle onun kütüphanesini içinde bulunduğunuz projeye eklemelisiniz. Örneğin ornek adında bir projeniz var ve WxButton'u bu projenizde kullanmak istiyorsunuz o zaman "ornekmain.cpp" isimli dosyanıza "#include <wx/button.h>" kütüphanesini yazmalısınız.


Burada dikkat etmeniz gereken husus Code::Blocks'un kendi oluşturduğu kütüphanelerin yanına yeni bir kütüphane eklememek olacaktır.


Yukarıdaki resimde de gördüğünüz gibi işaretlediğim alan içerisine ekleyeceğiniz kütüphane her ne olursa olsun programı çalıştırdığınız anda Code::Blocks tarafından silinir, bu yüzden kütüphaneyi bu kısmın altına ya da üstüne ekliyoruz. ;)

Kullanım şekline ve parametrelerine bakacak olursak;

Button1 = new wxButton(Panel1, ID_BUTTON1, _("Label"), wxPoint(), wxDefaultSize, long style=0, wxDefaultValidator, _T("ID_BUTTON1"));

Button1: Butonun değişken adı.

Panel1: Bu kısma oluşturulan butonun yerleşeceği alan bilgisini giriyoruz.

ID_BUTTON1: Bu kısım butonu diğer form elemanlarından ayıran ID özelliğidir, BUTTON1 yazan kısma ayırt edici istediğiniz ID' yi yazabilir ya da WxNewId() komutunu yazarak buraya otomatik olarak yeni bir ID verilmesini sağlayabilirsiniz.

_("Label"): Burada tırnak içerisine yazacağınız değer butonun üzerinde yazacak olan isimdir.

wxPoint(): pos ve wxDefaultPosition parametresi ile aynı anlamda olup parantez içerisine yazacağınız değer butonunun x: yatayda ve y: dikeyde alacağı konumu belirler.

wxDefaultSize: size ve wxSize parametreleriyle aynı anlamda olup butonun default [varsayılan] büyüklükte olmasını sağlar.

long style: Bu long style kısmına yazacağınız değer butonun uzunluk biçimiyle ilgilidir ve değeri 0 dır.

wxDefaultValidator: wxValidator, program bilgisi ve bir class [sınıf] kontrolü yapan bir parametredir.

Validator ile bir c++ değişkenine ait bilgileri transfer edebilir, bilgi kontrolü yapabilir ve buna ilişkin uygun bir hata mesajını ekranda gösterebilirsiniz. Anlayacağınız birçok işlevi var. Bizse null [wxDefaultValidator] başka bir deyişle işimize yaramadığı için [en azından şimdilik :D ] wxDefaultValidator'u kullanıyoruz, çünkü bunun üstte bahsettiğim görevleri yapan bir işlevi yok. ;)

_T("ID_BUTTON1"): Bu kısımdaysa tırnak içerisindeki BUTTON1 yazan kısma ID_BUTTON1 parametresinde belirlemiş olduğumuz ID'yi yeniden yazıyoruz.


WxButton hakkında bahsedeceklerim bu kadar işinize yaraması dileklerimle...


İyi çalışmalar...

14 Mart 2010 Pazar

Code::Blocks İçin WxWidgets Kurulumu

Merhabalar, sizlere Codeblocks için wxWidgets kütüphanesinin nasıl kurulacağına dair bilgiler vereceğim.


Öncelikle wxWidgets'ın tanımının ne olduğundan bahsetmek istiyorum: 
wxWidgets açık kaynaklı (eski adıyla wxWindows), Kullanıcı Grafik Arayüzü tasarlamakta kullanılan temel C++ elementlerinden oluşan bir kütüphanedir.



Şimdi kurulum aşamasına geçebiliriz :)
İlk olarak codeblocks'u indiriyoruz ve kuruyoruz.

İndirin: Codeblocks-8.02


Codeblocks'u kurduktan sonra MingW' yi başka bir deyişle derleyiciyi indiriyoruz ve kurmaya başlıyoruz.


İndirin: Mingw-5.1.6

Eğer MingW'nin eski bir sürümü sisteminizde mevcutken yeni bir sürüm yüklemeye kalkarsanız kurulum sırasında MingW derleyicisinin bir önceki sürümünde dikkat etmeniz gereken "Candidate" paketini bu yeni sürümde program kendisi otomatik olarak güncelleyeceğini bize bildiriyor. Aşağıdaki resimde bu durumu görebilirsiniz. Fakat ilk defa kuruyorsanız kurulum sırasında "Candidate" paketini seçmeniz gerekir.



Next diyerek devam ediyoruz, karşımıza gelen ekranda "g++ compiler" seçeneğini işaretleyerek kurulumu bitiriyoruz. 


MingW'nin kurulum yeri default [varsayılan] olarak C:\MinGW olduğu için ben de kurulum yerini değiştirmedim ve bu alan üzerinden anlatmaya devam edeceğim.

MingW' yi kurduktan sonra GDB v.6.3.2 (Debugger) kurulumuna geçiyoruz. 


Dikkat etmemiz gereken başka önemli bir nokta ise kuracağımız Debugger ile Mingw'nin aynı klasör içinde olmasıdır. Başka bir deyişle aşağıdaki resimde de gördüğünüz üzere Debugger'ı C:\MinGW klasörünün içine kuracağız.
Eğer MingW'nin kurulum dizinini değiştirdiyseniz aynı değişikliği Debugger'ı [GDB v.6.3.2]kurarkende yapmalısınız. İki programın da kurulacağı yer aynı olmalıdır.


Next seçeneğine tıklayarak ve ardından gelen ekranda da install butonuna basarak kurulumumuzu tamamlıyoruz.

Sıra geldi Codeblock'umuzu güncellemeye :)

Mevcut Codeblocks sürümünü en güncel hale getirmek için üç küçük değişiklik yapacağız,

İndirin: WxWidget Dll [WxWidget Dll dosyaları]

İndirin: MingW Dll [Eğer sisteminizde kurulu değilse]

İndirin: Codeblocks Güncel Dosyaları [Codeblocks'un en son güncellenen ve yenilenen dosyaları]

Yukarıda vermiş olduğum dosyaları indirip sıkıştırılmış arşivden, Codeblocks nerede kuruluysa oraya çıkartmanız gerekir [bknz: aşağıdaki resim]


Bu aşamadan sonra sistem size var olan dosyaların değiştirilip değiştirilmeyeceğini soracaktır:


"Yes to All" başka bir deyişle hepsine evet seçeneğine tıklayarak dosyalarınızı güncellemiş olacaksınız.

Son olarak sıra geldi WxWidgets kurulumunu yapmaya. Önce kurulum dosyamızı indirelim.


Kurulumu isterseniz "Full Installation" yapabilir isterseniz de kullanmadığınız derleyicilerin seçimini kaldırarak yapabilirsiniz. Ben kurulumu "Full Installation" yaparak devam edeceğim.


Kurulumu ise default olarak gelen "C:\SourceCode\Libraries" dizini altında yapacağım.


Burada da önemli bir noktaya değinmek istiyorum; WxWidgets kurulumunu Türkçe karakter içeren bir dizine veya "C:\Program Files" ya da "C:\Documents and Settings" gibi bulunduğu dizinde boşluk karakteri içeren bir dizine kurmayın aksi takdirde Codeblocks Türkçe karakterleri ve boşluk karakterini tanımadığı için yeni bir WxWidgets çalışması yapmaya kalktığınızda Codeblocks WxWidgets bileşenini görmeyecektir zira çalışmanız başlamadan bitecektir, aklınızda bulunsun. :)

İyi çalışmalar...

Faydalandığım kaynaklar