Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Windows API programlamada mesajların gönderildiği prosedür (veya fonksiyon). Bu fonksiyona parametre olarak gönderilen mesajları bir switch..case yapısı ile cevaplarsınız.

Windows API uygulamalarının geleneksel C uygulamalarından en önemli farkı budur. C ile yazdığınız programlarda fonksiyonlarınızı kendiniz çağırırken, Windows API uygulamalarında fonksiyonları çağıran gene Windows'tur. Elbette kendi fonksiyonlarınızı da yazıp kullanabilirsiniz ama sizin kodlarınızın çalışması window procedure'e gelen bir mesaj ile tetiklenir.

Bir Windows API uygulamasında window prosedürü genellikle aşağıdaki gibi görünür:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   switch (message)
   {
      case WM_CREATE:
         // kontroller create edilir.
         break;

      case WM_SIZE:
         // bu mesaj pencerenin boyunun değiştiğini belirtiyor.
         // pencerinin yeni boyutları
         // GetClientRect(WINDOW_HANDLE, ref RECT);
         // API fonksiyonuyla öğrenilebilir
         break;

      case WM_COMMAND:
         // bir menü öğesinin seçildiğini belirtir.
         // hangi menü öğesi olduğunu
         // LOWORD(wParam) makrosu ile öğrenilebilir.
         break;

      case WM_PAINT:
         // pencerenin ekrana çizileceğini belirten mesaj
         // bir şey çizmeniz gerekiyorsa GDI fonksiyonlarını kullanarak çizebilirsiniz.
         break;

      case WM_DESTROY:
         // pencere destroy ediliyor.
         PostQuitMessage(0); // windows'a çkış mesajı gönderelim. (Bu sefer mesajı gönderen biziz. :)
         break;

      default:
         // ilgilenmediğimiz tüm mesajları default işleme tabi tutulması için
         // Windows'a geri gönderelim.
         return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

Bu fonksiyonda çok sayıda farklı değişken tipi olması yeni kullanıcıları korkutur. Aslında isimleri farklı da olsa bu tipler typedef ile tanımlanmış aynı ya da benzer tiplerdir. Örneğin LRESULT, HWND, WPARAM, LPARAM tiplerinin hepsi int veya long'dur. WM_CREATE, WM_PAINT gibi mesajlar ise integer tipinde sembolik değişmezlerdir.
fizikci
17 Mart 2006 16:26
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1109 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen