Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Volkan Öner
Volkan Öner
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
3 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C++ / C++.NET Volkan Öner
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C++ / C++.NET
Yayınlanma Tarihi : 18.12.2002
Okunma Sayısı : 23864
Yorum Sayısı : 2     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 27.4.2024
Turhal Temizer
Mac OS/X Removing CUDA 27.4.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 27.4.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 27.4.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Windows API' den MFC Sınıflarına
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Windows 95' den başlayarak Windows XP' ye uzanan zincir ve Windows NT türevleri, kişisel bilgisayarlar için Microsoft Windows işletim sisteminin 32 bit sürümleridir. Şu an büyük çoğunluk 32 bit işletim sistemlerinde yoğunlaşmaktadır.

Win32 API

Windows'un 32 bit sürümlerinin aynı dilde yazıldığını söyleyebiliriz. Bütün hepsi, herkes tarafından Win API olarak bilinen Application Programming Interface' e dayanır. Win API' nin 16 bit sürümleri de vardır, ancak Windows 95, Windows 98 Windows NT Win32 API ya da kısaca Win32 olarak bilinen 32 bitlik sürümü kullanırlar. Win32 API nedir? API, birkaç yüz fonksiyonun artı birçok değişmezin, makronun, structların, tiplerin ve diğer öğelerin toplamıdır. Bu öğeler windows programları tarafından kullanılır. Bu programlama öğeleri, C programlama dilinde yazılmıştır. API' nin çoğu, Windows.h olarak adlandırılmış bir dosyada tanımlanmıştır. Bu dosya, Visual C++ da dahil olmak üzere, windows için birçok programlama ortamıyla gelir.

Windows Programlamada En Az Bilinmesi Gerekenler Kendinizi bilgisayarın önünde oturup, belki de Microsoft Word' u kullanırken hayal edin. Bir dakika fareye ya da klavyeye dokunmadan oturun. Çok fazla bir şey olmuyor, değil mi? Düzeltme imi, yani metninizin ekleme noktasındaki yanıp sönen imleç, yanıp söner. Şimdi yazmayı deneyin. Klavyede yazdığınız yeni metin, düzeltme imi konumunda görüntülenir. Sonra, fareyle metin seçin. Metin vurgulanır. Araç çubuğunda kalın düğmesini tıklayın. Seçili metin kalın stil baskısıyla yeniden yazılır. Bu işlemlerin her birine event yani olay denir.

Olaylar Microsoft Windows, kullanıcı tarafından yönetilen bir sistemdir, yani yürütme zamanın çoğunu kullanıcının bir şey yapıp ona yanıt vermek için bekleyen bir sistemdir. Kullanıcı bir tuşa bastığında, fareyi oynattığında ya da farenin düğmesine bastığında, bilgisayar donanımı, Windows'a bir olay olduğunu, nasıl bir olay olduğunu, ne zaman olduğunu ve ekrana oranla ne oranda olduğunu bildirir. Olaylar üç yoldan biriyle oluşur:

1.Fare ve klavye gibi girdi aygıtları aracılığıyla olur.

2.Menü, araç çubuğu, kaydırma çubukları ve iletişim kutularındaki denetimler gibi ekrandaki görsel nesneler aracılığıyla olur.

3.Örneğin, bir pencere tarafından örtülen bir pencerenin birden ortaya çıkmasında olduğu gibi, Windows' un kendisinden, içindendir.

Windows programa bu olayların yapılması gerektiğini nasıl bildirir? İletiler aracılığıyla.

İletiler Windows az önce açıkladığım olaylar gibi olayların haberini aldığında bir ileti( message) oluşturur. İletiye eşlik etmesi için ilgili bilgiyi( konum ve zaman gibi) bir veri yapısında bir araya toplar ve iletiyi uygun programa gönderir. Windows'taki iletiler, windows.h dosyasında( ya da windows.h' ın içerdiği dosyalardan birinde) makrolarla tanımlanan değişmezlerdir. İleti sabitleri WM_XXX biçimindedirler. Örneğin WM_CHAR, WM_LBUTTONDOWN, WM_COMMAND. Windows, uygulama iletiyi alıp işlemeye hazır olana kadar diğer askıdaki iletilerle beklediği hedef uygulamanın ileti kuyruğuna sokar. 32 bit Windows sistemlerde, her bir uygulamanın kendi ileti kuyruğu vardır.

İleti Kuyruğu Uygulamanın içinde bir ileti döngüsü( message loop) vardır. Kodda bu aşağıdakine benzer:

While(GetMessage(&msg,NULL,0,0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}


Bu küçük döngü uygulamanın ileti kuyruğundan aldığı ile WM_QUIT olmadığı sürece işlemeyi sürdürür. O ileti döngünün bitmesine neden olur. Çünkü GetMessage, WM_QUIT iletisi gördüğünde iletiyi almak için Win32 API işlevi olan GetMessage işlevini çağırır. Kuyrukta ileti yoksa, GetMessage orada oturur ve ileti gelmesini bekler.

GetMessage ileti verdiğinde, döngü onun klavyeden gelip biraz ek iş gerçekleştirecek bir ileti olup olmadığını anlamak için, iletiyi TranslateMessage işlevine aktarır. TranslateMessage, ham klavye iletilerini, yazılan karakter hakkındaki kullanması kolay bilgileri açığa çıkarmak için tasarlanmış WM_CHAR iletilerine döndürür. TranslateMessage, yazılan alfasayısal karakter ve basılabilir simgelerden ayırır. TranslateMessage, klavyeden gelmeyen iletilere hiçbir şey yapmaz. Son olarak, DispatchMessage işlevi, uygulamada hangi pencerenin( birden fazlaysa) iletiyi alması gerektiğine ve hangisi üzerinden iletinin gönderilmesi gerektiğine karar verir.

İleti İşleyiciler İletiyi alan uygulamanın içinde gelen iletiye ne olduğu, sizin, yani uygulama programcısının ne yaptığına bağlıdır. İki temel olasılık vardır:

Handler(işleyici), yani bir iletiyle başa çıkan bir kod yazdınız. İleti için işleyici varsa, iletiyi işlemeyi işleyici kod yürütür.

İleti için işleyici yazdınız. Bunun yerine, Windows' un her ne varsayılan işlemi yapması gerekiyorsa, iletiyi Windows' a geri göndermeyi tercih ettiniz. Geleneksel Windows programlamasında, bunu DefWindowProc işlevini çağırarak yaparsınız.

MFC: C++, OOP(Object Oriented Programming) ve Win32API' nin Müthiş Birleşimi Microsoft Win32API' nin yüzlerce işlevi olduğundan, öğrenmek yıldırıcı olabilir. C' de çalışıyorsanız, en az altı ay ile bir yıl arasında dik öğrenme eğrisine güvenebilirsiniz. Senelerce, Windows programlaması yapmanın standardı C dili olmuştur, ancak kısmen C++ dilinin nesne temelli olanakları ve kısmen MFC nedeniyle her geçen gün daha çok programcı C++ diline kayıyor. MFC, Windows programlamayı kolaylaştırır ve diğer türlü dikkate almayacağınız özellikleri ,uygulamanıza eklemenizi sağlayarak sizi daha güçlü bir programcı yapar. Ancak MFC de o kadar değildir ve onu kullanmak için Windows programlaması ve C++ 'ın öğrenme eğrilerini tırmanmanız gerekir. Windows'un kendisi C ile yazılmış olsa da, onun yadsınamaz nesne yönelimi vardır. Windows nesne temelli olduğundan, onu nesne temelli bir programla programlamak mantıklıdır. Bu amaç için, C++, C' den çok daha iyidir. C++, gördüğümüz gibi nesneleri, onların özellikleri ve davranışlarını simgelemek için güçlü araçlar olan sınıfları içerir.

Sınıf Kitaplığı Doğrudan C++ ile Windows için programlama yapabilirsiniz. Ancak çok daha etkili bir yaklaşım, sınıf kitaplığı kullanmaktır. MFC kitaplığı gibi bir sınıf kitaplığı, temel Windows nesnelerini simgelemek için iyi tasarlanmış ve iyice sınanmış sınıflar temin eder. Örneğin, pencereleri simgelemesi için CWnd sınıfı vardır ve çerçevesi olan pencereleri simgelemesi için CFrameWnd sınıfı vardır. Ayrıca, iletişim kutuları için CDialog, işlem düğme denetimleri için Cbutton, boya fırçaları için CBrush gibi sınıflara ek olarak MFC 'nin 6.0 sürümü itibarıyla 200 üstünde sınıfı vardır.

Makale:
Windows API' den MFC Sınıflarına C++ ve C++.NET dili Volkan Öner
  • Yazılan Yorumlar
  • Yorum Yaz
MAR
21
2003
ben henüz yeni bir programcıyım.sitenizi çok beğeniyorum ve sizden bir ricam programcılığa yeni başlayan benim gibi arkadaşlara tiyolar ve püf noktalrı tarzında bir bölüm açmanız.bu konuda sohbet odası veya üyeler arasında bir iletişim ağı oluşturmanız.özellikle makaleler harika.
MAR
16
2003
Bu makalede geçen cümleler "Şimdi Visual C++ 6.0 Öğrenin" kitabındaki cümlelere çok benziyor.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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