Grafik kullanıcı arayüzleri oluşturmak için öneriler. "Veritabanı ve Veritabanı Yönetim Sistemleri" disiplininde bir eğitim biriminin geliştirilmesi

  • 29.07.2019

Bilgi tabanında iyi çalışmanızı göndermeniz basittir. Aşağıdaki formu kullanın

Öğrenciler, lisansüstü öğrenciler, bilgi tabanını çalışmalarında kullanan genç bilim adamları ve çalışmaları size minnettar olacak.

tarafından gönderildi http://www.allbest.ru/

tarafından gönderildi http://www.allbest.ru/

Rusya Federasyonu Eğitiminin Federal Ajansı

Devlet Eğitim Kurumu

yüksek Profesyonel Eğitim

Rus devlet insani Üniversite

Bilgi Bilimleri Enstitüsü ve Güvenlik Teknolojileri Enstitüsü

Genel Bilişim Bölümü

ÖLÇEK

Bilgi teknolojisine göre

Grafik arayüzleri ve gelişmelerinin araçları

Lisicatokes Konstantin Viktorovich

Harici 3 yıllık çalışma

(4 yıllık çalışma çalışmaları)

B grubu (bilgi küresi)

Bilim danışmanı,

ph.D., Öğretmen: Machina E.A.

Moskova 2005.

Plan

Giriş

Sistem X penceresi.

Genel sistem sistemiX pencere.

X Toolkit Intrinsic Kütüphanesi (XT) kullanarak programlama

XT nesneleri, sınıflandırmaları

Bilgi kaynakları

Giriş

1959'da ilk kez, STRECHI şehrinin bilgilerinin işlenmesi için UNESCO konferansında, bilgisayarlarda görevleri çözerken zaman ayırma modunu önerdi - bundan sonra, etkileşimli hesaplamaların başlangıcını saymak için gelenekseldir. Ve bu nedenle, insan ve makine arayüzünün bir incelemesi. Bilgisayarların gücü büyüdükçe, yazılımın yazılım bileşeninin maliyetleri büyüdü. Araba kullanımının verimliliği, iş istasyon piyasasına hızlı erişim sırasında, grafiklerle etkileşimi birleştirerek ağırlaştırılmıştır. Verimlilik teriminin değerini değiştirdi. Bu nedenle, araştırma ve kullanıcı arayüzü geliştirme maliyeti haklıdır.

Herhangi bir uygulama yazılımı geliştirmek, kural olarak, bir kullanıcı arayüzü oluşturma anlamına gelir. Modern kullanıcı arayüzlerinin çoğu, benzer fikirlere dayandığından ("farenin", nesnelerin oryantasyonu, grafiklerin vb. Aktif kullanımı, nesneler oryantasyonu, grafik vb. Ardından, bu tür "standart" arayüzleri veya daha doğrusu temelleri oluşturmak için tasarlanmış yardımcı yazılımın bir olasılık ve gereklilik geliştirilmesi vardır.

Öte yandan, bu yazılımı gerektirecek olan donanım ve sistem platformlarının çok çeşitliliği, kaynak kod seviyesinde toleransını gerektirir. Yukarıdaki gereklilikler mantıksal olarak, kullanıcı arayüzlerini oluşturmak için birleşik yazılım araçlarını taşıma fikrine yol açar veya, eğer son uygulama yazılımını, sorumlu olan sistem (modül, blok) (kafa, yedekler, hizmet, yönetir) kullanıcı arayüzü.

Şemaya göre bu tür araçları (kullanıcı arayüzü araçları) düşünebilirsiniz:

* Metin ekran sistemleri (lanet, ncurse, vb.).

* Grafik ekran sistemleri.

* Çok bölgeli sistemler (WMS):

* sembol odaklı (metin);

* Grafik;

* UI Toolkits.

* geleneksel;

* nesne odaklı;

* UIDS - Kullanıcı Arabirimi Geliştirme Sistemi - Kullanıcı Arabirimi Geliştirme Sistemi (Toolkit);

* UIMS - Kullanıcı Arabirimi Yönetim Sistemi - Kullanıcı Arabirimi Yönetim Sistemi (Yazılım Modülü - Nihai Ürünün Kompozit Bölümü Uygun UID'lerle birlikte);

* UIDE - kullanıcı arayüzü geliştirme ortamı - kullanıcı arayüzü geliştirme ortamı.

Bu şema sistematik bir sınıflandırma talep etmiyor, bunun yerine sadece bir liste.

Halen, yöntemlerin geliştirilmesine ve UIMS - Kullanıcı Arabirimi Yönetim Sisteminin adını alan sistemler içindeki araçlar oluşturulmasına büyük çaba sarf eder.

SistemX pencere.

X pencere. ya da sadece X. - Bu, başlangıçta UNIX işletim sistemi çalışan bilgisayarlarda grafiksel bir kullanıcı arayüzü oluşturmak için bir sistemdir. X MIT'de (Masachti Teknoloji Enstitüsü) yaratıldı. Şu anda, 11.6 (x11r6) sürümünü çoktan serbest bırakılmıştır ve 7 sürüm 7'nin serbest bırakılması için aktif olarak hazırlanır.

X penceresinin bir özelliği mimarisidir - istemci-sunucu şemasına göre oluşturulur. X istemcisinin ve X sunucusunun etkileşimi, ilgili uygulama seviyesi protokolü - X-protokolünde gerçekleşir. X pencere, hem yerel UNIX -Socket hem de herhangi bir ağ, örneğin TCP olarak kullanılabilecek kullanılmış nakliyeye kayıtsızdır. Bu, X-istemcisinin ve X sunucusunun "yaşayabileceği" ve farklı bilgisayarlarda, yani Program, başka bir bilgisayarın ekranında grafiksel bir bilgi girebilir ve X-Client mimarisinde ve X sunucusundaki farklılıklar herhangi bir rol oynamıyor - bu standart X-protokolü tarafından sağlanır. Sistem, makine ekranına grafik çıkış sağlar, klavye ve fare gibi giriş aygıtlarından sinyalleri algılar ve programlarını aktarır. Çıkış cihazının birden fazla ekran olabileceğine dikkat edilmelidir. X, bunlardan herhangi birine bir çıktı sağlar. Tüm bunlar: ekran (ekranlar), giriş aygıtları (klavye, fare) X pencere açısından denir - ekran.

X pencere mimarisi nedeniyle, örneğin TCP / IP ağlarında (İnternet) dağıtılmış bilgisayar sistemlerinde serbestçe kullanılır.

X, kullanıcının (ekranın) aynı anda birçok programla iletişim kurmasını sağlar. Onların çıktısına karıştırılmaz, sistem "sanal alt ekriptler" ekranı - Windows'u oluşturur. Her uygulama (kural olarak) sadece penceresine (veya pencerelerinde) çizer. X, Windows oluşturmak için bir takım araçlar sağlar, ekranda onları hareket ettirin, boyutlarında değişiklikler, içlerinde çıktı vb.

Kural olarak, programların bir dizi yapılandırma parametresi var - kaynaklar var. Pencerelerin rengi, çeşitli metin yazı tipi parametreleri (ligatür, KEGL, vb.) Ve daha fazlası olabilir. Sistem, uygulama kaynaklarını belirlemenin, bunları yönetmenin bir yolunu standartlaştırır, bunlarla çalışmak için bir dizi prosedür içerir. Bu fonksiyon seti "Kaynak Yöneticisi" (XRM - X Kaynak Yöneticisi) olarak adlandırılır. Program parametrelerinin "depolama" olarak adlandırılır.

X İşlevleri Etkinlik Yönetilebilirliğine göre ideolojiye (Etkinlik odaklı mimarlık) - Programlar arasında ve programlar ile dış ortam arasında etkinlikler arasında iletişimi düzenler. Bir olay, sistemde veya eylemlerde meydana gelen değişiklikleri tanımlayan bir bilgidir. Etkinlik tanımlayıcısı tarafından, bunun hakkında bilgi alabilirsiniz - olayın görünümü, özellikleri, nerede olduğu, vb.

Genel Cihaz X Penceresi

Sistem X pencere. Bir dizi program ve kütüphaneyi temsil eder. "Kalp" özel bir programdır - X-Server. Bu, ekranın eklendiği bilgisayarda olacak bir yere sahip olan ayrı bir UNIX-PROCESS'dir. Belirli bir ekipmanın özelliklerini bilen sunucudur, örneğin ekranda ilkel bir grafik nesneyi getirmenin gerekli olduğunu biliyor. Klavye ve fareden gelen sinyalleri nasıl algılayacağını ve işleyeceğini biliyor.

Sunucu, istemci programlarıyla iletişim kurar, bunları gönderir veya onlardan veri paketleri alıyor. Sunucu ve istemci farklı makinelerdeyse, veriler ağ üzerinden gönderilir ve eğer bireyde ise, dahili kanal kullanılır. Örneğin, sunucu kullanıcının fare düğmesine bastığını tespit ederse, uygun paketi (etkinlik) hazırlar ve bu da düğmeye basıldığında bir fare imleci bulunduğu istemciye gönderir. Tersine, eğer program ekranda görüntüleniyorsa, gerekli veri paketini oluşturur ve sunucuya gönderir. Açıkçası, bu etkileşimin bir tanımı, paket formatları vb. ve yukarıda belirtilen X protokolünün özelliklerini oluşturur.

Ancak, X için programlamak için, sunucunun ve X-Prodocol'in ayrıntılarını bilmek gerekli değildir. Sistem, programların X "yüksek seviyede" hizmetlerine erişimi olan standart bir prosedür kütüphanesi sağlar. Böylece, bir nokta görüntülemek için, gerekli parametreleri bu şekilde geçirerek uygun standart prosedürü arayın. Bu prosedür, tüm çalışmaları veri paketlerinin oluşumu ve bunları sunucuya iletecektir.

X pencere

Daha önce de belirtildiği gibi, pencere X'te temel bir kavramdır. Genellikle, genellikle program-istemcinin sistemi tarafından sağlanan ekrandaki dikdörtgen alanı temsil eder. İkincisi, grafik bilgileri çıkarmak için bir pencere kullanır.

Pencerenin bir iç ve kenarı vardır. Pencerenin ana özellikleri, içeriğin genişliği ve yüksekliği, ayrıca kenarın genişliği (kalınlığı). Bu parametreler pencere geometrisi denir.

Koordinat sistemi, başlangıcı, pencerenin sol üst köşesinde (daha kesin olarak - içinde) olan her pencere ile ilişkilidir. X ekseni sağa yönlendirilir ve Y ekseni aşağı. Her iki eksende de ölçüm birimi - piksel.

X Penceresi, programın aynı anda birkaç pencere oluşturmasını sağlar. Bazılarının "ebeveynler" olduğu ve diğerleri "torunlar" olduğu hiyerarşiye bağlanırlar. Her ekrandaki sunucunun kendisi, diğer tüm pencerelerin en üst "ebeveyni" olan bir temel pencereyi oluşturur. Bu pencerenin "kök" (kök) denir.

Pencere yönetimi

Windows ekranda, birbirlerini örtüşen ekranda bulunabilir. X penceresi, istemci programını kullanan bir dizi fon vardır. Windows'un boyutunu ve ekrandaki konumlarını değiştirebilir. Sistemin bir özelliği, pencereleri bir fare veya klavyeyle kontrol etmek için yerleşik yetenekleri yoktur. Uygulamayı mümkün kılmak için özel bir istemci - pencere yöneticisine (Pencere Yöneticisi) ihtiyacınız var.

Ancak, yönetici pencereleri doğru kontrol edemez, hiçbir şey onları bilmiyor. Windows, bir pencere yöneticisi sağlaması gereken çeşitli özelliklere sahip olabilir: Örneğin, birçok durumda, Windows başlıklarına sahip olmak uygundur, diğerlerinde pencerenin daha az yapılamaması istenir veya tam tersi, belirli bir boyutta daha fazlasıdır. Pencere ikonunda "kapalı" olabilir ("simge") - bu durumda, yönetici hangi simgeyi kullanacağınızı ve nasıl aranacağını bilmelidir. Müşteriler, Yöneticiyi, Windows ile ilgili dileklerini iki şekilde bilgilendirebilir:

* Pencerenin başlangıç \u200b\u200bpozisyonunda, geometrisi, minimum ve maksimum boyutlarda vb. Üzerindeki bir X pencere, "Öneriler" (İpuçları) oluştururken;

* "Özellikler" mekanizması arasındaki entegre iletişim yöntemini kullanabilirsiniz.

X pencere grafik özellikleri

X pencere sistemi raster ekranlarda çalışmak üzere tasarlanmıştır. Piksel üzerindeki bit sayısı, ekranın derinliği veya kalınlığı denir. Tüm piksellerde aynı sayılarla (aynı ikili deşarjlar) bitler, paralel bir ekran gibi bir düzlem oluşturur. Renk düzlemi denir. X, geri kalanını etkilemeden herhangi bir renk düzlemine (ler) çekmenizi sağlar.

Piksel değeri, ekrandaki noktanın rengini doğrudan belirtmez, ancak hücre numarasını, renk değerinin depolandığı özel bir dizide ayarlar, yani. Piksel değeri, geçerli paletteki renk numarasını ayarlar.

X, grafiksel primitiflerin çizilmesine izin veren büyük bir prosedür grubuna sahiptir: puan, çizgiler, yaylar, metin; Keyfi form alanları ile çalışmak.

"Özellikler" ve atomlar

X penceresi, müşteri programları arasında bilgi sağlamak için yerleşik araçlara sahiptir. Bu "Özellikler" mekanizmasını kullanır. "Mülkiyet", örneğin, tüm Müşteriler için mevcut bir pencere ile ilişkili bir bilgi yapısıdır. Her özelliğin bir adı ve benzersiz bir tanımlayıcıya sahiptir. Genellikle, özellik adları büyük harflerle kaydedilir. Atomlar, istemciler ve X sunucusu arasında gönderilen bilgilerin hacmini azaltmak için özelliklerin içeriğine erişmek için kullanılır.

X'te, mülkün adını benzersiz bir atomda çevirmenize ve aksine, atomdaki gerekli verileri elde etmek için bir dizi prosedürler sağlanmıştır.

Bazı özellikler ve karşılık gelen atomlar önceden tanımlanır ve sunucu başlatma sırasında oluşturulur.

Kütüphane ProgramlamaX Toolkit Intrinsic (XT)

X pencere sisteminde programlamayı kolaylaştırmak için birkaç paket oluşturuldu. DE FICKO standardı şu anda standart sistem kaynağına dahil olan X Toolkit Intrinsics (XT) kütüphanesidir. XT program başlatılmasını ve Windows'u basitleştirir. Ek olarak, kütüphane, kullanıcılarla iletişim kurarken programlar tarafından kullanılan nesneleri (kontrol elemanları) oluşturmak için araçlar içermektedir. XT açısından kontrol elemanının widget denir.

Şu anda, Athena, OSF / Motif, açık görünüm gibi paketin temelinde kontrol elemanlarının (nesnelerin) çeşitli setleri (setleri) uygulanır. Bu setler XT ile birlikte, arayüzler oluşturmak için uygun bir araç olarak kullanılır. Yalnızca X penceresinin kasası kütüphanesini kullanarak kendi başvurusunu yazarken, programcının manuel olarak gerçekleştirilmesi gerektiğini varsayalım rutin işleri üstlenirler.

Temeller xt.

Özel Grafik Arabirim Programlama

Xt. Nesneler

XT Packet, kontrol elemanları oluşturmak için bir tabandır - widget-s (boşluklar). XT widget anlamında, alanları elementin tanımlayıcısını, penceresinin tanımlayıcısını, varsa ve çok daha fazlasını içeren bir veri yapısıdır. Böyle bir nesnenin öznitelikleri kaynak olarak adlandırılır. Widget kaynakları, örneğin, penceresinin rengi, pencere sınırının rengi, çıkış metninin yazı tipi, vb.

Her nesne önceden tanımlanmış sınıflardan birine aittir (widget sınıfı). Sınıf, nesne yönelimli programlama duyusuna aşina olduğu anlaşılıyor, yani sınıf: Sınıf aynı özelliklere sahip birçok örnek (nesneler) görülebilir. XT sınıfları bir hiyerarşi oluşturur.

Çalışma sırasında, program nesneleri kendileri oluşturur (sınıflar - widget örnekleri). Her biri bir hiyerarşiyi temsil eden agregalar oluştururlar. Her hiyerarşi her hiyerarşi ağaç nesneleri (widget ağacı) denir. Ağacın kökü, özel bir sınıfın alt sınıflarından birine ait, mutlaka widget'dır. Nesnelerin nesnelerinin birinci widget'ı A ve B varsa, birinciden kökünden daha yakın, daha sonra A, B ve B kablosu (veya "bağlı ortaklık) için bir ebeveyn nesnesidir (" ebeveyn ") ) A. için kabuk bir nesnedir, bu ağaç nesnelerinin diğer tüm widget'ları için ana widget'tır. Programı ve pencere yöneticisini etkileşim yapan kişidir.

Açıklanan widget hiyerarşisi, X penceresinin özelliği olan pencereleri arasındaki ilişkiye karşılık gelir. Ek olarak, başka bir hiyerarşi nesnelere bindirilir. Gerçek şu ki, işlem sırasında bazı nesneler başkalarını yönetebilir. Örneğin, belirli bir nesnenin alt nesneleri varsa, o zaman geometriyi değiştirirse, torunlarının geometrisini otomatik olarak yeniden oluşturabilir. Bağlantının widget arasında kurulduğundan emin olmak için - "Yönetim" bağlantısı. Her nesnenin alt metrede kendilerine bir veya daha fazla "yönetilen" olabilir.

Programın XT kullanarak etkileşimi için, widget ve x penceresi ile üç mekanizma vardır.

* Geri çağırmak

Prosedürler ("geri arama prosedürleri"). Herhangi bir sınıf için, ona ait nesnelerin tepki verilmesi gerektiği konusunda bir dizi eylem belirlenir. Örneğin, herhangi bir sınıf için, widget'ın imha edilmesine bir tepki vardır. Eylem yapıldığında, bir zorluk veya standart XT işlevi veya program tarafından sağlanan bir veya birkaç prosedür var. Bu tür fonksiyonlar geri arama işlemleri denir ve sadece geri arama.

* Aksiyon.

-Processorss. Program, belirli bir olaya (olay grubu) XT'den gelen bir reaksiyona girebilir. Bir olay meydana gelirse, XT, uygun işlevi arar ve arar.

* Etkinlik sahipleri.

- Etkinlik sahipleri. Bu yöntem öncekine benzer, ancak daha hızlı ve daha az esnek. Yalnızca basit (tek) olaylara tepki vermenizi sağlar, ancak dizilerinde değil.

Genel Programlama Şeması

X'te çalışan programlar, örneğin: Sunucu ile iletişim kurun, pencere yöneticisi için gerekli özellikleri ve diğer birçok adımda ayarlanmış bir dizi standart işlem yapmalıdır. XT kullanılırsa, tüm bunlar bir prosedürle yapılır - XTinitialize (). X penceresinin Paket Yöneticisi, Kaynak Yöneticisi (((\\ Dönem Kaynak Yöneticisi), diğer gerekli işlemleri gerçekleştirir. Xtinitialize () (veya xtappinitialize ()) için temyiz, diğer tüm arama prosedürleri XT. XTinitialize ( ) Programın ağaç nesnelerinin kökü olarak kullanılabilecek kabuk-widget tanımlayıcısını döndürür. Kural olarak, program sınıfının adı programın adıyla çakışıyor, yalnızca bir büyük harfle başlar. Kaynak Yöneticisi Kaynak veritabanındaki parametrelerini aramak için programın adını ve sınıfını kullanır.

Her program komut isteminde bazı parametreler ayarlayabilir. XT'de, program başlarken iletilebilecek "standart" parametreleri tanımlanmıştır. Ek olarak, bu uygulamanın karakteristiği olmayan standart olmayan parametreler komut isteminde bulunabilir. XTinitialize () Komut satırını tarar ve ilgili veri değerlerini veritabanına yerleştirir.

Başlatıldığında, program bağlamı da oluşturulur - uygulama hakkındaki tüm bilgileri depolayan bir yapı. Bağlam, programı işletim sistemindeki çeşitli modifikasyonların etkisinden korumak için tasarlanmıştır. Xtinitialize () bazı standart içerik (varsayılan içerik) oluşturur, ancak yine de, dördüncü sürüm X ile başlayarak, programın her biri için ayrı bir "Kişisel" bağlam oluşturmanız önerilir, bunun için XT'nin kullanması gerekir. xtappinitialize prosedürü () () () () xtinitialize () yerine). Burada, XT'deki uygulamanın her zamanki gibi, ancak birkaç "üst düzey" nesnelere sahip olamayacağını unutmayın.

Başlatma işleminden sonra aşağıdakiler, programın kontrol unsurları oluşturma aşamasıdır, aralarındaki ilişkiyi, çeşitli etkinliklere reaksiyonların görevi (olay işleyicilerinin ve diğer benzer nesnelerin tescili). Bu, farklı şekillerde yapılabilir, örneğin, örneğin bir XTCreateWidget () nesnesi nesnesi oluşturmak için, bir nesneyi ebeveyn - XTManageChild () prosedürü için etkinlik işleyişlerini kaydetmek için bir nesne - XTManageChild () prosedürüne () vermek üzere kullanmaktır. , vb. vb.

Tüm program nesneleri iş için hazırlandıktan sonra grafik gösterimleri (örneğin, ilgili widget pencereleri, XtrealizeWidget () prosedürü ekranında gösterilir.

Bir sonraki adım ana döngüdür - olayları alma ve gönderme döngüsü. Xtmainloop () prosedürünü arayarak uygulanır (xtappmainloop ()).

Yalnızca ana x kütüphanesinin (XLIB) prosedürlerini kullanan bir program, her bir oladaki her olay (olay kuyruğundan açık bir arama, örneğin xnextextent () veya xpeeeptent ()) tarafından kabul edilmelidir ve buna göre reaksiyona girmelidir. Windows birkaç kez varsa, daha sonra bazı eylemler üretmeden önce, hangi olayın pencerelerinden oluştuğunu belirlemek gerekir ve bu olayın işlenmesiyle hiyerarşi hangi düzeyinde gerçekleşeceğine (bu nesnenin bu nesneyi yerine getirileceği) gereklidir. Ebeveyn?). Bütün bunlar oldukça sıkıcı.

XT tüm rutin işlerini kendisi üzerinde alır. Xtmainloop () başka bir olayı alır ve amaçlandığı pencereyi tanımlar. İlgili widget pencere boyunca bulunur. İkincisi için olay işleyicisi, eylem-işlemci veya geri arama, gerçekleşen olaya tepki için kayıtlıdır. Böyle bir ağ varsa, denir. Yukarıda açıklanan mekanizma olay postalaması denir.

Xtmainloop () () (xtappmainloop ()) Programı pencere yöneticisinin talebi üzerine otomatik olarak tamamlar.

XT nesneleri, sınıflandırmaları

XT, program tarafından kullanıcıyla iletişim kurmak için kullanılan nesneleri oluşturmak için bir dizi araç sağlar ve genel durumdaki dış dünyanın geri kalanında.

Oluşturulan her widget, belirli bir sınıfın temsilcisidir. XT ve Paketleri, OSF / Motif, Athena, TK / TCL, Açık Bak, vb. Gibi, çok sayıda sınıfa sahiptir. Standart kütüphanelerde sağlanmayan yeni widget oluşturmak, genellikle bir zaman zaman çalışması olan, ilgili sınıfın oluşturulmasını (tanımlarını) gerektirir.

Her sınıfın tüm örneklerinde ortak olan bir dizi sabit özelliğe sahiptir (örneğin, bir geri arama listesi). Bu özelliklerin nesnelerindeki değerleri kendileri değişebilir.

Tüm XT sınıfları bir hiyerarşi oluşturur. Hiyerarşinin en üstüne D sınıfı D sınıfından daha yakınsa, B, B'nin B tabanına denir ve D, B için bir türev sınıf (veya alt sınıf) olarak adlandırılır.

Subclasses, tüm temel sınıflarının özelliklerini devralır. Bu, sınıfın bir örneğinin sadece sınıfının değil, aynı zamanda tüm temel sınıfların niteliklerini de içerdiği anlamına gelir.

Programlarda, her sınıf, ilgili veri yapısını gösteren bir değişkenle tanımlanır. Bu değişken, işaretçiyi sınıfa denir. Bu yapının verileri XT başlatma ile doldurulur.

Temel Sınıflar Widget:

Nesne. Tüm nesnelerin ağacının kökü olarak kullanılan soyut sınıf (kendi nesnesini oluşturmayan sınıf). Tek alt sınıfı içerir:

Rektobj. Çeşitli nesnelerin işleyişi için gerekli bazı ortak özellikleri tanımlamak için kullanılan bir soyut sınıf (örneğin, pencereleri olmayan nesneler için). Bir alt sınıf içerir:

Çekirdek. Widget sınıfları Ağaç kökü pencereli. Bu sınıf, örneğin widget penceresinin boyutu ve ekrandaki konumu gibi tüm nesneler için ortak özellikleri belirler. Bir alt sınıf içerir:

Kompozit. Bu sınıfla ilgili Widget, diğer nesnelere ebeveyn olabilir. Kompozit sınıfın kopyaları, artışlarının davranışlarının aşağıdaki özelliklerini tanımlar:

* "ÇOCUK" widget'ının konumunu bir veya başka bir kısıtlamaya göre belirtir;

* Subline tarafından kullanılan hafızayı mahvederken (kompozit widget yok edildiğinde, tüm "torunlar") tahrip edilecektir;

* Bağımlı widget'ın Windows ekranındaki görünümünü yönetir;

* Nesneler arasında giriş odasının iletimini kontrol eder.

Sınıf Kompozit Alt Sınıflar içerir:

Kısıtlama. Bu sınıf, temel sınıfın daha da genişlemesidir. Kopyaları, torunlarının boyutunu ve yerini kontrol etmek için ek fırsatlar var. Örneğin, kobliler özel bir sıraya yerleştirilebilir: bir üst üste, sütun halinde vb.

Kabuk. Bu, Windows Yöneticisi ile etkileşime geçmek için tasarlanmış özel bir sınıftır. Bu sınıftan widget sadece bir soyundan olabilir. Shell sınıfı alt sınıflar içerir:

Geçersiz kılan. Bu, kabuk sınıfının önemli bir alt sınıfıdır. Bu sınıfın widget penceresi için, Override_Rredirect özniteliği True, yani Pencere Yöneticisi bunu kontrol etmiyor. Kural olarak, bu sınıfın pencerelerinin pencereleri Pencere Yöneticisi (başlık, çerçeve, standart düğmeler) tarafından eklenen aksesuarlara sahip değildir ve çoğunlukla çeşitli tiplerde bir menü oluşturmak için kullanılır.

Wmshell. Bu, Windows yöneticisi ile etkileşime geçmek için gereken ek alanlar içeren kabuk sınıfının özel bir alt sınıfıdır. İçerir:

Vendorshell. Bu sınıf, özel Windows yöneticileri ile etkileşimi etkinleştirmek için tasarlanmıştır. Bu sınıf alt sınıflar içerir:

Toplevelshell. Bu sınıfın widget'ı genellikle program nesnelerinin kabuk nesneleri olarak kullanılır. Bu içerir:

Applicationshell. Program, kural olarak, yalnızca Applicationshell sınıfına ait bir örnek.

Transentshell. Bu sınıf, Windows yöneticisi ile önceden farklı etkileşim özelliklerinden farklıdır. Bu sınıfın widget penceresi en aza indirilemez (bir simgeye dönüştürülür). Ancak piktogram, TransientShell sınıf nesnesinin ebeveynini çevirirse, widget penceresi ekrandan geri çekilir. GeçiciShell sınıfı diyaloglar oluşturmak için kullanılır.

Widget sınıflarının her biri ve sonuç olarak, temelinde oluşturulan nesneler, yeterince çok sayıda parametreye sahiptir. XT açısından "Kaynaklar" olarak adlandırılırlar. XT, onlarla çalışmak için çok çeşitli araçlar sunar.

Ek özellikler XT.

XT, asenkron modda dosyalarla (ve genel olarak harici cihazlarla) çalışmak için bir mekanizma sağlar. Bir uygulama, veri hazırlığı olarak adlandırılacak veya okuma / yazma hataları gerçekleştiğinde işlemi kaydedebilir.

XT, belirli zamanlarda belirli eylemleri gerçekleştirme yeteneğine sahip bir uygulama sağlar. Örneğin, geçerli saati periyodik olarak ekrandaki belirli bir pencerede vb. Bu amaçlarla, özel bir XT mekanizması kullanılır - zamanlayıcı. Program tarafından belirtilen özel bir fonksiyonun belirli bir zaman aralığında bir arama sağlar.

XT, olay kuyruğu boş olduğunda herhangi bir işlemi gerçekleştirme yeteneğini sağlar. Bu, Olay Kuyucusu boşsa, XT'nin neden olduğu özel bir "çalışma" (iş) prosedürünün kaydedilmesiyle uygulanır. Bu tür fonksiyonlar yaygın olarak çok kısa bir süre için çeşitli eylemler ve hesaplamalar yapmak için kullanılır.

Her uygulama, gerekirse, olayların normal makbuzunu ve dağıtım döngüsünü (işleme) değiştirebilir - XT, Olay Kuyruğu ile çalışmak için bir dizi prosedür seti sağlar.

XT, sözde, hızlandırıcılar için (hızlandırıcı), olayların ve eylemlerin bağımlılıklarına girmenizi sağlayan bir mekanizmaya sahiptir. Hızlandırıcılar, eylemin (veya olay grubunun) bir widgette meydana geldiği farkı olan eylemlere benzerdir. Bir widgette meydana gelen bir aramayı, başka bir nesnenin geçerli olan eylemi başlatır.

XT, widget pencereleriyle çalışmanın birkaç yolunu destekler. Bu nedenle, XT tarafından sağlanan prosedürü kullanan program, pencereyi gösterebilir, bir veya başka bir çalışma modu ayarlayabilir ve gereksiz olduğunda pencereyi kapatabilir. Temel olarak, bu prosedürler bir açılır menü ve diyaloglar oluşturmak için kullanılır. Kural olarak, tüm widget kümeleri (örneğin, OSF / MOTIF), bir menü ve diyaloglar oluşturmak için çok daha uygun prosedürleri vardır.

XT'nin üzerindeki eklentiler şu anda, XT kesinlikle x tarafından bir konsorsiyumla standartlaştırılır, ancak daha yüksek seviye standartları yoktur. Popülerlik kullanıyoruz:

* OSF / MOTIF TOOLKIT;

* Athena widget seti;

* Açık görünüm içsel araç seti;

* Görüşmeler;

* TK / TCL.

En yaygın ve neredeyse standart olarak fiili, OSF / MOTIF olması muhtemeldir.

Athena.

Athena widget seti ("Çoğu Widget"), X conctorsium tarafından bir dizi standart teslimatta, X penceresinin sonucu olan Athena Projesi'nin uygulanmasında temel uygulamalar ve kamu hizmetleri üzerinde çalışma sırasında yaratılmıştır. sistem.

Athena başlangıçta bir "düz" bir programa sahipti - tüm düğmeler, menüler ve arayüzün diğer unsurları gölgelere sahip değildi. düzdü. Yaklaşık bir yıl önce, aw3d serbest bırakıldı - bu dezavantajın ortadan kalktığı bir seçenek Athena widget'ları.

Motif.

Açık Yazılım Foundation Motifi (OSF / MOTIF), bir pencere yöneticisi olan bir pencere yöneticisi olan bir pakettir, çeşitli yardımcı işlemler yapmak için bir kamu kuruluşunun yanı sıra, Araçkit İçselliği'ne göre nesne kütüphanesi.

Motif, tüm XT sınıflarını ve sonuç olarak, bu sınıfların kaynaklarını destekler, ancak nesnenin adını ve sınıfını kaydetmek için, XMN ve XMC öneki ile başlayan sabitler vardır. Bir kaynak türü yazmak için, XMR ön eki sabitleri kullanılır (XT'de XTT yerine XTT yerine) kullanılır.

Motif, XT tarafından sağlanan birçok nesne sınıfını genişletir. Özellikle, motif oldukça büyük bir sınıf setini destekler, bir menü, kaydırma çubuğu kaydırma), preslenmiş düğmeleri, düzenleme öğeleri vb. Yaratmanızı sağlar.

Ek olarak, Motif, Gadget adlı özel bir nesne sınıfı sunar - Rectobj sınıfının bir alt sınıfı olan Motif'te ayrı bir XMGADget sınıfı oluştururlar. Arabirim elemanları oluşturmak için de kullanılabilirler, ancak bir özelliğe sahipler - kendi pencereleri yoktur. Gadget'ı çekmek için ebeveynlerinin penceresini kullanın.

Her widget sınıfının, bunun için özel hem de özgü ek kaynaklardan oldukça geniş bir seçimine sahiptir. Nesnelerin bu önemli özelliklerini arka planın rengi, ekrandaki konum, çıktı metninin yazı tipi, vb.

Motif sınıflarından bazıları widget örnekleri oluşturmak için kullanılmaz (nesne odaklı programlama terminolojisindeki bu sınıflar özet olarak adlandırılır). Çeşitli widget türlerinin işleyişi için gerekli en sık görülen özellikleri ve yöntemleri içerir.

Motifin iki ana nesnesine sahiptir Subclass: Xmprimitive ve XMManager (XMGadget sınıfı daha önce gelir). Bu sınıfların her ikisi de soyut. Bunlardan ilki sınıf çekirdekten miras alınır ve diğer nesneleri konuşmayan nesnelerin sınıfları için temel olarak kullanılır. Örnekler tıklanabilir düğmeler, listeler, vb. XMManager sınıfı, kısıtlama sınıfından devralınır ve kızı nesnelerini sahip olabilecek ve yönetebilecek nesneler oluşturmak için kullanılır.

Nesnelerin sınıflandırılması

Xmgadget sınıfı. Geleneksel motif nesnelerinin (widget) sınıflarının örnekleri oluşturulurken ve ilgili pencereyi oluşturur. Program çok fazla widget kullanıyorsa, uygulamada önemli bir yavaşlamaya yol açar. Pencereler oluşturmaya zaman harcanır ve onlarla daha fazla çalışın. Ancak, ayrı bir pencerenin varlığının her nesne için tamamen isteğe bağlı olduğunu görmek kolaydır. Etiket etiketleri, düğmeler ve diğer birçok widget başarıyla üst nesnelerinin pencerelerini çizmek için kullanabilir. Hiçbir pencere yok - sunucuya bir kez daha tutmaya gerek yok, verimlilik artıyor ve ek bellek harcanmıyor.

Bu yaşam fikrini yürütmekte olan motif geliştiricileri, bir pencere ve pencere olmadan iki versiyon oluşturarak bazı nesne sınıflarını çoğalttı. Windows'u olmayan nesnelerin sürümleri, hiyerarşilerini soyut sınıftan - XMGADget'tan ve genelleştirildikleri adıyla aynıdır. Bu özel nesne sınıfı, yani, nesnelerin geometrisini kontrol etmek için temel mekanizmaların temel mekanizmalarını çevreleyen bir soyut sınıf olan RektOBJ sınıfındaki özelliklerini devralır.

Gadget'lerin kendi pencereleri olmadığı gerçeğine ek olarak, diğer kısıtlamalar onlara bindirilir. Öyleyse, onlar için olay işleyicileri (olay işleyicisi), yayın tablolarını belirlemek imkansızdır. Ayrıca, gadget'ın alçakgönüllülük nesnelerine sahip olamaz. Aksi takdirde, gadget'ın işlevselliği ve karşılık gelen widget aynıdır, bu nedenle bunları ayrı ayrı tarif etmeyeceğiz, yalnızca liste.

XMGADGET sınıfı Subclasses içerir:

* Xmarrowbuttongadget.

* Xmlabelgadget. \\ Hfil

* Xmpushbuttongadget.

* Xmtogglebuttongadget.

* Xmcascadebuttongadget.

* XMSPARATORGADGET.

Sınıf Xmprimitive. Bu soyut sınıf şunları içerir:

Xmarrowbutton. Bir sınıf örneği, yönlendirilmiş bir okun çizildiği bir düğmedir. Bir fare veya klavye ile düğmeye tıklayabilirsiniz. Kontrol elemanının sınırı bir gölgeye sahip olabilir, nesnenin olabileceği çeşitli durumları görüntülemek için kullanılır: ücretsiz ("preslenmiş") ve preslenir.

Xmlabel. Bu sınıfın temsilcileri (Etiketler), en basit motif nesnelerinden biridir. Etiketler bilgileri görüntülemek için tasarlanmıştır: metin veya çizimler (bit (piksel) kartları).

Xmpushbutton. Bu sınıfın temsilcileri, metin dizesinin çizilebileceği dikdörtgen basın düğmelerinin özü.

Örneğin, örneğin, imleç nesne üzerindeyken, sol fare düğmesine basılarak, widget sınırının rengi, presleme etkisini yaratır. Düğmeyi serbest bıraktıktan sonra sınırın rengi geri yüklenir. Böyle bir widget'a ve klavyekten tıklayabilirsiniz - bunun için giriş odak noktasını aktarmanız ve "Boşluk" tuşuna (genellikle) tıklayın.

Xmdrawnbutton. Bu sınıfın nesneleri, onlar içinde çizilmediği tek fark ile basılan düğmelere benzer, ancak keyfi bir çizim (piksel kartı).

XmtoggleButton. Bu sınıfın nesneleri, bir kural olarak, açıklayıcı metnin bulunduğu küçük bir düğmedir. Düğme iki durumda olabilir: Etkin ve KAPALI (yani bir anahtardır). Kontrol elemanının görünümünü değiştirerek işaretlenirler.

Bu sınıfın temsilcisi, "not edilen düğmeler" olarak adlandırılan "Noted düğmeleri" (kontrol düğmesi), Wiser'in "onay kutusu" ve "radyo düğmeleri" (radyo düğmesi) (radyo düğmesi) - çok konumlu anahtarlar oluşturulması için kullanılır. Mantıksal parametreleri belirtmek için ilk hizmet, yani iki değere sahip olmak. İkincisi, benzer bir amaç olarak işlev görür, ancak bu durumda birçok değer elbette, ikiden fazla unsur içerir. Bu durumda, xmtogglebutton nesnesinin grafik gösterimi şekli, "kene" veya "radyo" düğmesi olarak kullanılmasına bağlıdır.

Kural olarak, XmtoggleButton widget sınıfı, sırasıyla, belirtilen düğmelerin (onay kutusu) ve radyo düğmesi bloğunun (radyo kutusu) bloğunu denilen tasarımlarda birleştirilir. Bu bloklar, aşağıda açıklanan XMrowcolumn sınıf nesnelerinin modifikasyonlarını temsil eder.

Xmcascadebutton. Bu sınıfın nesneleri öngörülen düğmelerdir ve bir menü oluştururken kullanılır. Nesneye tıkladığınızda, aşağıdaki seviye alt menü görünür.

Xmlist. Bu sınıfın temsilcileri, en ilginç motif nesnelerinden bazılarıdır. Dizeler listesini görüntülemek ve kullanıcıya listenin öğeleriyle çeşitli eylemler üretme yeteneğini verecek şekilde tasarlanmıştır. Kullanıcı, vurgulanırken, bu nesnede sunulan bir veya daha fazla satırı seçebilir. Ek olarak, listenin giriş odağına sahipse, öğelerinden biri noktalı bir çerçeve ile vurgulanır. Bu çerçevenin liste imleci denir.

Xmscrollbar. Bu sınıfa kaydırma çubuğunun (kaydırma çubukları) nesneleri genellikle liste (xmlist), metin (XMText) ve diğerleri gibi diğer nesnelerle birlikte kullanılır. Kaydırma çubuğu, içinde sunulan bilgiler (liste, metin, çizim, vb.) Tam pencerede gösterilemiyorsa, alanın üzerinden geçmek için tasarlanmıştır. XMSCROLLBAR sınıfı nesneleri, kenarlar boyunca ok düğmeleri boyunca bir şerit (yatay veya dikey). Bunlardan herhangi birine basmak, belirtilen ok yönünde bir kaydırmaya yol açar. Kaydırma çubuğunun şeridinde, kaydırıcı bulunur (kaydırıcı) - renkle seçilen bir dikdörtgen. Eğer faresini ve "sürüklemeyi" "kanca" ederseniz, bu, bir kural olarak, bölgenin kaydırılmasına yol açar.

Xmsparator. Bu sınıfın nesneleri bölücülerdir - uygulama pencerelerinin görünümünü iyileştirmek için bir kural olarak kullanılır. Böyle bir widget, nesnelerin gruplarını ayıran dikey veya yatay bir şerit (çizgi). Örneğin, ayırıcılar menüde, bazı komutları diğerlerinden, diyaloglarda, bir grubun diğer elemanlardan vb. Ayrılmasını sağlamak için menüde kullanılabilir.

Xmtext. Bu sınıf nesneleri bir veya daha fazla metin satırı görüntülemenizi sağlar. Çizgiler pencereye yerleştirilmezse, görüntü sola ve yukarı doğru kaydırılabilir. Metin düzenlenebilir - düzenleme modu, nesne kaynaklarının ilgili kurulumuna değiştirilebilir.

Motif, bu sınıfın widget'ından çok çeşitli işlemler üretmenize izin veren bir dizi uygun prosedür sağlar: Verileri elde etmek ve değiştirmek için, verilerin seçilen bölümünü sistem tamponuna (panoya) ve diğerlerine kopyalayın.

Xmtextfield. Bu sınıfın nesneleri, metnin bir satırını görüntülemenizi ve düzenlemenizi sağlar.

XMManager sınıfı. Bu sınıf soyut, yani. Nesneleri oluşturmak için kullanılmaz. Diğer nesneleri yönetebilecek widget sınıfları oluşturmak için gereken temel parametreleri tanımlar. Bu kaynakların, giriş odağının widget'ını ve makbuz yönetimini doğru bir şekilde görüntülemek için gereklidir.

XMManager sınıfı şunları içerir:

Xmbulletinarboard. Bu sınıfın nesnelerinin, pencere keyfi bir şekilde yerleştirilen konulara sahip olabilir. Windows Widget pencerelerinin koordinatları, başlangıcı, XMBulletinarboard sınıfının penceresinin sol üst köşesinde bulunan koordinat sisteminde ölçülür.

Nesnenin boyutu değiştirildiğinde, örneğin fareyi kullanarak, eğimlerin başlangıç \u200b\u200bkonumu değişmez veya birbirine bağlanmaktan kaçınmak için hareket ederler. Widget penceresi küçülürse, katkıların parçaları görünmez hale gelebilir.

Xmbulletinarboard sınıfı şunları içerir:

Xmform. Bu sınıfın nesnelerinin belirgin bir özelliği (formlar), hem en form hem de çocuk widget arasında hem de kendileri arasında bağlantılar arasında bağlantı görevinden dolayı tutarsızlıklarının yerini kontrol etme yeteneğidir.

Her çocuk widget için, sol, sağ, alt veya üst kenara neler yapıldığını belirleyebilirsiniz. Öyleyse, artanın sol ve sağ kenarı formun sağ kenarına bağlanırsa, bunlardan bu kenara olan mesafe her zaman aynı kalacaktır. Formun boyutu azalırsa, Subgange sola doğru hareket eder ve boyut arttıksa, sonra sağa doğru. Bir alt eylemi diğerine bağlayabilirsiniz. Ardından, widget'ın eklendiği yükümlülüğün konumundaki değişiklik, ekteki nesnenin hareketine yol açacaktır, böylece aralarındaki mesafenin korunmasıdır.

Formun boyutundaki değişiklikle, artışları arasındaki tüm bağlantılar kaydedilir.

Xmselectionbox. Bu sınıfın nesneleri ("Seçim Blokları"), bir kompozit widget örneğini temsil eder ve kullanıcının istediğiniz öğeyi (XMTextField nesnesi), burada seçilen öğenin istediğiniz öğeyi seçebileceği bir kaydırma listesi içerir. Liste görüntülenir. Kullanıcı yapılan seçim düzenleyebilir. Liste ve metin alanı, ilgili XMLabel widget'ı kullanarak belirtilen açıklayıcı yazılara sahip olabilir. XMSelectionBox sınıfı nesnesi ayrıca üç tıklama (xmpushbutton nesneleri) içerir. Varsayılan olarak, "Tamam", "İptal" ve "Yardım" olarak uygulanırlar. Ve son olarak, başka bir unsur var - "Uygula" varsayılan adına sahip bir tuşa basın. Başlangıçta, bu konu oluşturulur, ancak yönetilen (yönetilen) widget listesini açmaz.

Seçim birimini kullanarak, kullanıcı listeden ihtiyacınız olan yükleyiciyi belirleyebilir veya bunu metin kutusuna girebilir. Ayarlar "OK" düğmesine basılarak onaylanır.

XMSelectionbox sınıfı şunları içerir:

Xmcommand. Bu sınıfın nesneleri, kullanıcıya, önceden girilen komutların listesini kullanarak istediğiniz komutun seçimini yapabilir veya komutu metin alanına girerek, özellikle widget'ta belirtilenler için.

Xmfileselection. Bu sınıfın nesneleri, farklı dizinlerin mevcut içeriğini görmenizi ve bir veya başka bir dosyayı seçmenize izin verir.

Bu sınıf nesneleri öğeleri içerir:

* 2 Metin Alanları: "Filtre" ve "Seçim" (XMNextField'in nesneleri);

* 2 Liste: "Dizinler" ve "Dosyalar" (Sınıf XMList nesneleri);

* 4 düğmelere basın: "Tamam", "Filtre", "İptal" ve "Yardım" (XmpushButton Sınıf Nesneleri);

"Filtre" metin alanı, maskeyi (şablonu) ayarlar, bu alanda belirtilen durumu karşılayan, şablon için uygun olan bazı alt kümelerin tamamını seçmek için - şablon için uygundur - bu alt kümedir ve "dosyalar" da gösterilir. liste. "Dizinler" listesi, geçerli dizinin alt dizinini görüntüler. "Seçim" metin kutusunda, Dosya listesinde seçilen dosya (adı) görüntülenir ve kullanıcı, aynı metin alanına manuel olarak ihtiyacınız olan dosyanın tam adını girebilir. Çeşitli eylemleri uygulamak için dört tıklanabilir düğme kullanılır:

Tamam - Belirtilen bir dosyanın seçimi;

Filtre - Geçerli maskeye göre "Dosyalar" metin alanında görüntülenen dosyaların listesini güncelleme;

İptal - Widget penceresini kapatır, dosya seçimi gerçekleşmez;

Yardım - Yardım için arayın.

XmmessageBox. Bu sınıf nesneleri, program sırasında ortaya çıkan kullanıcıya bir mesaj vermek için tasarlanmıştır. Bu widget kompozit. Metin dizesinin görüntülendiği bir alana (mesaj) ve mesaj türünü karakterize eden özel bir simge vardır. Ek olarak, nesnede üç düğme tıklaması vardır. Varsayılan olarak, yazılırlar: "Tamam", "İptal" ve "Yardım".

Xmdrawingarea. Bu sınıfın nesneleri, bilgi çizmek ve görüntülemek için program penceresini sağlar. Sınıfta, doğrudan grafik türetmek için kullanılabilecek parametre yoktur. Ancak bu sınıfta mevcut olan geri arama-proclocoles, widget penceresini yeniden çizme ve giriş odağını alma konusunda bildirim almanızı sağlar.

Xmframe. Bu sınıfın nesneleri, gerisi arasındaki bazı nesneleri vurgulamak için kullanılır, çerçevelerini daire içine alındı. Bu sınıfın widget özelliği, yalnızca bir alt kasa yapabilmeleri ve yönetebilmeleridir.

Xmpanedwindow. Bu sınıfın nesneleri heterojen widget'ı birleştirebilir. Denekler birbirinden ayrılır ve özel unsurlar arasında kanat olarak adlandırılır. Küçük bir kareye benziyor ve widget bağlı ortaklıklarının boyutunu değiştirmek için kullanılır. Bu nedenle, XMpanedWindow sınıfının nesnesi iki alt sektöre sahipse, aşağıdakileri yapabilirsiniz: "Yemek" fare ile kanaş ve istenen tarafa "sürükleyin" (aşağı yukarı veya sol sağ) - uzunlamasına Boyut ("işgal" bir çocuk nesnesinin "işgal edildiği yön boyunca boyutu (" öteki "nedeniyle (diğerinin büyüklüğü düşecektir), her iki katmanın enine boyutları kaydedilecektir. XMpanedWodow Sınıfı nesnesinin "enine" boyutu, artışlarının benzer boyutu ile belirlenir.

Xmrowcolumn. Bu sınıfın nesneleri heterojen widget'ı birleştirebilir. Denekler belirli bir düzende - bir matris olarak bulunur. Xmrowcolumn widget sınıfı, aşağıdaki nesneleri oluşturmanın temelini oluşturur:

onay kutusu - "Blok işaretli düğmeler" (yani, xmtogglebutton sınıfı nesneleri veya xmtogglebuttongadget sınıfı); "Blok" da mevcut olan düğmeler arasında aynı anda seçilebilir ("dahil") birkaç;

radyo kutusu - "radyo düğmesi bloğu" (yani XmtoggleButton veya XmtoggleButtongadget nesneleri); "Blok" da mevcut olan düğmeler arasında aynı anda seçilebilir ("etkin") sadece bir tane;

pulldown menüsü - "Çalışan menü" - üst düzey menüde (Menü Çubuğu) bir düğmeyi seçtikten sonra görünen bir alt menü penceresi; Menü öğeleri dikey olarak yerleştirilir;

seçenek Menüsü - Birleşik bir menüye sahip düğme; Düğmeye tıkladığınızda, menü penceresi bir parametre değerinin seçildiğinden kaynaklanır; Menü öğeleri dikey olarak yerleştirilir;

popup Menüsü - genellikle üçüncü fare düğmesine tıklayarak çağrılan "Pop-up menüsü"; Menü penceresi, imlecinin olduğu yerde görünür; Menü öğeleri dikey olarak yerleştirilir;

farklı alt menü (Pulldown Menu) çağırmak için kullanılan bir dizi düğme (xmcascadebutton veya xmcascadettongadget sınıf nesneleri veya xmcascadettongadget sınıfı nesneleri veya xmcascadettongadget) içeren üst düzey menü; Menü öğeleri yatay olarak bulunur.

Xmscale. Bu sınıfın amacı, kullanıcının nesneyle ilişkilendirilen parametrenin değerini belirtilen aralıktaki değerini seçebileceği bir kilitleme kaydırıcısı (kaydırıcı) içeren dikdörtgen bir alandır.

Xmscrolledwindow. Bu sınıf nesnesi, bazı bilgileri çıktı ve görüntüleme yeteneği sağlar (metin, çizim, liste). Bu tür bir widget, kural olarak, verilerin görüntülemek için yerleştirildiği bir varlık (bu, XMText sınıfının, XmdrawingArea, vb. Bir nesnesi olabilir) daha uygun veri görüntüleme için yatay ve dikey kaydırma ahırları kullanılabilir.

Bu sınıf bir alt sınıf içerir

XMMainwindow. Bu sınıfın nesneleri, aşağıdaki parçalardan bir kural olarak, bir kural olarak oluşan ayrı bir arayüz bileşenidir:

* Üst düzey menü,

* Komutlar penceresi,

* "Çalışma alanı,

* Pencere mesajları,

* Ve iki kaydırma çubuğu (yatay ve dikey).

Denekler ayırıcılarla ayrılabilir.

XMMenushell ve XMDialogshell sınıfları. Motif, çeşitli menüler oluşturmak için bir XMMenushell nesne sınıfı sunar. Bu sınıf, geçersizlik sınıfından (XT'den) miras alınır.

XT'yi tarif ederken de belirtildiği gibi, TransientShell sınıfı, bir yandan, doğrudan Windows Manager ile doğrudan iletişime geçen program nesneleri oluşturmak için kullanılır ve diğer yandan, onları geleneksel üst düzey pencerelerden ayıran özelliklere sahiptir. Bu özelliklerin ana, geçici sınıfın widget'unun en aza indirilemeyeceğidir. Ancak, bir ebeveyn piktograma dönüşürse ekrandan kaldırılırlar. Bu tür bir widget genellikle yardımcı program pencereleri oluşturmak için kullanılır.

Motif, geçici sınıfın belirtilen özelliklerini kullanır ve bunları türetilmiş XMDialogshell sınıfında geliştirir. İkincisi, bir kabuk diyalog nesnesi olarak hizmet eder.

Motifteki iletişim kutusunun yapısı aşağıdaki gibi olabilir:

XMDialogshell sınıfının bir amacı

XMManager Subclass nesnesi, örneğin, xmbulletinleme tahtası veya XMForm

Çeşitli kontrol elemanları: Düğmeler, metin giriş alanları vb.

Kütüphanenin tarif edilen tasarımın oluşturulmasını kolaylaştıran bir dizi prosedüre sahiptir.

Diyaloglar

Belirtildiği gibi, bir sonraki Motif'te iletişim kutusunun tasarımı: Birincisi XMDialogshell sınıfının nesnesi, XMManager sınıfının alt sınıflarından birinin widget'ının açıldığı bu nesne, çeşitli nesneleri barındırmak için kullanılır. .

Kütüphane, diyaloglar oluşturmak için özel prosedürler sağlar. XMDialogshell Sınıfı nesnesi ile ilgili bir bağlı ortaklık olan widget türünde farklılık gösterirler.

Metin çıkışı

Kütüphane, metin bilgilerini görüntülemek için kullanılan oldukça büyük miktarda genişliğe sahiptir. Bu, Subclasses, XMText, vb. İle XMLabel, satır çizerken kullanılabilecek olası yazı tiplerini belirtmek için, XMNFontList kaynağı kullanılır. Bir tür XMFontlist'e sahiptir. Değeri, "Yazı Tipi" / "Yazı Tipi Tag" dizidir.

Etiketler (etiketler), kullanıcı tarafından belirtilen belirli fontlardan bağımsız programları yapmayı amaçlar. Bu, aşağıdaki gibi yapılır: Uygulama, metin dizeleri ile çalışan tüm fonksiyonlarda, yazı tipleri yoktur, ancak etiketleri yoktur. Görev derlendiğinde ve başladığında, Etiketler ve belirli yazı tipleri arasındaki yazışma belirlenir. İkincisi ve çizim için kullanılır.

Motif, sadece tek font tarafından yapılan metin dizeleri ile çalışmak için değil, aynı zamanda "kompozit çizgiler" olarak bu tür nesnelerle çalışmanıza olanak sağlar. - yani. Birçok yazı tipi kullanan metin satırları. Bu tür satırları oluşturmak, onlarla çalışmak ve onları geleneksel, "monomiftasyon", dizeleri dönüştürmek için bir dizi araç vardır.

Görüntülerle çalışmak

Motifin kendisi görüntülerle çalışır, bunları Ximage yapısı kullanılarak ayarlanan basit bitmap (bitmap) temsil eden bir iç formatta sunulur.

Kontrol odak girişi

Motif, iki giriş odak modelini destekler. İlk örtük olan (işaretçi): Fare imlecini hareket ettiren bu widget'a odak verilir. İkinci model açıktır (açık): FOUCH'u iletmek için Fare imlecini Widget penceresine koymanız ve sol fare düğmesine tıklayın. Widget veya gadget giriş odağını aldığında, sınırları vurgulanır.

Bu iletim modellerine ek olarak ve giriş odağının alınması, girişin odağının bir widget'tan diğerine aktarılması için başka bir mekanizma vardır. Nesneler gruplara birleştirilebilir - bu, ilgili kaynakların gerekli değerlerine ayarlanabilir ve egzoz sisteminde kaldırılabilir. İkinci durumda, Motif dahili kuralları kullanarak widget'ı otomatik olarak bağlar. Örneğin, XMMessageBox sınıfı nesnesi üç grup içeriyor: bir - "Ana" iletişim nesnesi (XMForm sınıfı), ikincisi, kullanıcıya mesajı sunan "Etiket" ise, üçüncüsü basın düğmeleridir.

Giriş noktası, hem bir nesnenin (grupta) hem gruptan gruba iletilir.

Grup içindeki odağın içindeki aktarımı, ok tuşları kullanılarak ve gruptan gruba - sekme tuşunu kullanarak gerçekleştirilir (bu nedenle, grupların kendileri sekmeler denir). Odak grubunu iletirken, giriş noktası bir odak alabilecek ilk nesneye iletilir (uygun kaynak değerini takarak netleme almak için nesnenin yasaklanabilir). Grup içindeki girişin odağının aktarılması prosedürü, widget'ın oluşturulduğu sırayla çakışıyor. Aynı zamanda, genellikle, anahtar kombinasyonu odağı ters yönde hareket ettirir.

Motif ayrıca giriş odağını kontrol edebileceğiniz bir dizi prosedür sağlar.

Lesstif son zamanlarda tamamen uyumlu ücretsiz analog motif çıktı. Bu lesstif denir. Kaynakta serbestçe elde edilebilir ve internetteki çeşitli platformlar için derlenir.

TK / TCL.

TCL - Oku: - Şifreleme: "Aracı Komutu Dili" (Enstrümantal Komut Dili). İki bölümden oluşur: aynı dil ve kütüphanenin kendisi.

TCL dili basit bir sözdizimi var, kolayca programlama. Orijinal TCL tipinde bir tercümandır. Yetenekli bir programcı sağlayan, sadece son uygulamaları değil, aynı zamanda TCL dilinin kendi genişlemesini geliştiren, kendi tarzınızı oluşturan ve destekleyen güçlü bir araç sağlayan fonksiyonlar veya programlar oluşturmanıza olanak sağlar.

TCL kütüphanesi, TCL tercümanlarını uygulama programlarında kullanabilme özelliğini sağlar, bu da TCL komutu dil programlarında yazılı komut dosyalarının sağlandığı anlamına gelir. Kütüphane bir TCL sözcük analizörü içerir, dahili TCL komutlarını uygulayan fonksiyonlar, TCL komutlarına kullanıcı alt yordamları (Özellik Aramaları) eklemenizi sağlar. Bu düzen C için ve C ++ için mümkündür.

TK, X pencere ortamında grafik kullanıcı arayüzlerini geliştirmek için bir motif -Capable Toolkit (Toolkit). C ve C ++ ile standart arayüze ek olarak, TCL komutunu tercüman ortamından TK araçlarını kullanma yeteneğini sağlayan TCL ile bir arayüz içerir. Bu, C ve C ++ üzerindeki standart programlamanın yanı sıra, uygulamanın arayüz parçaları TCL dilinde komut dosyaları olarak uygulanabilir ve bu arayüz parçaları (iletişim kutuları, ekran görüntüleri çizimi, vb.) İşlem sırasında dinamik olarak düzenlenebilir. TCL komutlarını kullanarak son programı kullanarak nihai programın.

Pencere Çarşamba "Dilek", yalnızca TCL dillerini kullanarak grafik kullanıcı arayüzleriyle uygulamalar oluşturmanıza olanak sağlar.

Benzer belgeler

    Programlama Sistemleri ve Grafik Yetenekleri. Multimedya kursunun geliştirilmesi "Temel okul temasının" programlama dilinin grafik özellikleri "(temel ve pascal programlama dilleri örneğinde) katkıda bulunan bir multimedya kursunun gelişimi.

    tez, 12/29/2010

    Grafik ekran bileşenleri, sistem nesneleri ve fonksiyonları. Cihazla kullanıcı etkileşimi sistemi. Kişisel bilgisayarların grafik kullanıcı arayüzleri, sınıflandırmaları. Pencere Sistemi X Pencere Sistemi.

    sunum, eklenen 22.05.2012

    Programlama ve basit grafik özellikleri. Sunum için ana yapılar ve argümanlarla iki yapıcı. Yeni olanın noktasının ve başlatılmasının daha fazla koordinatları. Dikdörtgenin sol üst köşesinin koordinatlarında saklayın ve değiştirin.

    laboratuar çalışmaları, 01.12.2011 Eklendi

    Vektör bilgisayar grafikleri. Grafik ilkelleri. Pascal Programlama Dili Özellikleri. Paskal programlama dilinde grafik öğrenme için metodik öneriler. Fonksiyonların grafikleri oluşturma.

    kurs çalışması, 13.06.2007 eklendi

    VisualC ++ (6.0, .NET) kullanarak bir Windows işletim sisteminin geliştirilmesi. Cihazın yazılım modellemesinin temellerini göz önüne alındığında (elektrikli su ısıtıcısı). Cihazın sınıfları oluşturma kuralları ve grafiksel arayüzü.

    kurs çalışması, 03.06.2014 eklendi

    Bilgisayar grafikleri. Bilgisayardaki grafik bilgisini temsil eder. Grafik formatları. Grafik editörü. Vektör grafikleri. Corel çizgisi. Programın özellikleri, arayüz. Teknolojik yetenekleri ve CorelDraw programının kullanımı.

    kurs çalışması, 19.05.2007 Eklendi

    Modern görevleri çözmede dağıtılmış bilgisayar sistemlerinin rolü. Paralel programlar geliştirmek için DVM aracı sistemi. Grafiksel arayüzün resmi bir modelini oluşturma araçları. DVM sisteminin grafik arayüzü için gereksinimler.

    dersin işi, eklendi 15.10.2010

    Delphi 7 ortamını ve ana grafik özelliklerini kullanarak programlamanın özü. Özerk olarak derlenmiş yazılım modülünün yapısı ve prensipleri. Grafik prosedürleriyle işin temel teknikleri, bir yay, daire ve elips oluşturun.

    kurs çalışması, eklendi 12/16/2011

    Makine grafiklerinin kapsamı. Bilgisayar grafik türleri. Renk çözünürlüğü ve renk modelleri. Grafik bilgileri oluşturmak, görüntülemek ve işlemek için yazılım. Metin işlemcilerinin grafik özellikleri, grafik editörler.

    sınav, 07.06.2010 eklendi

    Grafik kullanıcı arayüzlerinin evrimi. Cihaz x pencere ve pencere yöneticileri. Açıklama Masaüstü ve KDE ve GNOME uygulamaları. Windows sistemdeki arayüz organizasyonunun temel prensiplerine genel bakış, uygulamalı programlarının paketinin bir açıklaması.

Grafiksel bir kullanıcı arayüzü oluşturma, grafik öğeleri yerleştirmek istediğiniz sürecinde, uygulamaların genel yapısını ve uygulamasını seçmek, programcıyı sanatçı tarafından belirli bir ölçüde olmaya teşvik eder. Sunumlar oluştururken yardımcı olabilecek standart kurallar, öğelerin yerleştirilmesi ve yapının organizasyonu yoktur. Başarılı bir grafiksel kullanıcı arayüzü, bir sanat eseri olarak kabul edilir. Arayüzlerin oluşturulmasından dolayı bilim değil, ancak sanat, bu alanda, takip edilmesi gereken sağlam bir kural yoktur. Uygulamanın, kullanıcıların ve bağlamın karakterinin çok fazla parametresi belirlenir.

Ancak, arayüz tasarımını kolaylaştırmak için geliştiricilere uyacak bir dizi pratik öneriler var.

| Çeşitli menüleri iletmek için karmaşık yapılardan (ahşap tipi) kaçının. Bir Screup menüsünde, her biri altıdan fazla seçenek içermeyen altıdan fazla menü içermemek en iyisidir.

| Nesnelerin tutarlı bir değeri olmalıdır. Örneğin, tüm simgeleri etkinleştirmek için, fare ile çift tıklayarak kullanın. Bazı modern arayüzler bu öneriyi karşılamıyor ve yalnızca kullanıcıdan ayrıldıktan sonra harekete geçmeye başlayan piktogramlar içeriyor

onlara nesneye. Kaydırma cetvelinde yalnızca kaydırmak için hizmet etmelidir ve hazır kütüphane piktogramları kullanılıyorsa, dikkatlice kontrol etmek ve örneğin, yazıcı simgesinin her zaman yazdırmak için kullanıldığından emin olun.

| Tüm piktogramları etkinleştirdiğinizde, yukarıda belirtildiği gibi, çift tıklamanız gerekir. Ve farenin tek bir tıklamasıyla etkinleştirilen nesnelerin simgeleri için benzer bir sonuç elde etmek için, çift tıklama programlaması önerilir. Kontrol paneli menüsü gibi birçok seçenek, piktogramlara benziyor, ancak tek bir tıklamayla etkinleştirilen nesnelerdir. Bu tür nesnelerle çalışırken kullanıcıların olası davranışlarını (yani, farelerle birlikte çift tıkladığını varsayalım) ve istenen sonucu elde etmelerine yardımcı olmalısınız.

| Arabirim menüsü, sistemin geçerli durumunu yansıtmalıdır. Kullanıcının grafik arayüzlerinin çoğunun rehberli olduğu temel ilkelerden biri, kullanıcı işlemlerinden bağımsız olarak, tüm arabirim araçlarına erişim sağlamaktır. Alt kural basit uygulamalarla iyi kabul eder, ancak daha karmaşık için daha az faydalıdır.

| Çeşitli menüler için ortak unsurlar tek bir yere yerleştirilmelidir. Uygulama yok, Tamam ve İptal düğmeleri her zaman birbirlerine göre yalnız bir şekilde yerleştirilmeli ve farklı iletişim kutularında aynı yeri işgal etmelidir.

| Kullanıcıların görüşünü karşılamıyorsa, menü öğelerinde tutarlılığa dayanmayın. Örneğin, kullanıcılar, aynı cihazda bulunan bir klasörden diğerine çekilen dosyanın, dosyanın dosyayı ikinci klasöre taşımasına neden olduğunu düşünüyor.

Ayrıca, dosyanın başka bir cihaza çekilmesinin orijinalin bir kopyasını oluşturduğuna da inanıyorlar. Bundan, bağlanma işlevinin uygulanmasının tutarsız olacağı, yani Farklı durumlarda çeşitli. Ancak, bu, hesaba katmanın ihtiyaç duyduğu kullanıcıların dilekleridir. Tutarlılık arzusu sadece bir öneri değil, zor bir kural değildir.

Grafik kullanıcı arayüzlerinin ergonomik gereklilikleri, "multimedya" (multimedya) (multimedya) geliştirme ile yeterince yetersiz olmadığı ortaya çıktı ve bilgisayar grafikleri ve metin, konuşma ve yüksek kaliteli ses ile animasyonlu, sabit görüntülerle çalışma ve video hareketli video sağlayan etkileşimli sistemler. Ergonomik çalışmalar ve bu sistemlerin gelişimi karmaşıktır ve heyecan verici bir işin profesyonel bir tutumunda.

Uygulama geliştirme projelerinin çoğu yöneticisi, Notlar B.Tognazzini, arayüzü başlatmak için projenin tamamlanmasını bekliyor. Bina çerçevesinin yapımından sonra mimar davet edildiğinde evin yapımına hatırlatır. Tüm geliştiriciler, bir arayüz oluşturma sürecinin organizasyonuna farklı bir yaklaşımdır. Ancak, tüm geliştiriciler tarafından takip edilmesi gereken genel anlar var:

1) Yazılım ürününün tüm parçalardaki amacını, kullanıcılarla yakın iletişime geçerek, işlerinin ve bireysel alışkanlıklarının tarzını daha iyi anlamak için genellikle iş günüdür;

2) Bir arayüz oluşturmak tek bir hizmet değildir, ancak üç alan temsilcileridir: kullanıcıların arayüzün temel unsurları hakkında görüşlerini ortaya koyan ve bunları açıklayan bir uzman; Arabirim Geliştirici ve Grafik Yaratıcısı;

3) Deneyimli bir çalışan, bir arayüz uzmanının ve çalışma grubu ile kullanıcılar arasında bir aracının farkında olmamalıdır;

4) Kontrol, bir düzen oluşturma ve tekrar kontrol edin, çünkü bir yazılım ürünü tamamen anlaşılsa bile, tüm kullanıcı ihtiyaçlarını sağlamak mümkün değildir.

Geliştiriciler programın ilkeleri hakkında çok fazla şey bildikleri için, uygulamanın geliştirilmesine katılmayan insanlar tarafından arayüzler, insanlar tarafından yaratılmalıdır, çünkü geliştiriciler programın ilkeleri hakkında çok fazla bilgi sahibi olur ve bu sadece arayüzün oluşturulmasıyla müdahale eder. Grafiksel kullanıcı arayüzünün avantajları genellikle kabul edilir ve belki
Ciddi bir analiz meselesi olmadı. Geleneksel program geliştirici kuralı, öğrenmenin sadeliğinin sıklıkta kullanıcının daha sonra programın tüm özelliklerini tamamen uygulamasını önler, grafiksel arayüzle ilgilidir. Bir örnek, bir Amerikan sigorta şirketi için bir projenin gelişmesidir, bu da Macintosh için bir sigorta başvurusu uygulayan, mükemmel bir arayüze sahip, öğrenmede çok kolaydır. Bununla birlikte, iki yıllık operasyondan sonra, son kullanıcılar bu uygulamanın çeşitli fonksiyonları tarafından çok ustalaştığını, kullanıcının grafiksel arayüzünün yalnızca onları yavaşlattığını. Grafik arayüzün seçimi, kullanıcının görevinin karakteri tarafından belirlenmelidir.

YADOBR 14 Ocak 2014 09:10

Grafiksel kullanıcı arayüzünün tasarımı

  • Arayüzler

Giriş

Modern dünya milyarlarca bilgi işlem cihazlarında. Onlar için daha fazla program. Ve arayüzünün her biri, kullanıcı ile motor kodu arasındaki etkileşimin "kolları" olan. Arayüz ne kadar iyi olursa, etkileşimin daha etkili olması şaşırtıcı değildir.

Ancak, tüm geliştiriciler ve hatta tasarımcılar, uygun ve anlaşılır bir grafiksel kullanıcı arayüzü oluşturmayı düşünmüyorlar.

Kendim için sorularla başladım: genel ilkeler, ne arayüz Öğeleri (EI) Ne tür bir tasarımın, doğru yerleştirildikleri ve nasıl davranmaları gerektiğine sahip olmalılar.
Aşağıda bu soruları cevaplamaya çalışacağım.

Genel İlkeler


Ne tür bir ei yaratacak?


EI'nin tasarımı ne olmalı?

Aslında, EI'nin tasarımı ayrı bir makalenin konusudur. Burada her şeyi dikkate almanız gerekir: renk, form, oranlardan, bilişsel psikolojiyle bitendir. Bununla birlikte, birkaç prensip hala not edilmelidir:

Ei ekranda nasıl konumlandırılır?


Ei nasıl davranmalı?


Gözaltında

Bu makale, arayüzün tasarım prensiplerinin en eksiksiz referans kitabını talep etmemektedir. Grafiksel kullanıcı arayüzü, bilim adamlarının ve yüzlerce kitap ve araştırma kitabının kafasını kaplayan psikoloji ile yakından iç içe geçmiştir. Böyle küçük bir formatta, konunun tüm eksiksizliğini ifade edemiyorum. Bununla birlikte, temel prensiplere uygunluk, bina arayüzlerinin kullanıcıya daha kolay, tasarım işleminin kendisini basitleştirmesine izin verecektir.
Dikkatiniz için teşekkürler.

Edebiyat

Jeff raskin, "Arayüz: bilgisayar sistemlerinin tasarımında yeni yol tarifleri"
Alan Cooper"Arayüzde. Etkileşim tasarımının temelleri "
Alan Cooper, "Hastaların elinde psişe"

Kullanıcı arayüzüne geleneksel bir grafik yaklaşımı, etkileşimin rejenerasyon ve ışık kalemiyle bir grafik ekranın kullanımına dayandığı Sutherland, Newman vb. Çalışmaları ile ilişkilidir. Grafik diyalogun daha da gelişmesi, uluslararası standartlar biçiminde düzenlemeye yol açan etkileşimli makine grafik sistemleri alanındaki ilerleme ile ilişkilidir.
GKS - İlk Uluslararası Grafik Standardı. İlk önce "iş istasyonları" ve mantıksal giriş aygıtları (klavye, seçim, bulucu, curiors, işaretçi, sıra girişi) kavramlarını kaydetti. Ne yazık ki, vektör çizim paradigmasının üstünlüğü sırasında tasarlandı. Dolayısıyla, iletişim kutusunun zayıflığı: Yeni cihazlar girme olasılığının olmaması veya ekrandaki cihazın görüntüsünü, ardından uygulama programından (grafik paket), düzenli olarak sembolik girişi kullanma ihtiyacına yol açar. bir diyalog. Diyaloğun Uygulanan Programın Putrogative'daki GKS'sinde uygulanması, ayrı tasarım olanakları kabul edilmez.
Grafiklerin ikinci yönü - Raster grafiğinin müteakip etkileşimli sistemlerin geliştirilmesi üzerinde son derece büyük bir etki sağladı. Modern iş istasyonlarındaki kullanıcı arayüzünün tüm ana özellikleri Xerox Parc Eserleri: Pencere Yönetimi

  • nesneleri temsil etmek için grafik karakterleri ("simgeler") kullanmak
  • doğrudan manipülasyon denilen etkileşim tarzı
  • ekrandaki konumlandırma cihazları olarak "farenin" popülaritesi
  • nesneye Yönelik Programlama Stili.
O zamandan beri, kullanıcı arayüzünü oluşturmak ve yönetmek için Araç Takımının sınıflandırma sistemi üç seviyede görüntülenir:
  1. pencere Kontrol Sistemleri (WMS - Pencere Yöneticisi Sistemi);
  2. Özel Araçlar;
    • normal (Macintosh, SunView ....)
    • nesneye Yönelik (SmallTalk-80, Andrew, Röportaj)
  3. kullanıcı Arabirimi Yönetim Sistemleri.
Aşağıdaki bölümler, bu seviyelerin her birinin kısa bir özellik, durum ve işlevsel açıklaması sağlayacaktır.

Pencere Yönetim Sistemleri (WMS)

Çok ışık teknolojisi, bir ekranla çalışırken mümkün olduğundan daha fazla bilgiye erişimi olan bir kullanıcıya erişimi sağlar. Windows, çeşitli bilgi kaynaklarına erişim sağlar. Kullanıcı, bilgileri birkaç kaynaktan birleştirebilir, farklı detaylardaki bilgileri araştırabilir. Çokrogram modunda, birden fazla paralel görevi yönetmek mümkündür. Her görevin giriş ve çıkışı farklı pencerelerde görüntülenir, kullanıcının her görev için ihtiyaca odaklanmasını sağlar.
Yönetim kaynağı pencereleri ile ilgili WMS, çalışma ortamı, destekler:

  • örtüşen pencereler (dikdörtgen ekran alanları);
  • çeşitli giriş aygıtları (dijital ve analog);
  • İmleçler;
  • yazı tipleri.
Operatörün ve uygulama programının arayüzü, pencerelerin kurulması / yıkımının komutlarını içerir, boyutlarında değişiklikler ve konumlar, yükseltme, pencerenin piktogram ve kurtarma için sıkıştırılması. Grafik bir çıktı kütüphanesi (yalnızca temel ilkeler) ve olay işleyicisi içerir. Böylece, kullanıcı arayüzünü uygulamak için bazı mekanizmalar vardır.
WMS, iki türü uygulamak mümkündür: aynı makinede çalışan temel sistem (çekirdek sistemi) ve istemci-sunucu modelinin temelinde uygulanan ağ odaklı.

Kullanıcı Arabirimi Oluşturma Araç Takımı


09 Temmuz 2003

Uygulamaları geliştirmek için çeşitli görsel araçların ortaya çıkmasıyla, programların grafiksel arayüzlerini yazmak, çocukların oyunu gibiydi. Fareyi dürtdüm - kalıp ortaya çıktı, ikinci kez sıkıştı - düğme çizildi. Bana öyle geliyor ki, çoğu zaman grafik ortamında başka bir programlama yöntemi hakkında düşünmüyor. Tabii ki, büyük projeler yazarken ilerlemeye karşı harcanmayacaklar, tüm bu aktivite çok uygun. Ancak konuşma bu konuda değil. Bazen saçma, ilkel uygulama MFC, VCL vb kullanılarak yazılmıştır. Bu tür programlar hafızayı termitler olarak çevirir ve cesur gövdeleri, gereksiz disk alanı ile birlikte. Kural olarak, MFC / VCL analogları "TARAFTI", SAF API'sinde yazılan programlardan yirmi kat daha fazla. Ve Visual Basic (Tanrı bu cümle için beni affedebilir) msvbvmxx.dll ile mi? Evet ve sistem kaynakları önemli ölçüde daha fazla tüketilir (birkaç kez). Kötü kullanıcılar, kendilerini birada reddeder, yeni bir demir satın almak için cihazları tahmin edin. Üzgün \u200b\u200bdeğil mi - fakir? Sadece bira programcıları içmek için değil mi? Kodlama API'sinde bir başka olumlu anı var, programcı işletim sistemine yaklaşıyor. Buna göre, bunu daha iyi anlar ve kontrol eder. Evet, ve sadece - bu çok heyecan verici bir meslek. Tekrar ediyorum, yukarıdakilerin hepsi tam olarak küçük, basit programlara uygulanır, büyük projelerde tamamen farklıdır.

Umarım ikna oldum. Git.

Minimum işlevselliğe sahip basit bir pencere arayüzü oluşturmayı düşüneceğiz. İki giriş alanı ve iki düğme ile basit bir pencere olacaktır. "Kopyala" düğmesine tıkladığınızda, ilk giriş alanından gelen metin ikincie kopyalanacaktır. "Kapat" düğmesine tıkladığınızda, program çalışmasını tamamlayacaktır. Gelecekte, diğer, daha karmaşık, uygulamaları yazmak için bir şablon görevi görebilir. Delphi kırgın olmayacak olmasa da, C / C ++ ile iletişim kuracağız. Genel prensip aynıdır, sadece sözdizimi farklılık gösterir. Sistem mesajları ve API işlevleriyle çalışmak için, başlık dosyalarını projenize bağlamanız gerekir; C / C ++, Windows.H'dir, Delphi'de bunlar Windows ve Mesaj modülleridir.

Windows'taki herhangi bir program üç ana bölümden oluşuyor: ana işlev, pencerenin gönderdiği tüm mesajları işleyen ana işlev, mesaj işleme döngüsü ve pencere işlevi.

Programımız Winmain () işlevinden yürütülmeye başlar. Bu ana fonksiyondur. Winmain () işlevi, genellikle aşağıdaki görevleri yerine getirir:

  • Pencere sınıfını belirtir. OOP sınıfı ile karıştırmayın.
  • Sistemdeki bu sınıfı kaydeder.
  • Ana uygulama penceresini ve diğer kontrolleri oluşturur.
  • Ekrandaki pencereyi görüntüler.
  • Mesaj işleme döngüsünü çalıştırır.
  • Bu şekilde ilan edilir: int apientry winmain (Hinstance hinstance, hinstance hprevinstance, lpstr lpcmdline, int ncmdshow) parametrelerle ilgileneceğiz:
    • hinstance, mevcut uygulama örneği tanımlayıcısıdır.
    • hPrevinstance, çalışırsa, önceki uygulama örneğinin tanımlayıcısıdır.
    • lPCMDline, başlarken programın ilettiği parametreleri içeren bir dize için bir işaretçidir.
    • nCMDSHOW - Sabit bir pencere göstermenin bir yolunu tanımlama. (Bkz. SW_ Sabitleri).

Delphi'de böyle bir resim görmeyeceğiz, bu geliştirme ortamında, ana işlev derleyici programcısından gizlenmiştir. Her ne kadar şüphesiz, son kodda bulunur. Pencere sınıfını kaydetmek için, WNDClass tipi yapı alanlarını (Delphi TWNDClass'ta) doldurmanız gerekir. Bunun için WCL değişkeni ilan edilir. wcl.hinstance \u003d hinstance; Geçerli uygulama örneğinin uygulanması, Hinstance değişkeni WinMain () işlevi tarafından başlatılır. Delphi örtük yolda başlatılır. wcl.lpszclassname \u003d szwinname; Sınıf adı. Daha önce oluşturduk ve başlattığımız SzwinName string değişkeni. wcl.lpfnwndproc \u003d windowfunc; Pencere fonksiyonunda işaretçi. wcl.style \u003d 0; Pencere stili belirten sabit. Bunu yapmak için, CS_ bayrakları kullanılır, sadece sıfırlamıyorum. Bir bit işlemi "veya" kullanarak bayrakların bir kombinasyonunu ayarlayabilirsiniz. Wcl.hicon \u003d loadicon (, idi_asterisk); Loadicon () işlevi tarafından geri döndürülen tanımlayıcı uygulama simgeleri. Standart simgeyi indirdim. IDI_ sabitlerini görün. wcl.hcursor \u003d loadcursor (, idc_arrow); LoadCursor () işlevi tarafından geri döndürülen uygulama imleci tanımlayıcısı. Standart oku indirdim. IDC_ sabitlerine bakınız. Wcl.lpszmenuname \u003d null; İşaretçi Bu pencere sınıfının menü kaynağı adını belirten bir dize. Menü yok, işaretçi yok. wcl.cbclsextra \u003d 0; Ayrılmış alan. Sıfır. wcl.cbwndextra \u003d 0; Ayrılmış alan. Sıfır. wcl.hbrbackground \u003d (hbrush) color_window; Pencerenin rengi. Color_Window Constant, HBrush türüne verilir (Delphi'ye getirmeniz gerekmez). Ayrıca, GetstockObject () işlevini kullanarak, fırça penceresinin veya arka plan deseni rengini ayarlayabilirsiniz. Şimdi, cesaretle, pencere sınıfını kaydedin.

RegisterClass (& WCL); WCL yapısına bir işaretçi, RegisterClass işlevi parametresi olarak iletilir.

Bir sonraki dizemizi oluştururuz.

Hmainwnd \u003d createwindow (szwinname, "API'teki basit bir pencere.", Ws_overlappedwindow ^ ws_thickframe ^ s_maximizeebox, cw_usedefault, cw_usedefault, 300, 170, hwnd_desktop, , hinstance, null);
  • İlk parametre, pencere sınıfının adıdır.
  • İkinci parametre başlık penceresidir.
  • Üçüncü parametre - Pencere stili. Standart WS_OverLappedWindow'dan, XOR işlemini kullanarak, pencereyi ölçeklendirme yeteneğini ve en üst düzeye çıkarma düğmesini kestirdim.
  • Dördüncü ve beşinci pencerenin sol, ekranın üst köşesinden konumudur. CW_USEDEFAULT var, sistemin değeri ile pencere konumunu otomatik olarak seçer.
  • Altıncı ve yedinci parametreler - sırasıyla pencerenin genişliği ve yüksekliği.
  • Sekizinci parametre sahibi penceresidir. Ana pencerede, sahibi masaüstü (0). Kontrol elemanlarında - ana pencere.
  • Dokuzuncu, menü tanımlayıcısına bir işaretçidir. Menü yok, işaretçi yok.
  • Onuncu parametre, geçerli uygulama örneği tanımlayıcısıdır.
  • Onbirinci - MDI arayüzüne sahip uygulamalar oluştururken kullanılır. İhtiyacımız yok.
İşlev, Hmainwnd değişkenine girilen oluşturulan pencerenin tanımlayıcısını döndürür.
Pencere tanımlayıcısı, pencere veya kontrol tarafından tanımlanan sistemde benzersiz bir sayıdır.

Daha sonra, gerekli kontrolleri yaratacağız. Tüm kontroller aynı pencerelerdir, sadece başka bir sınıf adı vardır. Kontrol elemanlarının sınıfları kaydedilmesine gerek yoktur, sistemde önceden belirlenmişlerdir. Düğme - Düğme sınıfı. Giriş alanı - Düzenle sınıfı. Yazıt STSTIC sınıfıdır. Standart kontrol elemanlarına uygun birçok sınıf var. Bize aşina olan CreateWindow () işlevini kullanarak kontrolleri oluşturun ve WELMILIAR CreateWindowex (). Createwindowex (), genişletilmiş bir stil içeren bir pencere oluşturmanıza olanak sağlar. Giriş alanları oluşturmak için kullanıyoruz. Bu özelliğe ilk parametre, bu en gelişmiş stili, CreateWindow () gibi kalan parametreleri ayarlayan bu özelliğe eklenir. Kontrol elemanları kızı pencerelerdir, sahipleri ana penceredir.

Kontrol oluşturma, işlev parametrelerinde, ana pencere tanımlayıcısını ve WS_Child pencere stilini belirtmelisiniz. Kontrollerin görünümü ve işlevselliği, bayraklar kullanılarak manipüle edilebilir: WS_, ES_, BS_, SS_, bit kullanımlarını "veya". Kontrol oluşturarak, ilgili değişkenleri CreateWindow () ve CreateWindowex () işlevlerini döndüren tanımlayıcıları tarafından başlatırız. Bu tanımlayıcıların kontrol elemanları ile daha fazla çalışmaya ihtiyacı olacaktır. Ekranlar, bizim tarafımızdan oluşturulur, ekrandaki pencere ve yeniden çizin.

GetMessage işlevi, bir sonraki mesajı uygulama mesajı kuyruğundan seçer ve pencereye gönderir.
  • İlk parametre, MSG tipinin bir yapısıdır (Delphi TMSG tipinde)
  • İkinci parametre, mesajın amaçlandığı bir pencere tanımlayıcısıdır. Null veya 0 ise, ardından tüm uygulama pencereleri.
  • Üçüncü ve dördüncü - alınan mesajlar aralığını ayarlamanıza izin verir. 0 ise, ardından tüm mesajlar pencereye verilir.
GetMessage - WM_QUIT mesajı göründüğünde false döndürür, bu durumda döngü serbest bırakılır ve uygulama sona erer. ÇevirMessage - Sanal anahtarları klavye mesajlarına çevirir. DispatchMessage - İşleme için Pencere Fonksiyon Mesajı gönderir.

Pencere özelliği, sistem mesajlarını işleyerek programın işlevselliğini sağlar. Pencere işlevi bir geri arama işlevidir, yani. Alınan, yeni mesaja cevaben işletim sistemi tarafından arandı. Pencere işlevi bu şekilde ilan edilir:

Lresult callback windowfunc (hwnd hmainwnd, uint imsg, wparam wparam, lparam lparam)

  • Hmainwnd ana pencere tanımlayıcısıdır.
  • iMSG - Mesaj numarası. WM_ sabitlerine bakın.
  • lparam ve wparam - mesaj parametreleri.

Mesaj göründüğünde, IMSG parametresini WM_ sabitlerinden biri ile karşılaştırabilir ve uygun program reaksiyonunu programlayabiliriz.

Örneğin: Sol fare düğmesine bastığınızda, fare işaretçisi istemci penceresinin üstünde olduğunda, WM_LBUTTTONDOWN etkinliği gerçekleşir. Bir pencere işlevi denir, WM_LButttondown Constant'ın değeri IMSG parametresinde girilir, durumunu kontrol edebilir ve programın ihtiyacınız olanı da programlayabiliriz.

Pencere işlevinin içinde yukarıda açıklanan görevi gerçekleştiren bir seçim operatörüdür. Seçim açıklamasında, DefwindowProc (HMAINWND, IMSG, WPARAM, LPARAM) işlevi tarafından uygulanan varsayılan işleyici düzenlenmelidir;

Bu yapılmazsa, programımız ölecek ve canlanmaz. Birçok mesaj, sistemin kendisi tarafından işlenir: örneğin: pencerenin boyutunu değiştirin, pencereyi katlama / dağıtma, sistem menüsünü vb. Bunun için ve defwindowproc () 'e hizmet vermektedir.

Pencere kontrolleriyle çalışırken, WM_COMMAND mesajı sahibi pencereye gönderilirken, Lparam bir kontrol tanımlayıcısı içeriyorsa ve WPARAM parametresinin eski baytı, kontrol öğesinde adı verilen bir olay tanımlayıcısıdır. Örneğin: Düğmeye tıkladığınızda - BN_CLICKED. BN_, WM_ sabitlerini gör. Programı kapatın PostQuitMessage (0) işlevini kullanabiliriz. Bu özellik WM_QUIT pencere penceresini gönderir.

Delphi'deki bu tür programları nasıl yazacağınız hakkında birkaç kelime. Yeni bir proje oluşturun, Proje Yöneticisi'ni çalıştırın, birim1'i şekille birlikte silin. CTRL + F12'yi tıklatın ve proje dosyasını açın. Formlar modülünü USESS'den sileriz, pencereleri ve mesajları var. Başlangıç \u200b\u200bve son arasındaki her şeyi sileriz. Hazırlık hazır. Sürebilirsin. Her zaman el altında olması gereken referans olmadan Saf API'de programlar yazmak imkansızdır. KENDİNİZ GATES YOK - HER ŞEYİ HİÇBİR ŞEYİ. Önermek:

  • her şeyden önce - MSDN;
  • delphi referans sistemi (mstools.hlp dosyası);
  • sitede http://www.soobcha.ru/rushelp, Win32 API için bir Rus sertifikası var.
Bu kadar.
İyi şanslar.

Bobachenko maxim İndir: Createwnd.zip. (2.6 k)
Arşiv, Windows.CPP ve Windows.DPR dosyalarını içerir