Form Öncelik Problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
bydamien
Üye
Mesajlar: 14
Kayıt: 15 Kas 2005 10:10

Form Öncelik Problemi

Mesaj gönderen bydamien »

Değerli Arkadaşlar..

Forum'da arattırdım ancak net birşey bulamadığım için kendim topic açmaya karar verdim. Problem şu Flight Simulator oyunu'nu duymuşsunuzdur, ben bu oyuna add on bir software geliştirdim ancak bir konuda feci bir şekilde takılmış bulunmaktayım. Normalde oyun 2 farklı mod'da çalışıyor birisi PENCERE MODU (border ve form caption) diğeri ise FULLSCREEN (border ve form caption yok).

Benim projem StayOnTop açılıyor buraya kadar herşey doğru. Pencere modun'da hiç bir problem yok aynı anda gözükebiliyor ama oyunu fullscreen mod'a çevirdiğimde benim formum ekrandan kayboluyor farklı bir add on bunu yapabiliyor her iki mod'da ekran da kalabiliyor.

Arkadaşlar yardım ederseniz sevinirim
Herkese şimdiden çok teşekkür ederim

Saygılarımla
Burak M.
Bilgi Paylaşmak İçin Vardır.
iqprog

Mesaj gönderen iqprog »

ana formuna bir timer yok intervali 1000 ya da 500 olabilir. bunun ontimer olayına application.bringtofront yaz bi dene bakalım.
bydamien
Üye
Mesajlar: 14
Kayıt: 15 Kas 2005 10:10

Mesaj gönderen bydamien »

denedim olmadı .. :cry: nasıl olacak bu iş arkadaşlar yardımmm


Saygılarımla
Burak M.
Bilgi Paylaşmak İçin Vardır.
Kullanıcı avatarı
Opt2000
Üye
Mesajlar: 216
Kayıt: 09 Tem 2003 10:04

Mesaj gönderen Opt2000 »

Selam,

Büyük ihtimalle Flight Simulator oyunu DirecX (veya OpenGL, ikisinde de aynı durum sözkonusu) kullanıyordur. DiretX'de Full Screen bir pencerenin üstüne bir şeyler basabilmeniz için, yine DirecX kullanmanız gerekiyor. Bu DiretX'in ekran kartının belleğine direkt eriştiği için olan bir şey. Pencere modunda iken hala Windows'un GDI fonksiyonları kullanılır, sadece DirectX alanı olarak tanımlanan alan için özel bir tanımlama yapılır. Bu da pencere modunda iken performansın düşük olmasına sebep olur. MS bu yüzden pencere modunu tavsiye etmez.

Sonuç olarak bu add-onu'u DirectX veya OpenGL (Flight Simulator hangisini kullanıyorsa artık) ile geliştirmen gerekiyor.

Kolay gelsin,
Bahadır Alkaç
bydamien
Üye
Mesajlar: 14
Kayıt: 15 Kas 2005 10:10

Mesaj gönderen bydamien »

Selamlar.

diğer add-on'nun yazarına mail attım adam bana cevap gönderdi

Make sure your window is a subclass of the FS window, it should work then.

fsin windowun'a nasıl subclass yapılacak bu anlamadım ben subclass hakkında bilgisi olan varmı ?

Saygılarımla
Burak M.
Bilgi Paylaşmak İçin Vardır.
bydamien
Üye
Mesajlar: 14
Kayıt: 15 Kas 2005 10:10

Mesaj gönderen bydamien »

Arkadaşlar SubClass hakkında bilgisi olan varmı varsa bana yardımcı olursa sevinirim



Saygılarımla
Burak M.
Bilgi Paylaşmak İçin Vardır.
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Sanırım şöyle demek istemiş.

Senin açtığın pencerenin PARENT değeri, FS'nin açık olduğu handle ile aynı olmalı demek istiyor.

Ancak @opt2000 arkadaşın da dediği gibi FS DirectX ile destekleniyordur. Dolayısıyla bu özel alan içerisine standart windows bileşeni yerleştirilemez (sanırım). Bu nedenle aktif olan DirectX alanına yine DirectX komutlarıya bir pencere açman ve bu pencereninde PARENT değeri oyundaki DirectX alanının HANDLE'ı olmalıdır.
bydamien
Üye
Mesajlar: 14
Kayıt: 15 Kas 2005 10:10

Mesaj gönderen bydamien »

arkadaşlar anlamadığım şu pencere modunda oyun OpenGL olmuyormu.. çok kastırdı bu iş yahu

:)

Sevgi ve Saygılarımla
Burak M.
Bilgi Paylaşmak İçin Vardır.
Kullanıcı avatarı
Opt2000
Üye
Mesajlar: 216
Kayıt: 09 Tem 2003 10:04

Mesaj gönderen Opt2000 »

Selam,

Windowed modunda çalışan OpenGL veya DirectX penceresi, biraz daha farklı çalışır. Diğer pencerelerle uyumlu olabilmesi için, yarı GDI, yarı dx veya OpenGL arabirimi kullanır. Bu yüzden, örneğin bir formun içine dx alanı açabilir, standart Windows bileşenleri ekleyebilirsin, ama performans asla gerçek dx seviyesinde olmaz. Aynı durum OpenGL için de geçerlidir.
Make sure your window is a subclass of the FS window, it should work then.
Flight Simulator'e nasıl add-on yazıldığını bilmeden bu cümleden bir şey anlamak mümkün değil. Eğer Flight Simulator'ün bir SDK'sı varsa, ki google'den hızlıca baktığımda var görünüyor, o zaman büyük ihtimalle SDK içinde bir Window class'ı verilmiştir ve senin kendi pencereni SDK'da verilmiş Window classından türetmen gerekiyor. Bir ihtimal de, Flight Simulator sana base bir class verir (abstract bir class) ve sen ondan kendi class'ını türetirsin, daha sonra da render listesine eklersin. Ama bu yazdıklarımın hepsi çok havada kalıyor, çünkü SDK hakkında en ufak bir bilgim bile yok.

Flight Simulator'ün dokümanlarında bununla ilgili bilgiler olması gerekiyor, aksi takdirde add-on yazımı aslında illegal bir işlem olur. Sorunun cevabı büyük ihtimalle SDK dokümanlarında vardır. Bence burada vakit kaybetmektense, SDK dokümanlarını baştan sona dikkatlice (ve gerekirse tekrar tekrar) okumanda fayda var.

Kolay gelsin,
Bahadır Alkaç
bydamien
Üye
Mesajlar: 14
Kayıt: 15 Kas 2005 10:10

Mesaj gönderen bydamien »

Bilgi ve İlgi Çok Teşekkür Ederim

Sevgiler.
Burak M.
Bilgi Paylaşmak İçin Vardır.
Cevapla