ArÅŸiv Anasayfa API(Application Programming Interface)
Sayfalar: 1
Mesaj Penceresi (MesasageBox) Gönderen: FetihlerFatihi Tarih: 11 May 2006 15:12:43
: Belirtilmemiş
Bu yazı yazarın Delphi’nin .NET uyumlu versiyonunu konu ettiği kitabının Api fonksiyonları adlı bölümün bir kısmıdır. http://www.seckin.com.tr/urun.aspx?productID=6451


MesasageBox() Fonksiyonu

Windows’un MessageBox() fonksiyonundan yararlanıp mesaj verip kullanıcıdan onay almaya yarayan diyalog kutusunu ekrana getirebilirsiniz. Bu fonksiyonu yukarıda sözünü ettiğim her 3 teknik ile kullanmayı deneyeceğim. İlk olarak Borland.Vcl.Windows’u koda dahil edip aşağıda verdiğim kodu yazdım.



MessageBox() fonksiyonuna 1. parametre olarak ekrana getirilecek diyalog kutusunun handle numarası verilmektedir. 4. parametre olarak verilen 35, 32 ve 3 sayılarının toplamın¬dan meydana gelmektedir. 3 sayısı MessageBox tarafından ekrana getirilecek diyalog kutusunda Evet, Hayır ve İptal düğmelerinin olmasını sağlamaktadır. 32 ise diyalog kutusunda mesajdan önce soru(?) işaretinin olmasını sağlamaktadır.



Bu diyalog kutusunda tıklanan düğmeye göre MessageBox() fonksiyonu geriye sayısal bir değer göndermektedir. Bu değeri yakalamak için aşağıda verdiğim kodu hazırla¬dım.

:
Var
    Secim : LongInt;
    Ptr : HWND;
    Yazi : Graphics;
    Yazi_tipi : System.Drawing.Font;
    Nokta : PointF;
    Firca : SolidBrush;
Begin
   Secim := MessageBox(Ptr, 'Dosya Silinsin mi?','Silme Onayı', 35);
   Yazi := self.CreateGraphics;
   Nokta := PointF.Create(30, 40);
   Firca := SolidBrush.Create(Color.Blue);
   Yazi_tipi :=System.Drawing.Font.Create('Tahoma',14,FontStyle.Bold);
   If Secim = 6 Then
       Yazi.DrawString('Evet düğmesini tıkladınız', Yazi_tipi, Firca, Nokta)
   Else If Secim = 7 Then
       Yazi.DrawString('Hayır düğmesini tıkladınız', Yazi_tipi, Firca, Nokta)
  Else If Secim = 2 Then
       Yazi.DrawString('İptal düğmesini tıkladınız', Yazi_tipi, Firca, Nokta);
 end;

Bu kod işletilip diyalog kutusundaki düğmelerden birisi tıklandığında tıklanan düğmeye göre formun üzerine mesaj yazılır. Bu örnekte kullanılan System.Drawing’de tanımlı olan Graphics sınıfı hakkında daha önce bilgi verilmişti.



Şimdi ise Borland.Vcl.Windows’tan yararlanmadan bu API fonksiyonunu kullanacağım. Bu amaçla fonksiyonu formu temsil eden Unit’in Implementation bloğunda aşağıdaki gibi deklare ettim. Ekran görüntüsü verilen koda göre “user32.dll” dosyasında tanımlı olan MessageBox fonksi¬yonu 4 parametreye sahiptir ve geriye LongInt bilgi göndermektedir.



Fonksiyonu bu şekilde deklare ettikten sonra yukarıda verdiğim kodda küçük bir değişiklik yaptım. Yukarıda verdiğim kodda bu fonksiyonun 1. parametresi HWND tipindeydi.  HWND tipi Borland.Vcl.Windows’de tanımlı olduğu için 1. parametrenin LongInt tipinde olmasını sağladım.



Şimdi ise bu fonksiyonu C#’taki gibi deklare edip System.Runtime.InteropServices’den  yararlanıp kullanacağım. Bu Namespace’i koda dahil ettikten sonra deklarasyonu aşağıdaki gibi yaptım.  Bu şekilde deklare edilen fonksiyon istenildiği gibi kullanılabilir.