seo windows fonksiyonu

2 Temmuz 2013 Salı Unknown 0 yorum

Get WindowRect Fonksiyonu


            Bu fonksiyon herhangi bir pencerenin koordinat bilgilerini elde etmekte kullanılır. Her zaman pixel birimiyle çalışır ve koordinat sistemi her zaman desktop'ın sol üst köşesine göredir. Prototipi:



            GetWindowRect fonksiyonunun orijin noktası bazı API fonksiyonlarıyla örtüşmeyebilir. Örneğin en tipik problem şudur: Bir alt pencere belli bir miktar öteleneceği durum.


Desktop orijinli bir noktanın herhangi bir pencerenin çalışma alanına göre koordinat  dönüşümünün yapılabilmesi için üst pencerenin desktop'a göre konumunun da bilinmesi gerekir. Bu dönüştürmeyi otomatik olarak yapan iki API fonksiyonu vardır: ScreenToClient, ClientToScreen.Prototipler:

            ScreenToClient fonksiyonunda fonksiyonun birinci parametresi pozisyonu belirlenecek pencerenin handle değeridir. İkinci parametre dönüştürülen koordinat bilgisidir.
            ClientToScreen fonksiyonunun birinci parametresi ilgili pencerenin handle değeri, ikinci parametresidesktop'a göre yeni parametre bilgileridir. Fonksiyonların birinci parametreleri dönüşümü yapılmak istenen pencerenin handle değeridir. Örneğin bir pencere içerisindeki (8,10) koordinatları pencerenin çalışma alanına göre konum belirtsin. Biz bu noktayı desktop'a göre konum belirtecek hale dönüştürmek istiyorsak fonksiyonu şöyle kullanmalıyız:


Pencere başlığı söz konusu ise GetClientRect ile aluınan koordinat pencerenin sol üst köşesine ilişkindir.

Popup Menü İşlemleri

            Herhangi bir yerde görüntülenebilen menülere popup menü denir. Programın ana menüsü aslında bir menü çubuğuna geçirilmiş bir grup popup menüden oluşmaktadır. Popup menünün bir elemanı başka bir popup menü olabilir. Popup menü elemanları aktif, pasif, gri ışıklı yapılabilir. Ya da herhangi bir menü elemanı "checked" yapılabilir. Popup menüler Windows programlarında genellikle mouse'un sağ tuşuna basıldığında görüntülenirler. Ya da genel olarak menü çubuğuna iliştirilmiş olarak bulunurlar. Popup menülerle çalışabilmek için önce işletim sisteminin popup menüsü için bir veri yapısı tahsis etmesi gerekir. Yani popup menüler normal bir handle mekanizmasındaki gibi çalışırlar. Bir popup menünün açılabilmesi için dört adımdan oluşan şu işlemlerin yapılması gerekir:

1. CreatePopupMenu API fonksiyonu ile popup menü için bir handle alınır.
2. AppendMenu ya da InsertMenu API fonksiyonlarıyla menüye eleman eklenir.
3. TrackPopupMenu API fonksiyonuyla popup menü görünür hale getirilir. 
4. Menü için alınan handle(yani işletim sisteminin tahsis ettiği bölge) DestroyMenu API fonksiyonuyla sisteme iade edilebilir.

            Genellikle CreatePopupMenu ve menüye eleman ekleme işlemleri WM_CREATE mesajında yalnızca bir kez yapılır. Bu durumda menü WM_DESTROY mesajında bırakılabilir(WM_DESTROY zaten programın bitmesi sırasında gönderildiğine göre bu işleme gerek olmayabilir). TrackPopupMenu fonksiyonu ise program içerisinde herhangi bir yerde, örneğin mouse'un sağ tuşuna basıldığında çağırılabilir.

Menülere Eleman Eklenmesi ve Insert Edilmesi


AppendMenu Fonksiyonunun Parametrik Yapısı


            Fonksiyonun birinci parametresi popup menünün handle değeridir. İkinci parametre menü elemanı olarak eklenecek bilginin nasıl bir bilgi olduğunu belirtir. Girilecek parametre değerlerinden bazıları şunlardır:

MF_STRING
Menü elemanı olarak bir yazı görüntülenecektir.
MF_BITMAP
Menünün bir elemanı bitmap olabilir. Bunu yapabilmek için bitmap çizilir ve kaynak dosyada belirtilir. Daha sonra LoadBitmap fonksiyonuyla yüklenir ve elde edilen handle değeri fonksiyonun üçüncü parametresinde verilir.
MF_CHECKED
Menü elemanı yanında checked şekliyle yaratılır.
MF_DISABLED
Menü elemanı pasif hale gelir. Pasif duruma gelmiş menü elemanı seçilemez, yani seçilmeye çalışılsa mesaj göndermez. Ancak rengi gri değildir.
MF_GRAYED
Menü elemanı pasif hale getirilir, rengi de gri gözükür. Böyle oluşturulmuş menü elemanı disabled menü elemanını işlevsel olarak kapsar. Her ikisinde de menü elemanı seçilemez, ancak grayed'de aynı zamanda elena gri olarak gözükür.


            AppendMenu fonksiyonunun üçüncü parametresi menü elemanı seçildiğinde WM_COMMAND mesajına gönderilecek menü ID değeridir. Eğer ikinci parametre MF_POPUP ise üçüncü parametre olarak popup menünün handle değeri girilmelidir. Dördüncü parametresi menü elemanı olarak görüntülencek yazıdır.

TrackPopupMenu Fonksiyonu



            Fonksiyonun birinci parametresi görüntülenecek popup menünün handle değeridir. İkinci parametre popup menünün hizalanma biçimdir. Üçüncü ve dördüncü parametreler menünün görüntüleneceği koordinat bilgisini içerir. Ancak bu koordinat bilgisi desktop orijinlidir. ClientToScreen API fonksiyonuyla koordinat bilgisini dönüştürmek gerekebilir. Beşinci parametre kullanılmamaktadır, sıfır girilmektedir. Altıncı parametre popup menünün üzerinde görüntüleneceği pencereninin handle değeridir. Aslında bu parametre WM_COMMAND mesjaının gönderileceği pencere fonksiyonunu  belirlemekte kullanılır. Fonksiyonun son parametresi kullanılmamaktadır, NULL girilmelidir.

Popup Menülerde Seçilme İşlemi


            Popup menüde bir seçim yapıldığında tıpkı normal ana menü işlemlerinde olduğu gibi WM_COMMAND mesajı LOWORD(wParam) menü elemanının ID değeri olacak şekilde çağırılır. Menü elemanının "checked" ya da disabled durumlarının kontrolü otomatik olarak yapılmaz, bu mesajlarda yapılmalıdır.


InsertMenu Fonksiyonu



             Bu fonksiyon bir menü elemanını popup menünün herhangi bir yerine ekleyerek yerleştirir. Fonksiyonun birinci parametresi ekleme işleminin yapılacağı popup menü handle değeridir. İkinci parametresi insert edilecek pozisyon numarasıdır. Bu değer sıfırdan başlar. Bu değer -1(0xFFFFFFFF) ise sona ekleme işlemi yapılır. Üçüncü parametre insert işleminin hangi ölçüte göre yapılacağını belirtir. MF_BYPOSITION insert işleminin ilk eleman sıfır olmak üzere pozisyon numarasına göre yapılacağını belirtir. Dördüncü parametre menü ID değeri ya da popup menü handle değeridir. Son parametre menü yazısını belirtir.

Menü Elemanlarının "Checked" Yapılması


            Menü elemanlarının checked ya da unchecked yapılması CheckMenuItem API fonksiyonuyla yapılır.


            Fonksiyonun birinci parametresi check işleminin yapılacağı popup menü elemanıdır. İkinci parametre check edilecek menü elemanının pozisyon numarası ya da ID değeridir. Check edilme işleminin neye göre yapılacağı üçüncü parametrede tespit edilir. Üçüncü parametre MF_CHECKED, MF_UNCHECKED biçiminde girilebilir. Bu değerlere ayrıca MF_BYPOSITION veya MF_BYCOMMAND | operatörüyle kombine edilebilir. Örneğin MF_CHECKED | MF_BYPOSITION. Default olarak bu parametre MF_BYCOMMAND seçilmiş gibi işlem yapılır. Fonksiyonun geri dönüş değeri menü elemanının önceki durumuna ilişkindir.
            Bir menü elemanının enable ve disable yapılması da benzer biçimde EnableMenuItem fonksiyonuyla yapılmaktadır

0 yorum: